为什么火花在将结果保存到文件系统的同时,将结果文件上传到_temporary目录,然后将它们移动到输出文件夹而不是直接上传到输出文件夹?
答案 0 :(得分:11)
在使用文件系统时,两阶段过程是确保最终结果一致性的最简单方法。
您必须记住,每个执行程序线程独立于其他线程写入其结果集,并且可以在不同的时刻执行写入操作,甚至可以重用相同的资源集。在写入时,Spark无法确定所有写入是否都会成功。
此模型的另一个好处是明确区分正在进行的写入和最终输出。因此,它可以轻松地与简单的工作流管理工具集成,而无需单独的状态存储或其他同步机制。
该模型简单,可靠,适用于已设计的文件系统。不幸的是,对于那些不支持移动的对象商店,它并没有那么好。