在Spark 2.1

时间:2017-07-05 14:54:57

标签: scala apache-spark apache-spark-sql bigdata

我目前正在根据其在另一个表上的存在来更新表:

前:

数据集A(相对较小,300k行): DepartmentId,EmployeeId,薪水,错误

数据集B(相对庞大,数百万行): DepartmentId,EmployeeId,Salary

逻辑是: 1.如果A中存在A(DepartmentId,EmployeeId)对,那么用B的薪水更新A的工资 2.否则,将消息写入A的错误字段

我现在的解决方案是在A和B上进行左外连接。对于这类问题还有其他更好的做法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:4)

为了获得更好的性能,您可以使用@Ram Ghadiyaram提及here的广播哈希联接

广播的数据帧将在所有分区中分发,从而提高加入的效果。

DataFrame join optimization - Broadcast Hash Join

希望这有帮助!