pyspark 如何在文件末尾不添加新行字符的情况下将JSON格式的字符串写入JSON?

guykilcj  于 2023-10-15  发布在  Spark
关注(0)|答案(1)|浏览(105)

目前,我有一段代码,它将pyspark对象框架写入JSON格式:

output_df = transform(dfs) \
       .withColumn('ingestion_time', lit(datetime.strptime(args["IngestionTime"], "%Y-%m-%dT%H:%M:%SZ"))).coalesce(1) \
       .write.json('result', mode="overwrite", ignoreNullFields=False)

然而,输出JSON输出文件在文件末尾包含一个额外的行,如下图所示:

我需要的是文件结束于最后一个JSON对象,而不是最后一个JSON对象之后的行。像这样:

这是否可以通过使用JavaScript.write.json实现?
我知道有一个lineSep参数,但我对最后一行之前的所有对象的行分隔没有问题。我只是希望文件的结尾在最终的JSON对象上。

disho6za

disho6za1#

你可以尝试在你的框架中用空格来替换换行符。

output_df = transform(dfs) \
   .withColumn('ingestion_time', lit(datetime.strptime(args["IngestionTime"], "%Y-%m-%dT%H:%M:%SZ"))).coalesce(1) 

output_df = output_df.replace('/n', '')
   
output_df.write.json('result', mode="overwrite", ignoreNullFields=False)

相关问题