Я использую Spark 2.1.1.У меня очень сложный запрос, написанный на Spark SQL, который я пытаюсь оптимизировать.Для раздела я пытаюсь использовать широковещательное соединение.Но хотя я установил:
spark.sql.autoBroadcastJoinThreshold = 1073741824
, что составляет 1 ГБ, я вижу, что сгенерированный искрой физический план для этого раздела выполнениявсе еще использую SortMergeJoin.Есть ли у вас какие-либо сведения о том, почему широковещательное соединение не используется, даже если на одной из сторон Spark UI -> вкладка SQL размер одной стороны показан намного меньше (в МБ)?
Мой раздел кода SQL для уязвимой части выглядит следующим образом:
-- Preceding SQL
(
SELECT /*+ BROADCAST (a) */ -- Size of a is within broadcast threshold as per UI
a.id,
big.gid
FROM
(SELECT DISTINCT(id) AS id FROM a_par WHERE gid IS NULL) a
JOIN
big ON (a.id=big.id)
)
-- Succeeding SQL
Экран Spark UI, который подтверждает: