在Apache Hadoop map-reduce程序中,在映射器的輸出中使用sets/lists作爲鍵的選項有哪些?在Hadoop中爲中間鍵使用set/list數據類型
我最初的想法是使用ArrayWritable
作爲鍵類型,但這是不允許的,因爲該類不執行WritableComparable
。我是否需要定義一個自定義類,或者是否有其他一些類似Hadoop庫中的類可以充當鍵?
在Apache Hadoop map-reduce程序中,在映射器的輸出中使用sets/lists作爲鍵的選項有哪些?在Hadoop中爲中間鍵使用set/list數據類型
我最初的想法是使用ArrayWritable
作爲鍵類型,但這是不允許的,因爲該類不執行WritableComparable
。我是否需要定義一個自定義類,或者是否有其他一些類似Hadoop庫中的類可以充當鍵?
我以爲ArrayWritable實現了Writable,它是WritableComparable的超級接口。
你子類ArrayWritable?根據文檔,您需要對其進行子類化,以便可以設置數組要存儲的對象的類型。例如:
public class TextArrayWritable extends ArrayWritable {
public TextArrayWritable() {
super(Text.class);
}
}
'ArrayWritable'實現'Writable'而不是'WritableComparable',顯然後者是用於鍵的類所必需的。我可以繼承'ArrayWritable'並添加對'WritableComparable'接口的支持,但這是必要的嗎? – 2010-01-31 21:31:28
對不起,看起來更接近。關鍵需要WritableComparable,因爲hadoop需要能夠對鍵進行排序。所以,是的,你可以實現WritableComparable接口,它只需要你重寫compareTo方法。希望這可以幫助。 – 2010-01-31 21:51:52
你可以給你的使用情況下,你使用列表/設置爲映射的關鍵字 – 2014-04-23 08:23:06
@PradyumnaMohapatra我的問題已經超過四年了,但我的中間密鑰是一組產品一起購買,中間值是這個子集的訂單ID。然後,「減少」方法將計算每個不同產品組的出現。 – 2014-04-25 12:22:15