是否可以在Hive中分组之后连接字符串字段

kee*_*kee 7 hive cloudera-cdh

我正在评估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
Run Code Online (Sandbox Code Playgroud)

这可能在Hive中吗?我现在正在使用CDH5的Hive 0.11

Vya*_*yar 5

在数据库管理中,聚合函数是一种功能,其中将多行的值组合在一起,作为某些条件下的输入,以形成含义或度量更重要的单个值,例如一组,一个袋子或一个列表。

资料来源:汇总函数-维基百科

Hive的即用型聚合函数在以下网页上列出:
内置聚合函数(UDAF-用户定义的聚合函数)

因此,唯一的内置选项(对于Hive 0.11;对于Hive 0.13及更高版本,您可以使用collect_list)是:
array collect_set(col)

万一city每个记录都没有重复记录,此记录将回答您的请求country(返回消除了重复元素的一组对象)。否则,请在Hive之外创建自己的UDAF或聚合。

编写UDAF的参考: