Dictionary 配置单元-将行分组到映射中

Dictionary 配置单元-将行分组到映射中,dictionary,hive,grouping,Dictionary,Hive,Grouping,我有一张这样的桌子 Col1 Col2 Col3 A 1 word1 A 2 word2 A 3 word3 A 4 word4 B 1 word1 B 3 word3 我想按col1对col2和col3进行分组,但要将col2和col3保存在地图中,如下所示: Col1 map(col2, col3) A [(1, word1), (2, word2)

我有一张这样的桌子

Col1   Col2   Col3
A      1      word1
A      2      word2
A      3      word3
A      4      word4
B      1      word1
B      3      word3
我想按col1对col2和col3进行分组,但要将col2和col3保存在地图中,如下所示:

Col1   map(col2, col3)
A      [(1, word1), (2, word2), (3, word3), (4, word4)]
B      [(1, word1), (3, word3)]
我知道有一种方法可以通过一个数组来实现这一点,如下所示:

但是我想知道这是否可以通过map(键/值对)实现。

在BrickHouse中使用“collect”UDF


您还可以将地图与“union_map”UDAF合并

它不喜欢分组中的某些内容<代码>蜂巢>创建表t1作为选择A,由A从t2组收集(B,C);失败:SemanticException[Error 10025]:第1:35行表达式不在GROUP BY key'C'中,我也用
GROUP BY A,C
进行了尝试,但仍然给出了相同的错误。请确保BrickHouse jar在您的配置单元AUX_jar中,并且您已经通过寻源BrickHouse.hql定义了BrickHouse UDF。即。。。创建临时函数collect作为“brickhouse.udf.collect.CollectUDAF”<代码>创建临时函数collect作为'brickhouse.udf.collect.CollectUDAF'成功了
select col1, collect( col2, col3 )
from mytable
group by col1