我有一个数据框,它是左连接的产物。现在我要创建json结构。
我尝试使用其他选项,但无法创建。这是我的数据框:
Col1 col2 col3 col4
1111 name null null
1112 name1 abcd def
1112 name1 DEFG ABXC
所需的json结构为:
{col1 : 1111, col2 : name , detial: {col3:,col4:}}
{col1 : 1112, col2 : name1 , detial: {{col3:abcd,col4:def},{col3:DEFG,col4:ABXC}}}
答案 0 :(得分:1)
我已经从示例数据集中创建了数据,并从中创建了一个数据框。您可以使用以下代码:
from pyspark.sql import Row, DataFrame,SparkSession
from pyspark.sql.functions import *
import json
spark = SparkSession.builder.getOrCreate()
data = spark.createDataFrame([Row(col1=1111,col2="name",col3=None,col4=None),Row(col1=1112,col2="name1",col3="abcd",col4="def"),Row(col1=1112,col2="name1",col3="DEFG",col4="ABXC")])
ndata = data.select(struct("col1","col2",struct("col3","col4").alias("details")).alias("data"))
dataList = list(map(json.loads,ndata.toJSON().collect()))
上面的代码以python词典列表的形式返回结果。