我有一個輸入表如下所示:
我想要做的是排序的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 –