我需要幫助解決Hadoop問題。
在我的Java系統中,我有一個創建n記錄的函數。顯然,每條記錄都是一行要寫入Hadoop中的文本文件。如何在單個Hadoop節點上寫入多個記錄
的問題是:
我怎麼能保存所有的ñ記錄在同一個Hadoop的節點?換句話說,我希望記錄看起來像一個獨特的記錄,可以肯定的是,如果這些記錄中的一個(或其副本之一)在一個節點上,那麼當然其他n-1記錄也在同一個節點上。
例如,假設我的函數創建:
record1: 5 los angeles rainy
record2: 8 new york sunny
record3: 2 boston rainy
當我在Hadoop中的文本文件追加這三個記錄(三排),就可能發生RECORD1去節點1,RECORD2進入到node2 record3進入節點3。我想知道是否有辦法確保所有三條記錄都存儲在同一個節點上,例如node2,並且它們不存儲在不同的節點上。
感謝您的關注。
聽起來像你可能想要一個自定義的分區,以確保給定的鍵模式結束在一個特定的減速器。不過,我認爲爲這個問題增加更多的清晰度可以幫助人們更好地理解你的問題 – jtravaglini
我已經編輯它,對不起,如果我沒有解釋我 – user2811222
我可能仍然有點困惑你的問題,所以我很抱歉,如果這沒有幫助。如果將縮減器的數量設置爲1,則可以保證將所有記錄寫入相同的文件,但需要耗費更長時間才能完成工作。否則,您可以編寫一個自定義分區程序,該分區程序將指定滿足特定條件的鍵最終以特定的縮減程序結束(即一個文件中的5和8,另一個文件中的2和8)。然而,這些文件將在HDFS中,因此無論您選擇哪個選項,都會在多個節點上進行復制。 – jtravaglini