如何在csv文件中处理json数据我试图使用from_json但是我需要指定我的架构,因为我的架构会不断变化。
示例输入: -
userid type data
26594 p.v {}
26594 s.s {"sIds":["1173","1342","12345"]}
26594 s.r {"bp":"sw"}
26594 p.v {}
26594 s.r {"c":"tracking","action":"n","label":"ank"}
26593 p.v {}
26594 p.sr {"pId":"11234","pName":"sahkas","s":"n","is":"F","totalCount":0,"scount":0}
我希望将其转换为数据帧,我们可以使用它来查询json。
寻找输出: -
userid type data_sids data_bp data_c data_action data_label
26594 p.v null null null null null
26594 s.s 1173 null null null null
26594 s.s 1173 null null null null
26594 s.s 1342 null null null null
26594 s.s 12345 null null null null
26594 s.r null sw null null null
这可行吗?
你能帮我解决这个问题。
谢谢,
Ankush Reddy。
答案 0 :(得分:1)
我的建议是与RDD合作完成这项任务。 写下这样的东西:
rdd = # collection of Rows with the following fields: userid, type, data - your CSV
def flatten_json(userid, type, data_json):
final_row = {"userid": userid, "type": type, "data_sids": data_json["sids"], ...}
return Row(**final_row)
rdd = rdd.map(lambda row: flatten_json(row["userid"], row["type"], row["data"]))
df = spark.createDataFrame(rdd)
就是这样:))