[英]Parsing Nested JSON column in Spark
我有以下示例數據,作為數據框
id|data
1,{"a":["xyz","x"],"b":["abc","ab"]}
2,{"a":["zy","y"],"b":["ac","bc"]}
這是我的預期輸出:
id|details
1,abc
2,ac
這是我到目前為止所擁有的,
dataframe.withColumn("details",from_json($"data",StructType(Seq(StructField("b",ArrayType(StringType),true)))))
這是我現在得到的輸出
1,[abc,ab]
2,[ac,bc]
另外,這只是一個示例,我有100多個列,因此不能使用select子句。 想要使用withColumn解決此問題。
假設您想擁有b
數組的第一個元素,根據已經計算出的details
列,只需選擇b
的第一個元素:
dataframe.withColumn("details", expr("details.b[0]"))
您也可以直接在from_json
的結果上使用getField
和getItem
函數
dataframe.withColumn("details",from_json($"data",StructType(Seq(StructField("b",ArrayType(StringType),true)))).getField("b").getItem(0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.