将 spark 数据帧的每一行写入一个单独的文件

use*_*520 3 file-writing apache-spark pyspark

我有一个带有单列的 Spark Dataframe,其中每一行都是一个长字符串(实际上是一个 xml 文件)。我想通过 DataFrame 并将每行中的一个字符串保存为文本文件,它们可以简单地称为 1.xml、2.xml 等。

我似乎找不到有关如何执行此操作的任何信息或示例。我刚刚开始使用 Spark 和 PySpark。也许在 DataFrame 上映射一个函数,但该函数必须将字符串写入文本文件,我找不到如何执行此操作。

Sha*_*ica 5

使用 Spark 保存数据帧时,将为每个分区创建一个文件。因此,获得每个文件一行的一种方法是首先将数据重新分区到与行数一样多的分区。

github上有一个用于使用 Spark 读取和写入 XML 文件的库。但是,数据帧需要具有特殊格式才能生成正确的 XML。在这种情况下,由于您将所有内容作为单个列中的字符串,最简单的保存方法可能是 csv。

可以按如下方式进行重新分区和保存:

rows = df.count()
df.repartition(rows).write.csv('save-dir')
Run Code Online (Sandbox Code Playgroud)