私は、複数の列があり、それらのうちのいくつかが構造体であるDataFrameを持っています。私はbaz
の機能をbaz
を置き換えるために、列baz
にUserDefinedFunction
を適用したいが、私はそれを行う方法を見つけ出すことはできません。このSpark SQL withColumnを入れ子にしました
root
|-- foo: struct (nullable = true)
| |-- bar: string (nullable = true)
| |-- baz: string (nullable = true)
|-- abc: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- def: struct (nullable = true)
| | | |-- a: string (nullable = true)
| | | |-- b: integer (nullable = true)
| | | |-- c: string (nullable = true)
ような何か。ここでは所望の出力の一例であるDataFrame.withColumn
のみネストした列の一番上のレベルの列に動作しますが、いないように見えます
root
|-- foo: struct (nullable = true)
| |-- bar: string (nullable = true)
| |-- baz: int (nullable = true)
|-- abc: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- def: struct (nullable = true)
| | | |-- a: string (nullable = true)
| | | |-- b: integer (nullable = true)
| | | |-- c: string (nullable = true)
(baz
が今int
であることに注意してください)。私はこの問題に対してScalaを使用しています。
誰かがこれで私を助けることができますか?簡単だ
おかげ
これは正しい軌道にあると思いますが、理想的には、str内のすべての列名uct。 – Jon
@Jon私の編集を参照 –
これはうまくいくようですが、簡単にサブカラムの名前を置き換えることはできません。 – Jon