我在调用rdd.collect.foreach(println)时从csv文件创建了一个RDD,它返回文件,但是rdd.foreach(println)返回合并输出。 RDD上有两个部分。 val sc = new SparkContext(“local [*]”,“WordCount”)
val cities = sc.textFile("C:/Users/PSKUMARBEHL/Desktop/us_cities.csv")
cities.collect.foreach(println)
cities.foreach(println)
println(cities.partitions.length)
答案 0 :(得分:4)
这两者根本不同。
cities.collect.foreach(println)
首先收集将城市中的所有记录带回驱动程序,然后(因为它是一个数组)打印每一行。这意味着您没有并行性,因为您将所有内容都带给了驱动程序。
cities.foreach(println)
另一方面,是并行操作。这意味着在城市RDD中的每条记录上运行println函数。这发生在工人身上。如果您使用的是真正的集群(而不是本地主集群),那么您将无法看到工作中出现的println。