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