熊猫数据帧的 PySpark rdd

Posted

技术标签:

【中文标题】熊猫数据帧的 PySpark rdd【英文标题】:PySpark rdd of pandas data frames 【发布时间】:2020-06-29 11:55:18 【问题描述】:

我正在提取不同源文件的信息。每个源文件对应于一些测量数据的给定快照时间。我有一个预处理函数,它采用其中一个文件并输出一个熊猫数据框。所以我做了一个 sparksc.wholeTextFiles 调用,它给了我所有输入文件的列表,然后我在上面调用了map,它为我提供了一个 rdd,其中每个元素都是一个 pandas 数据框。现在“重塑”这种结构的最佳方法是什么,以便我只有一个由连接的较小数据帧组成的结果数据帧?

【问题讨论】:

【参考方案1】:

您可以创建火花数据框。假设这些文件位于一个位置并被定界,您可以使用 spark 创建一个包含所有文件数据的新数据框。

spark.read.option("header", "true").csv("../location/*")

之后,您可以使用 spark 中可用的大量转换。它们与 pandas 非常相似,并且可以处理大数据,甚至比 RDD 更快。

【讨论】:

谢谢。问题是,必须先处理非 CSV 格式的文件才能获得 CSVish 格式。 你能发布这些文件的样本吗?这将有助于重现问题。 因此文件包含一些非常具体的非表格数据,在继续之前必须对其进行处理。出于这个原因,我手动编写了一个解析器,它为给定的输入文件返回一个数据框。 如果解析后有不同的数据帧。您可以遍历每个数据帧并将每个 df 联合到新的 spark df。前提是它们具有相同的列。 好的,但这必须发生在主人身上,对吧?在工人身上联合多个数据框没有解决方案。

以上是关于熊猫数据帧的 PySpark rdd的主要内容,如果未能解决你的问题,请参考以下文章

加入两个 Pyspark 数据帧的两种方法有啥区别

Pyspark 忽略 pyspark-sql-functions 中数据帧的过滤

两个 pyspark 数据帧的余弦相似度

提高处理大熊猫数据帧的性能

将大熊猫数据帧的每一列与同一数据帧的每一列相乘的最有效方法

如何根据来自其他 pyspark 数据帧的日期值过滤第二个 pyspark 数据帧?