gpt4 book ai didi

scala - 调用 someRDD.collect.foreach(println) 和 someRDD.foreach(println) 有什么区别

转载 作者:行者123 更新时间:2023-12-02 17:20:49 26 4
gpt4 key购买 nike

当我调用 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)

最佳答案

两者根本不同。

cities.collect.foreach(println)

首先执行 collect,它将城市中的所有记录带回给驱动程序,然后(因为它是一个数组)打印每一行。这意味着您没有并行性,因为您将所有内容都交给了驱动程序。

cities.foreach(println)

另一方面是并行操作。这意味着在 cities RDD 中的每条记录上运行函数 println。这发生在 worker 身上。如果您使用的是真实集群(而不是本地主集群),您将不会看到 worker 上出现的 println。

关于scala - 调用 someRDD.collect.foreach(println) 和 someRDD.foreach(println) 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42886734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com