如何使用特定格式从数据帧保存json?
我正在尝试将以下pyspark数据帧保存到json:如何使用特定格式从数据帧保存json?,json,pyspark,Json,Pyspark,我正在尝试将以下pyspark数据帧保存到json: ID VARIABLE_1 1 1 2 0 3 0 4 1 5 0 但我需要json是这样的: { "1": {"VARIABLE_1": 1} } { "2": {"VARIABLE_1": 0} } { "3": {"VARIABLE_1": 0} } { "4": {"VARIABLE_1": 1} } { "5": {"VARIABLE_1": 0} } 保存到json时,我得到以
ID VARIABLE_1
1 1
2 0
3 0
4 1
5 0
但我需要json是这样的:
{ "1": {"VARIABLE_1": 1} }
{ "2": {"VARIABLE_1": 0} }
{ "3": {"VARIABLE_1": 0} }
{ "4": {"VARIABLE_1": 1} }
{ "5": {"VARIABLE_1": 0} }
保存到json时,我得到以下信息:
{ "ID":"1", "VARIABLE_1": 1}
{ "ID":"2", "VARIABLE_1": 0}
{ "ID":"3", "VARIABLE_1": 0}
{ "ID":"4", "VARIABLE_1": 1}
{ "ID":"5", "VARIABLE_1": 0}
我正试着用它来节省开支
df.write.mode("overwrite").format("json").save(json_path)
我尝试使用create_map,得到了如下数据帧:
NEW_COLUMN_NAME
{ "1": {"VARIABLE_1": 1} }
{ "2": {"VARIABLE_1": 0} }
{ "3": {"VARIABLE_1": 0} }
{ "4": {"VARIABLE_1": 1} }
{ "5": {"VARIABLE_1": 0} }
但当我尝试将此新数据帧保存到json时,我得到:
{"NEW_COLUMN_NAME":{"1":{"VARIABLE_1":1}}}
{"NEW_COLUMN_NAME":{"2":{"VARIABLE_1":0}}}
{"NEW_COLUMN_NAME":{"3":{"VARIABLE_1":0}}}
{"NEW_COLUMN_NAME":{"4":{"VARIABLE_1":1}}}
{"NEW_COLUMN_NAME":{"5":{"VARIABLE_1":0}}}
我真的不知道该怎么办,有人知道吗
谢谢 我是如何解决这个问题的:
-使用collect()收集创建映射数据帧
-用于为数据帧的每一行创建字典
-将json.dumps与字典一起使用
-使用open(path,“w”)保存的json格式将包含名称和值,保存为json格式时不可能删除一个名称(ID)并保留另一个名称(变量_1)。一旦您获得所需格式的数据(使用
创建_映射
),请尝试使用。write.text(json_path)
将字符串写入文件。类似这样:df.select(“NEW_COLUMN_NAME”).write.text(json_path)
当我尝试write.text时,它会显示“文本数据源不支持映射”,如果我尝试强制转换('string'),它会从{“1”:{“VARIABLE_1”:1}更改为[1->[VARIABLE_1->0]]我的spark是2.4版,我无法在2.4版上进行测试,但是to_json
是否在MapType()
列上工作df.select(to_json(“NEW_COLUMN_NAME”)).write.text(json_path)
。如果没有,这有点麻烦,但您可以手动构建字符串:df.select(concat(lit(“{”),“ID”,lit(“:{“VARIABLE_1”:“),“VARIABLE_1”,lit(“}”))。write.text(json_路径)