假设我的 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 以使数据操作更容易,但显然不是......
还有其他我错过的简单方法吗?