提问人:Sadasivan m 提问时间:10/17/2023 最后编辑:Shubham SharmaSadasivan m 更新时间:10/17/2023 访问量:31
如何将 pyspark 数据帧转换为多个嵌套的 json
How to convert a pyspark data frame into multiple nested json
问:
我有一个 pyspark 数据帧,该数据帧是从 SQL 表填充的,其中包含以下字段列及其值。
transactionid docname docdetailfield1 docdetailfield2
1234 name1 name1detail1 name1detail2
1235 name2 name2detail1 name2detail2
我需要使用 pyspark 从 pyspark 数据帧创建一个多级嵌套 json。 可能吗?
{
"transactionid": "123",
"docsection": {
"docname": "name1",
"docDetails": {
"docdetailfield1": "name1detail1",
"docdetailfield2": "name1detail2",
}
}
}
尝试拆分数据帧和分组。我正在获得单独的 json 结构,但不是上面的嵌套 json 结构。
答:
0赞
Shubham Sharma
10/17/2023
#1
将所需的列打包到类型中,然后转换为 jsonstruct
section = F.struct('docname', F.struct('docdetailfield1', 'docdetailfield2').alias('docDetails'))
records = df.select('transactionid', section.alias('docSection')).toJSON()
records.collect()
['{"transactionid":1234,"docSection":{"docname":"name1","docDetails":{"docdetailfield1":"name1detail1","docdetailfield2":"name1detail2"}}}',
'{"transactionid":1235,"docSection":{"docname":"name2","docDetails":{"docdetailfield1":"name2detail1","docdetailfield2":"name2detail2"}}}']
评论
0赞
Sadasivan m
10/18/2023
感谢 Shubham 的解决方案。这有效.下一步是否可以将此嵌套的 json 作为新列包含在数据帧中?
0赞
Shubham Sharma
10/18/2023
这是可能的,你可以只使用:。该函数会将每行中的结构序列化为 json 字符串to_json
df = df.withColumn('json', F.to_json(section))
to_json
评论