我想按一个给定的字段进行分组,并得到带有分组字段的输出。下面是一个例子,我正在努力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),但这可能是一个非常耗时的选项。
2条答案
按热度按时间hwamh0ep1#
collect\u set实际上是按预期工作的,因为按定义的集合是定义良好的不同对象的集合,即对象在集合中只出现一次或根本不出现。
a7qyws3x2#
内置聚合函数
collect_set
(在这里涂)让你几乎得到你想要的。它实际上对您的示例输入有效:不幸的是,它也删除了重复的元素,我想这不是你想要的行为。我觉得奇怪
collect_set
存在,但没有保留副本的版本。显然有人也这么想。看起来上面和第二个答案会给你你需要的udaf。