我在考慮在hadoop中構建一個小測試應用程序以獲取系統的掛起。在將值發送給reducer之前對值進行排序
我想到的應用程序將在統計領域。 我想從我的reducer函數(其中我必須假設可能有大量值用於某些鍵)中得到「每個鍵的10個最差值」。
我的計劃是,進入我的減速機的價值基本上是「實際價值」和「實際價值的質量/相關性」的組合。 基於相關性,我「簡單地」想要採用10個最差/最佳值並從減速器輸出它們。
我該如何去做(假設特定鍵的數量巨大)? 有沒有一種方法可以在將它們發送到reducer之前對所有值進行排序(並且在讀完第一個10時停止讀取輸入)或者必須以不同的方式完成這些操作?
有人可以在這裏指出我可以看一看示例代碼嗎?
更新:我發現了兩個有趣的問題吉拉和HADOOP-485HADOOP-686。
任何人都有關於如何在Hadoop 0.20 API中使用它的代碼片段?
嗯,據我瞭解合併的目的是爲「這是一個特定節點上運行的部分減速」。在那個時候我不能截斷結果,因爲我不知道當時的價值的總體「質量」。 – 2009-10-01 10:13:03
更新:有趣的建議。這樣做(組合已經截斷的子集)通常會導致與「確切」的做法不同的輸出。這對我的情況可能會足夠好。我會考慮的。謝謝。 – 2009-10-01 20:05:54
你能解釋爲什麼這會導致不同的輸出?我認爲,全球排名前10位的項目肯定包含在每個分區的前10項(可能是前3名,後2名,前5名 - 但他們都在那裏)。 – SquareCog 2009-10-01 21:02:55