2017-03-19 45 views
0

之間有什麼區別當我調用rdd.collect.foreach(println)時它從csv文件創建了一個RDD,因爲它是但rdd.foreach(println)返回合併輸出。 RDD上有兩個分區。 VAL SC =新SparkContext( 「本地[*]」, 「字計數」)調用someRDD.collect.foreach(println)與someRDD.foreach(println)

val cities = sc.textFile("C:/Users/PSKUMARBEHL/Desktop/us_cities.csv") 
     cities.collect.foreach(println) 
     cities.foreach(println) 
     println(cities.partitions.length) 

回答

3

兩者是根本不同的。

cities.collect.foreach(println) 

第一不收集這使所有記錄在城市回驅動程序,然後(因爲它是一個數組)打印的每一行。這意味着當你把所有東西都帶給司機時,你就沒有平行性。

cities.foreach(println) 

另一方面是一個並行操作。它意味着在城市RDD的每條記錄上運行println函數。這發生在工人身上。如果您使用的是真正的集羣(與本地主人相對),那麼您不會在工作人員身上發現println。