SPARK RDD производительность конвейеризации - PullRequest
0 голосов
/ 11 июня 2018

Если у нас есть, скажем,:

val rdd1 = rdd0.map( ...  

, за которым следует

val rdd2 = rdd1.filter( ...

Тогда, при фактическом запуске из-за действия, rdd2 может начать вычислять уже вычисленные результаты rdd1, которыеизвестны - или это должно ждать, пока работа rdd1 не будет завершена?Это не очевидно для меня при чтении материала SPARK.Informatica pipelining делает это, поэтому я предполагаю, что это возможно и в SPARK.

1 Ответ

0 голосов
/ 11 июня 2018
  • Преобразования Spark являются ленивыми, поэтому оба вызова ничего не делают, за исключением DAG вычислительной зависимости.Таким образом, ваш код даже не касается данных.

    Чтобы что-то вычислить, вы должны выполнить действие над rdd2 или одним из его потомков.

  • По умолчанию есть и забывчивые, поэтому, если вы не cache rdd1, он будет оцениваться заново, каждый раз, когда rdd2 оценивается.

  • Наконец, из-за ленивых вычислений несколько узких преобразований объединяются в одну стадию, и ваш код будет чередовать вызовы для отображения и фильтрации функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...