Spark _temporary创作理由

Shu*_*ain 4 apache-spark

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

use*_*411 12

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

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

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

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

该模型简单,可靠,适用于已设计的文件系统.不幸的是,对于不支持移动的对象存储,它不能很好地执行.

  • 作业运行完成后是否应该删除“_temporary”目录? (2认同)