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

mar*_*tin 7 python amazon-s3 apache-spark apache-spark-sql pyspark

有没有办法阻止PySpark在将DataFrame写入JSON文件时创建几个小文件?

如果我跑:

 df.write.format('json').save('myfile.json')
Run Code Online (Sandbox Code Playgroud)

要么

df1.write.json('myfile.json')
Run Code Online (Sandbox Code Playgroud)

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

the*_*olm 10

那么,你确切问题的答案就是coalesce功能.但正如已经提到的那样它根本没有效率,因为它会迫使一个工作者获取所有数据并按顺序写入.

df.coalesce(1).write.format('json').save('myfile.json')
Run Code Online (Sandbox Code Playgroud)

PS Btw,结果文件不是有效的json文件.它是一个每行有一个json对象的文件.

  • 对我来说,这一行创建了名为“myfile.json”的目录,其中包含一个零件文件(使用spark 2.4) (2认同)