Hive-将行分组为地图

mai*_*aia 5 grouping dictionary hive

我有这样的桌子

Col1   Col2   Col3
A      1      word1
A      2      word2
A      3      word3
A      4      word4
B      1      word1
B      3      word3
Run Code Online (Sandbox Code Playgroud)

我想按col1对col2和col3进行分组,但将col2和col3保留在地图中,如下所示:

Col1   map(col2, col3)
A      [(1, word1), (2, word2), (3, word3), (4, word4)]
B      [(1, word1), (3, word3)]
Run Code Online (Sandbox Code Playgroud)

我知道有一种方法可以只用一个数组来做到这一点,如下所示:在此行的数组中对配置单元行进行分组

但是我想知道使用映射(键/值对)是否可行。

Jer*_*nks 3

在 BrickHouse 中使用“collect”UDF http://github.com/klout/brickhouse

select col1, collect( col2, col3 )
from mytable
group by col1
Run Code Online (Sandbox Code Playgroud)

您还可以使用“union_map”UDAF 合并地图

  • 确保 BrickHouse jar 位于您的 HIVE_AUX_JARS 中,并且您已通过采购 brickhouse.hql 定义了 brickhouse UDF。即...创建临时函数收集为“brickhouse.udf.collect.CollectUDAF”; (2认同)