如何在Spark中修复广播加入

时间:2019-05-09 17:00:06

标签: apache-spark join broadcast

Spark BroadcastJoin提示未按预期广播(Spark 2.3)

我有2个数据框,假设a和b。数据帧a很小,有50000行,大约940K。数据框b很大,有12TB的数据。 我加入的方式是:

Broadcast(a).join(b, $"a.id" === $"b.id", "left")

但查询计划显示SortMergeJoin [id#163], [id#187], LeftOuter 我希望看到BroadcastHashJoin

我尝试了其他选择并观察到:

b.join(Broadcast(a), $"a.id" === $"b.id", "left") 

给我BroadcastHashJoin [id#163], [id#187], LeftOuter, BuildRight 这只是一个实验。我不能使用它,因为我需要“ a左连接b”。

我尝试了b.join(Broadcast(a), $"a.id" === $"b.id", "right"),但这又给了我SortMergeJoin。

内存不是问题。我没有发现任何溢出。该驱动程序也有16GB。

任何想法,为什么尽管数据集较小且有明确的提示,Spark还是无法广播?

0 个答案:

没有答案