在Hive中,是否可以在group by之后连接字符串字段?

7

我正在评估Hive,并需要在group by之后进行一些字符串字段的拼接。我发现了一个名为“concat_ws”的函数,但看起来我必须明确列出要连接的所有值。我想知道我是否可以在Hive中使用concat_ws做类似这样的事情。这里有一个例子。所以我有一个名为“my_table”的表,它有两个名为country和city的字段。我希望每个国家只有一条记录,每条记录都有两个字段-国家和城市:

select country, concat_ws(city, "|") as cities
from my_table
group by country

在Hive中是否可行?我现在使用的是CDH5的Hive 0.11版本。
1个回答

5
在数据库管理中,聚合函数是将多行的值根据某些条件分组在一起作为输入,以形成单个更有意义或更重要的值的函数,例如一个集合、一个袋子或一个列表。
引用来源:Aggregate function - Wikipedia Hive的开箱即用的聚合函数列在以下网页上:
内置聚合函数(UDAF - 用户定义的聚合函数) 因此,在Hive 0.11中,唯一的内置选项(对于Hive 0.13及以上版本,您可以使用collect_list)是:
array collect_set(col) 如果每个country没有重复的city记录(返回消除了重复元素的对象集),那么这将满足您的请求。否则,请在Hive外创建自己的UDAF或聚合。
编写UDAF的参考文献:
- 编写GenericUDAF:教程 - Hive插件 - 创建/删除函数

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接