0
我在包含JSON對象的數據框中有一列。對於我的數據框中的每一行,我想提取JSON,解析並抽出某些字段。一旦提取,我想將這些字段作爲新的列元素添加到行中。分解包含JSON的Spark Dataframe列
我看了看數據框可同時作爲foreach()
,flatMap()
和map()
,但一直沒能辨別哪些是更適合這種類型的處理的explode()
方法。
我在包含JSON對象的數據框中有一列。對於我的數據框中的每一行,我想提取JSON,解析並抽出某些字段。一旦提取,我想將這些字段作爲新的列元素添加到行中。分解包含JSON的Spark Dataframe列
我看了看數據框可同時作爲foreach()
,flatMap()
和map()
,但一直沒能辨別哪些是更適合這種類型的處理的explode()
方法。
地圖可能是你需要的。使用這個,你可以解析json,選擇你需要的字段,然後用這些附加列返回一個新行。
通常,map用於1:1的用戶定義函數(例如,每個輸入行有1個輸出行)。平面地圖用於1:n(其中每行可以返回任意數量的行)的用戶定義的函數。
David,感謝您的提示。即使地圖是1:1,它是否預計行長度保持一致? – dmux
輸出行不必與輸入行長度相同。但是對於數據框,所有行都必須具有相同的字段(因此所有輸出行必須具有相同的結構/相同的長度) – David
不是'map'首先將其轉換爲'RDD'嗎?您只需使用'withColumn'和'UDF'即可跳過轉換。 –