Spark データフレームのネストされた構造体のフラット化
データフレームに複雑なネストされた構造が含まれており、それらのフラット化が必要になる場合があります。次の構造を持つデータフレームを考えます:
|-- 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)
目標は、この構造を平坦化し、次の単純化された構造を持つ新しいデータフレームを作成することです:
|-- 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)
Spark は明示的に提供しません。構造体の「explode」関数の場合、Spark 1.6 以降では次のメソッドを使用して目的の結果を達成できます:
df.select(df.col("data.*"))
あるいは、「data」構造体の特定のフィールドのみが必要な場合は、次の構文を使用できます:
df.select(df.col("data.id"), df.col("data.keyNote"), df.col("data.details"))
これらの手法を利用すると、Spark データフレーム内の複雑なネストされた構造体を平坦化し、データのさらなる分析と操作が可能になります。
以上がSpark データフレームでネストされた構造体をフラット化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。