gpt4 book ai didi

apache-spark - 使用 wholeTextFiles 进行 Spark 数据操作

转载 作者:行者123 更新时间:2023-12-02 03:11:16 27 4
gpt4 key购买 nike

我有 20k ~2MB 的压缩文件可以在 spark 中操作。我最初的想法是使用 wholeTextFiles() 来获取文件名 -> 内容元组。这很有用,因为我需要维护这种配对(因为处理是在每个文件的基础上完成的,每个文件代表一分钟的收集数据)。但是,每当我需要映射/过滤/等数据并维护此文件名 -> 关联时,代码就会变得丑陋(并且可能效率不高?)即

Data.map(lambda (x,y) : (x, y.changeSomehow))

数据本身,也就是每个文件的内容,作为单独的 RDD 读取会很好,因为它包含 10k 行数据;但是,一个人不能拥有 rdd 的 rdd(据我所知)。

有什么办法可以简化这个过程吗?基本上允许我将每个文件的内容用作 rdd 的任何解决方法,因此允许我执行 rdd.map(lambda x: change(x)) 而无需丑陋地跟踪文件名(和使用列表理解而不是转换)?

当然,我们的目标也是维护分布式方法并且不以任何方式抑制它。

处理的最后一步是通过 reduce 将所有内容聚集在一起。

更多背景:尝试以每分钟为基础识别(附近的)船舶碰撞,然后绘制它们的路径

最佳答案

如果你有正常的map函数(o1->o2),你可以使用mapValues功能。您还有 flatMap (o1 -> Collection()) 函数:flatMapValues。

它将保留 key (在您的情况下为文件名)并仅更改值。

例如:

rdd = sc.wholeTextFiles (...)
# RDD of i.e. one pair, /test/file.txt -> Apache Spark
rddMapped = rdd.mapValues (lambda x: veryImportantDataOf(x))
# result: one pair: /test/file.txt -> Spark

使用 reduceByKey 可以减少结果

关于apache-spark - 使用 wholeTextFiles 进行 Spark 数据操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39871444/

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