Избегание тайм-аутов при включении прямой трансляции - PullRequest
0 голосов
/ 24 октября 2019

У меня есть небольшой DF, который довольно дорог для вычисления. Затем я широковещательно присоединяюсь к маленькому DF с гораздо большим DF.

Код выглядит примерно так:

    val laregDf = loadLargeDfFromHive()

    // Cached for later re-use
    val smallDf = expensiveComputation().cache()

    val joined = largeDf.as("a").join(broadcast(smallDf.as("b")), $"a.key" === $"b.key", "inner") 

Теперь в кластере время от времени превышаю порог тайм-аута соединения в 300s,Я мог бы увеличить этот порог, однако выбор значения довольно произвольный, и я все еще могу превысить тайм-аут, если кластер занят.

Было бы лучше инициировать действие, такое как smallDf.count, чтобы трансляция ненужно ждать вычисления smallDf? Есть ли недостатки у этого подхода?

Приветствия.

Терри

1 Ответ

0 голосов
/ 24 октября 2019

Вы можете использовать .count или .reduce для кэширования фрейма данных, что гарантирует, что вы не будете делать дорогостоящие вычисления при выполнении широковещательного соединения

...