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还是无法广播?