使用WholeTextFiles进行Spark数据操作

硬币袋

我有约2MB的20k压缩文件,可以在火花中操作。我最初的想法是使用,wholeTextFiles()以便获取文件名->内容元组。这很有用,因为我需要维护这种配对(因为处理是基于每个文件进行的,每个文件代表一分钟收集的数据)。但是,每当我需要映射/过滤/等数据并维护此文件名->关联时,代码就会变得难看(也许效率不高?),即

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

数据本身,也就是每个文件的内容,很高兴作为一个单独的RDD读取,因为它包含10k行数据。但是,据我所知,rdd不能是rdds。

有什么办法可以简化这个过程?有什么变通办法基本上可以让我将每个文件的内容用作rdd,从而使我不必rdd.map(lambda x: change(x))丑陋地跟踪文件名(以及使用列表推导而不是转换)吗?

当然,目标是保持分布式方法,并且不以任何方式禁止它。

处理的最后一步将是通过简化将所有内容收集在一起。

更多背景知识:尝试每分钟识别(附近)船舶碰撞,然后绘制其路径

T·高文达

如果您具有常规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可以减少结果

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用wholeTextFiles在Spark中读取gz文件

Spark textFile与WholeTextFiles

对Spark数据集进行适当的monadic flatMap操作?

使用awk进行数据提取操作

使用attoparsec对解析的数据进行操作

使用 Python 进行大数据操作

使用Spark Scala为数据中的每个组进行窗口操作后选择最新的时间戳记录

使用 Spark Scala 进行表数据转换

使用临时目录进行Spark事务性写操作

使用 Spark Scala 进行字符串操作

如何使用dom(数据表)进行操作?

使用Pandas进行条件数据框操作

使用谷歌应用程序脚本进行数据操作

使用JPA进行数据库操作

+ =使用不存在的数据框进行操作

使用整个数据框对值进行分组操作

使用Spring JdbcTemplate进行多个数据库操作

使用Golang对Redshift数据库进行CRUD操作

Data.table:使用组移位数据进行操作

使用 Apache NiFi 进行数据操作的 JSON 转换

使用loadash进行数据操作(左联接类)

使用Django模型请求的数据进行简单操作

每月使用 Symfony 进行自动数据库操作

如何使用 Pandas 数据框进行此列时间行操作?

使用 pyspark-pandas 进行数据帧操作

如果Spark中的数据帧是不可变的,为什么我们能够使用withColumn()之类的操作对其进行修改?

Spark在WholeTextFiles上创建的分区少于minPartitions

Spark:如何对数据帧中的字符串数组进行聚合操作

在spark数据帧的同一列上进行多个聚合操作