PySpark:写入时吐出单个文件,而不是多个部分文件



有没有办法防止 PySpark 在将数据帧写入 JSON 文件时创建多个小文件?

如果我运行:

 df.write.format('json').save('myfile.json')

df1.write.json('myfile.json')

它创建名为myfile的文件夹,在其中我找到了几个名为 part-*** 的小文件,HDFS 方式。是否有可能让它吐出一个文件?

好吧,你的确切问题的答案是coalesce函数。但如前所述,它根本没有效率,因为它会迫使一个工人获取所有数据并按顺序写入。

df.coalesce(1).write.format('json').save('myfile.json')

附言顺便说一句,结果文件不是有效的 json 文件。它是一个文件,每行都有一个 json 对象。

这对我来说是一个更好的解决方案。

rdd.map(json.dumps) .saveAsTextFile(json_lines_file_name)

df1.rdd.repartition(1).write.json('myfile.json')

会很好,但不可用。检查此相关问题。https://stackoverflow.com/a/33311467/2843520

相关内容

  • 没有找到相关文章

最新更新