gpt4 book ai didi

scala - Spark : grouping during loading

转载 作者:行者123 更新时间:2023-12-01 12:26:32 24 4
gpt4 key购买 nike

通常我会加载 csv 文件,然后运行不同类型的聚合,例如使用 Spark 进行“分组依据”。我想知道是否有可能在文件加载期间开始这种操作(通常是几百万行)而不是对它们进行顺序化,以及它是否值得(作为节省时间)。

例子:

val csv = sc.textFile("file.csv")
val data = csv.map(line => line.split(",").map(elem => elem.trim))
val header = data.take(1)
val rows = data.filter(line => header(0) != "id")
val trows = rows.map(row => (row(0), row))
trows.groupBy(//row(0) etc.)

根据我对 Spark 工作原理的理解,groupBy(或 aggregate)将被“推迟”到整个 csv 文件的内存加载。如果这是正确的,加载和分组是否可以“同时”运行而不是按顺序执行这两个步骤?

最佳答案

the groupBy (or aggregate) will be "postponed" to the loading in memory of the whole file csv.

事实并非如此。在本地(单个分区)级别,Spark 对惰性序列进行操作,因此属于单个任务的操作(这包括 map 端聚合)可以压缩在一起。

换句话说,当您拥有方法链时,操作是逐行执行的,而不是逐个转换执行的。换句话说,第一行将被映射、过滤、再次映射并在访问下一行之前传递给聚合器。

关于scala - Spark : grouping during loading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39065962/

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