我有一个输入表如下所示:
我想要做的是排序的weight
每个name
每个id
和type
,然后保留前10名和相应的权重,将它们转换为字符串并连接它们。 我的输出表应该是这样的:
分析
如果我写一个映射精简程序,地图键应该id
和type
,name
和weight
应该是地图的价值。在reducer中,我可以使用HashMap
将type
作为K
,name
和weight
作为V
,然后执行一些排序和字符串连接以实现我的目标。
问题
但现在我需要写一个UDAF,并用它来与group by id
做到这一点。我是UDAF的新手,我想知道每种方法(init
,iterate
,merge
,terminate
)我应该怎么做? init
设置输出字段吗?哪个部分应该进行分类?哪部分应该做字符串连接?
嘿安娜贝尔 - 不知道这是否有帮助,但我写了一个可能有用的UDAF函数指南 - https://blog.matthewrathbone.com/2015/07/27/ultimate-guide-to-writing-自定义功能换hive.html –