我已经看到它表明,当我们使用MR,Spark或Tez作为执行引擎编写大数据作业时,作业是幂等的。
作业首先将数据写入临时目录,即“ .hivestaging ...”或“ _temporary”
然后,FileOutputCommitter使用以下条件将数据合并到其最终目标:
我的问题是,为什么我们说这项工作是幂等的,要么成功,要么失败?不能存在某些数据被移至回收站且作业无法将文件从临时目录移动到目标位置的情况,从而导致作业失败和数据丢失的情况吗?
答案 0 :(得分:0)
大数据作业有时是幂等的,有时不是幂等的。就像编程的许多方面一样。
来自以下URL What is an idempotent operation?:
在计算中,幂等运算是指如果使用相同的输入参数多次调用幂等运算,则不会产生任何其他影响。例如,从集合中删除某项可以视为对该集合的幂等操作。
这些作业不会修改提供给它们的原始输入文件,因此,如果唯一的结果是输出文件,则这些作业是幂等的。在相同文件上调用这些作业将失败或提供相同的结果(尽管顺序可能不同)。
但是,如果您的工作是对外部源进行一些操作(例如上载到数据库),则重复运行可能会添加其他数据。因此,在这种情况下将不是幂等的。