如何通过pyspark将csv文件写入一个文件

syd*_*dgm 7 pyspark

我用这个方法编写csv文件.但它会生成一个包含多个零件文件的文件.那不是我想要的; 我需要一个文件.我还发现另一个使用scala的帖子强制在一个分区上计算所有内容,然后获取一个文件.

第一个问题:如何在Python中实现这一点?

在第二篇文章中,也有人说Hadoop function可以将多个文件合并为一个.

第二个问题:是否可以在Spark中合并两个文件?

Moh*_* ah 8

您可以使用,

df.coalesce(1).write.csv('result.csv')
Run Code Online (Sandbox Code Playgroud)

注意: 使用合并功能时,您将失去并行性.

  • 我还没有证实自己,但怀疑你遇到了大文件的内存问题,请参阅 /sf/ask/2217217131/#41785085 (2认同)

Dav*_*vid 6

您可以使用如下所示的 cat 命令行函数来执行此操作。这会将所有零件文件连接成 1 个 csv。无需重新分区为 1 个分区。

import os
test.write.csv('output/test')
os.system("cat output/test/p* > output/test.csv")
Run Code Online (Sandbox Code Playgroud)