Я не знаю, правильно ли я использую широковещательную переменную.
У меня есть два RDD, rdd1
и rdd2
.Я хочу применить rdd2.mapPartitionsWithIndex(...)
, и для каждого раздела мне нужно выполнить некоторые вычисления, используя целые rdd1
.Итак, я думаю, что это случай использования переменной Broadcast. Первый вопрос: Думаю ли я это правильно?
Для этого я сделал следующее:
val rdd1Broadcast = sc.broadcast(rdd1.collect())
Второй вопрос: Зачем мне ставить .collect()
. Я видел примеры с и без .collect()
, но не понял, когда мне нужно его использовать.
ТакжеЯ сделал это:
val rdd3 = rdd2.mapPartitionsWithIndex( myfunction(_, _, rdd1Broadcast), preservesPartitioning = preserves).cache()
Третий вопрос: Что лучше: прохождение rdd1Broadcast
или rdd1Broadcast.value
?