我正在做一个项目,但我遇到了以下情况。
我有一张表:superMerge(id, name, salary)
我还有另外两个表:table1 和 table2
所有表(table1、table2 和 superMerge)都具有相同的结构。
现在,我的挑战是从表 1 和表 2 插入/更新 superMerge 表。 table1 每 10 分钟更新一次,table2 每 20 分钟更新一次,因此在时间 t=20mins 我有 2 个作业试图更新同一个表(在这种情况下为 superMerge。)
我想了解如何使用 Spark 或任何其他 hadoop 应用程序将并行插入/更新/合并到 superMerge 表中。
最佳答案
这里的问题是两个job无法相互通信,不知道对方在做什么。一个相对简单的解决方案是实现一个基本的基于文件的“锁定”系统:
每个作业都会在 HDFS 上的特定文件夹中创建一个(空)文件,指示更新/插入正在进行中,并在作业完成后删除该文件
现在,每个作业都必须在开始更新/插入之前检查这样的文件是否存在。如果存在,作业必须等到文件消失。
关于hadoop - 使用 Apache Spark 多次插入到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956325/