如何将 pyspark 数据帧转换为多个嵌套的 json

How to convert a pyspark data frame into multiple nested json

提问人:Sadasivan m 提问时间:10/17/2023 最后编辑:Shubham SharmaSadasivan m 更新时间:10/17/2023 访问量:31

问:

我有一个 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 结构。

Python JSON 数据帧 pyspark 嵌套

评论


答:

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_jsondf = df.withColumn('json', F.to_json(section))to_json