Spark BroadcastJoin намекнул не вещание, как ожидалось (Spark 2.3)
У меня есть 2 кадра, скажем, a & b. Фрейм данных a довольно мал с 50000 строками, размером около 940K. Фрейм данных b большой с 12 ТБ данных.
Я присоединяюсь как:
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
Это был просто эксперимент. Я не могу использовать это, потому что мне нужно "левое соединение b".
Я пытался b.join(Broadcast(a), $"a.id" === $"b.id", "right")
, но это снова дает мне SortMergeJoin.
Память не проблема. Я не вижу разливов. Драйвер также имеет 16 ГБ.
Есть идеи, почему Spark не может вещать, несмотря на меньший набор данных и явный намек?