Я использую Apache Spark для обработки огромного количества данных. Мне нужно выполнить многие действия Spark на том же RDD
. Мой код выглядит следующим образом:Действия на одном и том же Apache Spark RDD вызывают повторное выполнение всех операторов
val rdd = /* Get the rdd using the SparkContext */
val map1 = rdd.map(/* Some transformation */)
val map2 = map1.map(/* Some other transformation */)
map2.count
val map3 = map2.map(/* More transformation */)
map3.count
Проблема заключается в том, что вызов второго действия map3.count
вынуждает повторное выполнение преобразований rdd.map
и map1.map
.
Что, черт возьми, происходит? Я думаю, что DAG, созданный Spark, несет ответственность за это поведение.
У вас есть минимальный рабочий пример для воспроизведения этого поведения? Я попытался сделать что-то очевидное с помощью 'println' в' map', чтобы показать, какая операция выполняется, но когда я вызываю 'collect' на втором, я получаю только второй, а не первый. –
Я исправил свой вопрос, это было не так точно. Завтра я смогу привести рабочий пример. Спасибо за вашу помощь. –