Hive中group by后是否可以连接字符串字段

2024-05-02

我正在评估 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


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

Source: 聚合函数 - 维基百科 http://en.wikipedia.org/wiki/Aggregate_function

Hive 开箱即用聚合函数列于以下网页:
内置聚合函数(UDAF - 用户定义的聚合函数) https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-Built-inAggregateFunctions(UDAF)

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

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

编写UDAF参考:

  • 编写通用 UDAF:教程 https://cwiki.apache.org/confluence/display/Hive/GenericUDAFCaseStudy
  • Hive插件 https://cwiki.apache.org/confluence/display/Hive/HivePlugins
  • 创建/删除功能 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/DropFunction
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive中group by后是否可以连接字符串字段 的相关文章

随机推荐