3
みましょう、私は次のようにデータフレームを持っていると言う:Sparkの配列列からフィールドのサブセットを選択する方法は?
case class SubClass(id:String, size:Int,useless:String)
case class MotherClass(subClasss: Array[SubClass])
val df = sqlContext.createDataFrame(List(
MotherClass(Array(
SubClass("1",1,"thisIsUseless"),
SubClass("2",2,"thisIsUseless"),
SubClass("3",3,"thisIsUseless")
)),
MotherClass(Array(
SubClass("4",4,"thisIsUseless"),
SubClass("5",5,"thisIsUseless")
))
))
スキーマは次のとおりです。
root
|-- subClasss: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- id: string (nullable = true)
| | |-- size: integer (nullable = false)
| | |-- useless: string (nullable = true)
私は、フィールドのサブセットのみを選択するための方法を探しています:配列のid
とsize
列subClasss
が、ネストされた配列構造を保持しています。 結果のスキーマは次のようになります。
root
|-- subClasss: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- id: string (nullable = true)
| | |-- size: integer (nullable = false)
私は
df.select("subClasss.id","subClasss.size")
を行うことを試みた。しかし、これは2列に配列subClasss
を分割:
root
|-- id: array (nullable = true)
| |-- element: string (containsNull = true)
|-- size: array (nullable = true)
| |-- element: integer (containsNull = true)
する方法があります元の構造を維持し、useless
フィールドを削除するだけですか?次のようなものがあります:
df.select("subClasss.[id,size]")
ありがとうございます。