Pyspark数据帧写入具有特定名称的单个json文件

Lij*_*hew 7 apache-spark pyspark

我有一个数据帧,我想把它写成具有特定名称的单个json文件.我在下面试过

df2 = df1.select(df1.col1,df1.col2)
df2.write.format('json').save('/path/file_name.json') # didnt work, writing in folder 'file_name.json' and files with part-XXX
df2.toJSON().saveAsTextFile('/path/file_name.json')  # didnt work, writing in folder 'file_name.json' and files with part-XXX
Run Code Online (Sandbox Code Playgroud)

感谢是否有人可以提供解决方案.

Rak*_*mar 13

您需要使用以下代码将其保存在单个文件中: -

df2 = df1.select(df1.col1,df1.col2)
df2.coalesce(1).write.format('json').save('/path/file_name.json')
Run Code Online (Sandbox Code Playgroud)

这将创建一个文件夹file_name.json.检查此文件夹,您可以获得包含整个数据的单个文件part-000

  • 我想写一个特定的名字file_name.json。除了重命名之外,还有直接的书写方式吗? (3认同)
  • 由于您使用的是 Spark,因此您的数据分布在多个节点上,并行计算并部分发送到您的目录。使用spark的原因之一是数据无法存储在本地。所以这就是数据的输出方式。文件越大,应该通过的“部分”文件就越大。 (2认同)

小智 9

您可以通过之前转换为 pandas df 来实现:

df.toPandas().to_json('path/file_name.json', orient='records', force_ascii=False, lines=True)
Run Code Online (Sandbox Code Playgroud)