Anu*_*oop 16 sql hadoop hive apache-pig bigdata
我想按给定字段进行分组,并使用分组字段获取输出.以下是我想要实现的一个例子: -
想象一下名为'sample_table'的表,其中有两列如下: -
F1 F2
001 111
001 222
001 123
002 222
002 333
003 555
Run Code Online (Sandbox Code Playgroud)
我想编写Hive Query,它将提供以下输出: -
001 [111, 222, 123]
002 [222, 333]
003 [555]
Run Code Online (Sandbox Code Playgroud)
在猪中,这可以通过以下方式轻松实现: -
grouped_relation = GROUP sample_table BY F1;
Run Code Online (Sandbox Code Playgroud)
有人可以建议在Hive中有一个简单的方法吗?我能想到的是为此编写用户定义函数(UDF),但这可能是一个非常耗时的选项.
Dan*_*man 25
内置的聚合函数collect_set(在这里添加)几乎可以获得你想要的东西.它实际上适用于您的示例输入:
SELECT F1, collect_set(F2)
FROM sample_table
GROUP BY F1
Run Code Online (Sandbox Code Playgroud)
不幸的是,它也删除了重复的元素,我想这不是你想要的行为.我发现它collect_set存在奇怪,但没有版本可以保留重复.其他人显然也想到了同样的事情.看起来顶部和第二个答案将为您提供所需的UDAF.
| 归档时间: |
|
| 查看次数: |
24081 次 |
| 最近记录: |