Spark _temporary创作理由

时间:2017-10-23 05:47:48

标签: apache-spark

为什么火花在将结果保存到文件系统的同时,将结果文件上传到_temporary目录,然后将它们移动到输出文件夹而不是直接上传到输出文件夹?

1 个答案:

答案 0 :(得分:11)

在使用文件系统时,两阶段过程是确保最终结果一致性的最简单方法。

您必须记住,每个执行程序线程独立于其他线程写入其结果集,并且可以在不同的时刻执行写入操作,甚至可以重用相同的资源集。在写入时,Spark无法确定所有写入是否都会成功。

  • 如果发生故障,可以通过删除临时目录来回滚更改。
  • 如果成功,可以通过移动临时目录来提交更改。

此模型的另一个好处是明确区分正在进行的写入和最终输出。因此,它可以轻松地与简单的工作流管理工具集成,而无需单独的状态存储或其他同步机制。

该模型简单,可靠,适用于已设计的文件系统。不幸的是,对于那些不支持移动的对象商店,它并没有那么好。