Apache Spark, что я здесь настаиваю?

В этой строке какой RDD сохраняется? dropResultsN или dataSetN?

dropResultsN = dataSetN.map(s -> standin.call(s)).persist(StorageLevel.MEMORY_ONLY());

Вопрос возникает как побочная проблема из-за время Apache Spark для каждой операции на JavaRDD , где я все еще ищу хороший ответ на основной вопрос о том, как лучше всего рассчитать время создания RDD.


person JimLohse    schedule 11.07.2016    source источник


Ответы (2)


dropResultsN — это сохраняемый RDD (который представляет собой RDD, полученный путем сопоставления dataSetN с методом standin.call()).

person jaco0646    schedule 11.07.2016
comment
Я бы тоже так подумал, и когда я убираю вызов, Spark (безумно) продолжает пересчитывать RDD, даже несмотря на то, что он должен быть включен в DAG задач, которые должны выполняться в этом приложении. Было бы неплохо, если бы ваш ответ содержал ссылку на что-то и цитировал это что-то. Не копаясь в исходном коде, чем я и займусь дальше. - person JimLohse; 12.07.2016
comment
Предыдущий комментарий NVM Я нашел хороший пример в Learning Spark и опубликовал отдельный ответ - person JimLohse; 12.07.2016

Я нашел хороший пример этого в Learning Spark от O'Reilly:

Это пример 3-40. persist() в Scala (при условии, что Java такая же)

import org.apache.spark.storage.StorageLevel

val result = input.map( x => x*x )
result.persist(StorageLevel.[<your choice>][1])

ПРИМЕЧАНИЕ в Learning Spark: обратите внимание, что мы вызвали persist() в RDD перед первым действием. Вызов persist() сам по себе не вызывает оценку.

МОЕ ПРИМЕЧАНИЕ, что в этом примере сохранение находится на следующей строке, я думаю, что это намного понятнее, чем мой код в моем вопросе.

person JimLohse    schedule 12.07.2016