У меня есть небольшой 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
? Есть ли недостатки у этого подхода?
Приветствия.
Терри