簡體   English   中英

在Hadoop map-reduce中對聯接的數據進行分組

[英]Grouping joined data in Hadoop map-reduce

我有兩種不同類型的文件,一種是用戶列表。 它具有以下結構: UserID,Name,CountryID

第二種類型是訂單列表: OrderID,UserID,OrderSum

每個用戶都有很多訂單。 我需要編寫map-reduce hadoop作業(在Java中)並接收具有以下結構的輸出: CountryID,NumOfUsers,MinOrder,MaxOrder

對於我來說,編寫兩個不同的映射器(針對每種文件類型)和一個簡化器以通過UserID 合並來自兩個文件的數據並接收以下結構對我來說不是問題: UserID,CountryID,UsersMinOrder,UsersMaxOrder

但是我不明白如何按CountryID將數據分組?

我建議通過Pig或Hive運行此程序,因為您只需幾行就可以解決此類問題。

如果失敗,我將執行以下操作。 在聯接的數據上運行另一個MapReduce作業,然后執行以下操作:在映射器中,對於每個輸入拆分,請保留每個國家/地區ID的最小順序,最大順序和元組(具有唯一用戶ID的行)數量的標簽。 只有幾個國家/地區,因此您可以在整個地圖工作中將這些統計信息保留在內存中。 拆分結束時,將累積的統計信息輸出到以國家/地區ID為鍵的減速器。 然后,reducer可以簡單地合並每個拆分的匯總數據,以找到全局最大值,最小值和計數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM