Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在pyspark中使用多行选项将数据帧保存到json文件中_Json_Pyspark_Pyspark Dataframes - Fatal编程技术网

如何在pyspark中使用多行选项将数据帧保存到json文件中

如何在pyspark中使用多行选项将数据帧保存到json文件中,json,pyspark,pyspark-dataframes,Json,Pyspark,Pyspark Dataframes,在Pyspark中,我想将数据帧保存为json文件,但格式如下 假设这是我的数据帧 >>> rdd1.show() +----------+-----+ | f1| f2| +----------+-----+ |AAAAAAAAAA|99999| | BBBBBBBBB|99999| | CCCCCCCCC|99999| +----------+-----+ 如果我将上面的数据帧保存为json文件,它将给出如下输出 >>>rdd1.coa

在Pyspark中,我想将数据帧保存为json文件,但格式如下

假设这是我的数据帧

>>> rdd1.show()
+----------+-----+
|        f1|   f2|
+----------+-----+
|AAAAAAAAAA|99999|
| BBBBBBBBB|99999|
| CCCCCCCCC|99999|
+----------+-----+
如果我将上面的数据帧保存为json文件,它将给出如下输出

>>>rdd1.coalesce(1).write.json("file:///test_directory/sample4")
{"f1":"AAAAAAAAAA","f2":"99999"}
{"f1":"BBBBBBBBB","f2":"99999"}
{"f1":"CCCCCCCCC","f2":"99999"}
但我希望它像下面一样

[{"f1":"AAAAAAAAAA","f2":"99999"},{"f1":"BBBBBBBBB","f2":"99999"},{"f1":"CCCCCCCCC","f2":"99999"}]

我已经尝试过选项(“multiLine”、“true”)和lineSep=“,”似乎都不起作用,这些选项只适用于读而不适用于写。请建议此问题的解决方案

使用
收集列表
函数使用
收集json
并以
.text()的形式编写

示例:

df.show()
#+-----+-----+
#|   f1|   f2|
#+-----+-----+
#|AAAAA| 9999|
#|  BBB|99999|
#| CCCC| 9999|
#+-----+-----+

from pyspark.sql.functions import *

df.agg(to_json(collect_list(struct(col("f1"),col("f2")))).alias("d")).\
write.\
mode("overwrite").\
text("<path>")

#output
#[{"f1":"AAAAA","f2":"9999"},{"f1":"BBB","f2":"99999"},{"f1":"CCCC","f2":"9999"}]
df.show()
#+-----+-----+
#|f1 | f2|
#+-----+-----+
#|AAAA | 9999|
#|BBB | 99999|
#|中交| 9999|
#+-----+-----+
从pyspark.sql.functions导入*
agg(to_json(collect_list(struct(col(“f1”)、col(“f2”))))).alias(“d”))\
写\
模式(“覆盖”)\
正文(“”)
#输出
#[{“f1”:“AAAA”,“f2”:“9999”},{“f1”:“BBB”,“f2”:“99999”},{“f1”:“CCCC”,“f2”:“9999”}]