2016-04-13 50 views
0

我在包含JSON對象的數據框中有一列。對於我的數據框中的每一行,我想提取JSON,解析並抽出某些字段。一旦提取,我想將這些字段作爲新的列元素添加到行中。分解包含JSON的Spark Dataframe列

我看了看數據框可同時作爲foreach()flatMap()map(),但一直沒能辨別哪些是更適合這種類型的處理的explode()方法。

回答

0

地圖可能是你需要的。使用這個,你可以解析json,選擇你需要的字段,然後用這些附加列返回一個新行。

通常,map用於1:1的用戶定義函數(例如,每個輸入行有1個輸出行)。平面地圖用於1:n(其中每行可以返回任意數量的行)的用戶定義的函數。

+0

David,感謝您的提示。即使地圖是1:1,它是否預計行長度保持一致? – dmux

+0

輸出行不必與輸入行長度相同。但是對於數據框,所有行都必須具有相同的字段(因此所有輸出行必須具有相同的結構/相同的長度) – David

+0

不是'map'首先將其轉換爲'RDD'嗎?您只需使用'withColumn'和'UDF'即可跳過轉換。 –