Как исправить трансляцию присоединения в Spark - PullRequest
1 голос
/ 09 мая 2019

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 не может вещать, несмотря на меньший набор данных и явный намек?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...