2017-08-31 89 views
0

我有一个方法,将字符串的ArrayBuffer转换为RDD。Spark rdd是空的,直到我做.count()

def makeRddFromArray() : RDD[String] = { 
val rdd = Conf.sc.parallelize(listOfStrings) 
//rdd.count 
rdd} 

带有注释rdd.count()当我取消这个它返回大小为0的RDD,该RDD是适当大小的。有人能解释我为什么吗? 谢谢

回答

0

rdd.count是一个动作,它将触发DAG并获取元素的数量。

RDD只会指定类

scala> rdd 
res0: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize 
at <console>:24 

它不是在这里执行任何操作。

+0

感谢您的回答。 在代码后来我有: 'VAL finalRDD = sc.union(listOfStringRDD)' 如果我有评论此'.Count之间()'方法在'makeRDDFromArray'方法 '调用println( “最终尺寸RDD:” + rdd.count())'打印0. 评论它打印100什么是正确的。 – Tomasz