2016-11-14 3 views

ответ

2

Мы можем сохранить RDD, чтобы позднее применить более одного действия или вызвать действие на RDD. После сохранения RDD искры пропустит все этапы, которые мне понадобятся, рассчитанные для выполнения Action. В искры все преобразования ленивы оцениваются, что означает, что когда вы вызываете действие, все преобразования будут выполняться в реальном состоянии, поэтому в первый раз, если вы вызове collect(), он выполнит все преобразования и продолжит одно из RDD, если вы снова выполните другое действие, такое как count он не будет повторно выполнить все преобразования просто пропустить все перед упорствовать и выполнить Некоммерческие сохранялось часть, например

val list = sc.parallelize(List(1,23,5,4,3,2)) 
val rdd1 = list.map(_+1) 
val rdd2 = rdd1.map(_+5).cache 
rdd2.collect 
rdd2.count 

, как в приведенном выше примере, когда rdd2.collect позвонит будет выполняться все выше преобразований, как вы заметили, rdd2 уже кеш, так что теперь, когда счетчик будет вызван, он не будет выполняться над преобразованием и использует persisted rdd для вычисления результатов.