Почему упорство используется как действие в книге Холдена Карау "Learning Spark"? - PullRequest
3 голосов
/ 08 ноября 2019

Я читаю «Изучение искры» и заметил такой код:

val result = input.map(x => x * x)
result.persist(StorageLevel.DISK_ONLY)
println(result.count())
println(result.collect().mkString(","))

действительно ли этот код сохраняется result rdd? Я думал, что в Spark все было неизменным, но в этом случае похоже, что мы мутируем result rdd.

Разве этот фрагмент кода не должен быть написан так? :

val result = input.map(x => x * x)
val persistedResult = result.persist(StorageLevel.DISK_ONLY)
println(persistedResult.count())
println(persistedResult.collect().mkString(","))

В книге приведено еще много примеров кода, и это заставило меня задуматься ...

1 Ответ

2 голосов
/ 09 ноября 2019

В отличие от типизированных преобразований, 1002 * применяется к этому набору данных. Это потому, что persist на самом деле только отмечает набор данных как таковой. Из Руководство по программированию Spark :

Вы можете пометить СДР для сохранения с помощью методов persist () или cache (). При первом вычислении в действии он будет храниться в памяти на узлах.

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