如何通过操作符从配置单元组中获取元素的数组/包?

a2mppw5e  于 2021-06-24  发布在  Pig
关注(0)|答案(2)|浏览(261)

我想按一个给定的字段进行分组,并得到带有分组字段的输出。下面是一个例子,我正在努力achieve:-
假设一个名为“sample\u table”的表有两列below:-

F1  F2
001 111
001 222
001 123
002 222
002 333
003 555

我想写一个配置单元查询,它将给出下面的output:-

001 [111, 222, 123]
002 [222, 333]
003 [555]

在pig中,这可以很容易地通过以下方法实现this:-

grouped_relation = GROUP sample_table BY F1;

有没有人能建议在Hive里有没有一个简单的方法?我能想到的是为此编写一个用户定义函数(udf),但这可能是一个非常耗时的选项。

hwamh0ep

hwamh0ep1#

collect\u set实际上是按预期工作的,因为按定义的集合是定义良好的不同对象的集合,即对象在集合中只出现一次或根本不出现。

a7qyws3x

a7qyws3x2#

内置聚合函数 collect_set (在这里涂)让你几乎得到你想要的。它实际上对您的示例输入有效:

SELECT F1, collect_set(F2)
FROM sample_table
GROUP BY F1

不幸的是,它也删除了重复的元素,我想这不是你想要的行为。我觉得奇怪 collect_set 存在,但没有保留副本的版本。显然有人也这么想。看起来上面和第二个答案会给你你需要的udaf。

相关问题