1

假设我的 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 以使数据操作更容易,但显然不是......

还有其他我错过的简单方法吗?

4

0 回答 0