2017-08-31 67 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