【问题标题】:Is it possible to concat a string field after group by in Hive是否可以在 Hive 中分组后连接字符串字段
【发布时间】:2015-05-03 05:32:07
【问题描述】:

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

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

这在 Hive 中可行吗?我现在正在使用来自 CDH5 的 Hive 0.11

【问题讨论】:

    标签: hive cloudera-cdh


    【解决方案1】:

    在数据库管理中,聚合函数是一种函数,其中多行的值被组合在一起作为特定标准的输入,以形成具有更重要意义或度量的单个值,例如集合、袋子或列表。

    来源:Aggregate function - Wikipedia

    Hive 开箱即用的聚合函数列在以下网页上:
    Built-in Aggregate Functions (UDAF - user defined aggregation function)

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

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

    编写UDAF的参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-20
      • 2011-04-29
      • 1970-01-01
      • 2013-12-07
      • 2014-07-19
      • 2018-06-27
      • 2022-09-30
      • 2011-04-24
      相关资源
      最近更新 更多