如何在Spark DataFrame 中拆分複雜的資料結構
在Spark DataFrame 中,可以使用結構體和映射等複雜資料結構來儲存有效地嵌套資料。然而,可能有必要展平這些結構以直接使用各個元素。
展平嵌套結構
要提取結構體的嵌套字段,col函數可以與 * 通配符組合。例如,考慮以下資料框架構:
|-- data: struct (nullable = true) | |-- id: long (nullable = true) | |-- keyNote: struct (nullable = true) | | |-- key: string (nullable = true) | | |-- note: string (nullable = true) | |-- details: map (nullable = true) | | |-- key: string | | |-- value: string (valueContainsNull = true)
要展平此結構並建立新的資料框,請使用:
df.select(df.col("data.*"))
這將建立具有以下展平結構的資料框:
|-- id: long (nullable = true) |-- keyNote: struct (nullable = true) | |-- key: string (nullable = true) | |-- note: string (nullable = true) |-- details: map (nullable = true) | |-- key: string | |-- value: string (valueContainsNull = true)
展平嵌套地圖
類似地,可以使用以下語法展平嵌套地圖:
df.select(df.col("data.details").as("map_details"))
這將建立一個資料框將展平的地圖作為名為「map_details」的新欄位。該列將具有以下結構:
|-- map_details: map (nullable = true) | |-- key: string | |-- value: string (valueContainsNull = true)
以上是如何扁平化 Spark DataFrame 中的複雜資料結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!