Spark - 将文件写入附加文件夹

时间:2016-08-24 13:31:52

标签: apache-spark amazon-s3 fault-tolerance

在我的组织中,我们有应用程序来获取事件并将它们存储在按日分区的s3上。某些事件处于脱机状态,这意味着在编写时我们会将文件附加到正确的文件夹中(根据离线事件的日期)。

我们通过从队列中读取文件夹路径(SQS)然后从我们获得的文件夹中读取数据来获取事件。每个文件夹将包含来自几个不同事件日期的数据

问题是如果应用程序在其中一个阶段完成后由于某种原因失败了,我不知道已经写入输出文件夹的内容并且我无法将其全部删除,因为那里已有其他数据。

我们的解决方案目前正在写入HDFS,在应用程序完成后,我们有一个脚本将文件复制到s3(使用s3-Dist-cp)。 但这似乎并不优雅。

我目前的方法是编写自己的FileOutputCommmitter,它将为所有写入的文件添加一个applicationId前缀,因此如果出现错误,我知道要删除的内容。

所以我要问的是,实际上Spark内部已有解决方案,如果没有,您对我的方法有何看法

- 编辑 -

与@Yuval Itzchakov聊天后,我决定让应用程序写入并将此路径添加到AWS SQS队列。每x分钟触发一个独立的进程,从SQS读取文件夹并用s3-dist-cp从中复制到。在应用程序中,我使用try-catch包装main方法,如果我捕获异常,我删除了临时文件夹。

0 个答案:

没有答案
相关问题