我試圖通過DataFrames從嵌套JSON獲取列名稱。下面的架構給出:Spark獲取嵌套json的列名稱
root
|-- body: struct (nullable = true)
| |-- Sw1: string (nullable = true)
| |-- Sw2: string (nullable = true)
| |-- Sw3: string (nullable = true)
| |-- Sw420: string (nullable = true)
|-- headers: struct (nullable = true)
| |-- endDate: string (nullable = true)
| |-- file: string (nullable = true)
| |-- startDate: string (nullable = true)
我可以得到列名「體」和「頭」與df.columns(),但是當我試圖讓從身體(列名前:SW1,SW2 ,...)與df.select(「body」)。列總是給我身體專欄。
有什麼建議嗎? :)
謝謝邁克爾。它會幫助我很多,但我使用的是java。你有任何想法在java中做到這一點?我對scala感到不舒服... –
所以我嘗試在java中做到這一點。如果我理解你的代碼,你可以在StructTypes上使用方法fields(),然後在fields()返回的每個StructTypes上使用findFields()。使用Java API,如果我在StructType上使用fields(),它將返回一個FieldType,所以我無法在其上使用findFields ... –
好吧,我成功地從body獲取列值。我只需要將我的StructField轉換爲DataType,然後調用它的fields()。非常感謝邁克爾:) –