SQL データフレームdf
が次のようになっているとします。
| id | v1 | v2 |
|----+----+----|
| 1 | 0 | 3 |
| 1 | 0 | 3 |
| 1 | 0 | 8 |
| 4 | 1 | 2 |
出力を次のようにしたい:
| id | v1 | list(v2) |
|----+----+--------------|
| 1 | [0] | [3,3,8] |
| 4 | [1] | [2] |
Hive を使用せずに SQL データフレームでこれを行う最も簡単な方法は何ですか?
1) どうやら、Hive のサポートにより、関数を簡単に使用collect_set()
およびcollect_list()
集約できます。しかし、これらの関数はプレーンな Spark SqlContext では機能しません。
2) 別の方法として UDAF を作成することもできますが、必要なコードの量を考えると、このような単純な集約にはやり過ぎのようです。
3) df.rdd を使用してからgroupBy()
関数を使用できます。これが私の最後の手段であります。実際にRDDをDFに変換してデータ操作を簡単にしましたが、明らかにそうではありません...
私が見逃した他の簡単な方法はありますか?