scala—如何使用通过旋转列生成的列的值生成的模式来创建新的dataframe

mkshixfv  于 2021-05-27  发布在  Spark
关注(0)|答案(0)|浏览(156)

我有一个具有以下模式的Dataframe。

root
 |-- id: string (nullable = true)
 |-- type: string (nullable = true)
 |-- key: string (nullable = true)
 |-- value: string (nullable = true)

它首先以“value”列为轴心。

val pivot_df = df.groupBy("id","key").pivot("type").agg(first("value"))

“value”列的数据可能包含一组嵌套的json。所以之前我正在转换整个“value”列以获得所需的模式。

val schema = spark.read.json(df.select("value").as[String]).schema

val res_df = df.select($"id",$"type",$"key",from_json($"value",schema).as("s")).select("id","type","key","s.*")

但现在我需要首先将它放在“value”列数据上,然后从json读取所有新生成的列。有人能建议应该应用哪些代码更改吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题