Apache spark 将dataframe转换为pyspark中嵌套json对象的数组

Apache spark 将dataframe转换为pyspark中嵌套json对象的数组,apache-spark,pyspark,Apache Spark,Pyspark,我创建了dataframe,如下所示: +----+-------+-------+ | age| number|name | +----+-------+-------+ | 16| 12|A | | 16| 13|B | | 17| 16|E | | 17| 17|F | +----+-------+-------+ 如何将其转换为以下json: { 'age' : 16, 'values' : [{

我创建了dataframe,如下所示:

+----+-------+-------+
| age| number|name   |
+----+-------+-------+
|  16|     12|A      |
|  16|     13|B      |
|  17|     16|E      |
|  17|     17|F      |
+----+-------+-------+
如何将其转换为以下json:

{ 
'age' : 16,  
'values' : [{‘number’: ‘12’ , ‘name’ : 'A'},{‘number’: ‘12’ , ‘name’ : 'A'} ] 
},{ 
'age' : 17,  
'values' : [{‘number’: ‘16’ , ‘name’ : 'E'},{‘number’: ‘17’ , ‘name’ : 'F'} ] 
}

您可以将DF转换为RDD并应用您的转换:

NewSchema=StructType[StructFieldage,IntegerType ,StructFieldValue,StringType ] res_df=df.rdd.maplambda行:行[0],{'number':行[1],'name':行[2]}]\ .reduceByKeylambda x,y:x+y\ .maplambda行:行[0],json.dumpsrow[1]\ toDFNewSchema先生 res_df.show20,错误 显示分辨率:

+---+------------------------------------------------------------+
|age|values                                                      |
+---+------------------------------------------------------------+
|16 |[{"number": 12, "name": "A"}, [{"number": 13, "name": "B"}] |
|17 |[{"number": 17, "name": "F"}, [{"number": 16, "name": "E"}] |
+---+------------------------------------------------------------+
将DF另存为JSON文件:

res_df.coalesce1.write.format'json'。保存'output.json'
您可以将DF转换为RDD并应用您的转换:

NewSchema=StructType[StructFieldage,IntegerType ,StructFieldValue,StringType ] res_df=df.rdd.maplambda行:行[0],{'number':行[1],'name':行[2]}]\ .reduceByKeylambda x,y:x+y\ .maplambda行:行[0],json.dumpsrow[1]\ toDFNewSchema先生 res_df.show20,错误 显示分辨率:

+---+------------------------------------------------------------+
|age|values                                                      |
+---+------------------------------------------------------------+
|16 |[{"number": 12, "name": "A"}, [{"number": 13, "name": "B"}] |
|17 |[{"number": 17, "name": "F"}, [{"number": 16, "name": "E"}] |
+---+------------------------------------------------------------+
将DF另存为JSON文件:

res_df.coalesce1.write.format'json'。保存'output.json' 假设df是您的数据帧

从pyspark.sql导入函数为F 新建_df=df.select 年龄 F.struct F.colnumber, F.colname, .别名值 .群比 年龄 阿格先生 F.collect_listvalues.aliasvalues 新的_df.toJSON 或 新建_df.write.json。。。 假设df是您的数据帧

从pyspark.sql导入函数为F 新建_df=df.select 年龄 F.struct F.colnumber, F.colname, .别名值 .群比 年龄 阿格先生 F.collect_listvalues.aliasvalues 新的_df.toJSON 或 新建_df.write.json。。。
将DF转换为RDD,再转换回DF确实会产生影响performances@Steven也许吧,但我怀疑它是否真的会影响性能,因为在每个DF的背景中都有RDD!将DF转换为RDD,再转换回DF确实会产生影响performances@Steven也许吧,但我怀疑它是否真的会影响性能,因为在每个DF的背景中都有RDD!