は、私は次のようなデータを持っていると言う:Sparkで分解された構造体に列を追加するには?
{"id":1, "payload":[{"foo":1, "lol":2},{"foo":2, "lol":2}]}
私はペイロードを爆発し、このように、それに列を追加したいと思います:
df = df.select('id', F.explode('payload').alias('data'))
df = df.withColumn('data.bar', F.col('data.foo') * 2)
しかし、これは3列のデータフレームのような結果になります。
id
data
data.bar
私が代わりにトップレベルの列を追加するので、爆発構造体に列を追加するにはどうすればよい
... data.bar
はdata
構造体の一部となることが期待?
スキーマを再構築し、 'select'を使うか、' udf'を使ってデータを変更する必要があります。これらのオプションについては、https://stackoverflow.com/questions/31615657/で詳しく説明しています。新しい構造体の列をデータフレームに追加する –
[データフレームに新しい構造体の列を追加する方法](https://stackoverflow.com/questions/31615657/how- Add-a-new-struct-column-to-a-dataframe) –