2010-01-31 97 views
1

在Apache Hadoop map-reduce程序中,在映射器的輸出中使用sets/lists作爲鍵的選項有哪些?在Hadoop中爲中間鍵使用set/list數據類型

我最初的想法是使用ArrayWritable作爲鍵類型,但這是不允許的,因爲該類不執行WritableComparable。我是否需要定義一個自定義類,或者是否有其他一些類似Hadoop庫中的類可以充當鍵?

+0

你可以給你的使用情況下,你使用列表/設置爲映射的關鍵字 – 2014-04-23 08:23:06

+0

@PradyumnaMohapatra我的問題已經超過四年了,但我的中間密鑰是一組產品一起購買,中間值是這個子集的訂單ID。然後,「減少」方法將計算每個不同產品組的出現。 – 2014-04-25 12:22:15

回答

1

我以爲ArrayWritable實現了Writable,它是WritableComparable的超級接口。

你子類ArrayWritable?根據文檔,您需要對其進行子類化,以便可以設置數組要存儲的對象的類型。例如:

public class TextArrayWritable extends ArrayWritable { 

    public TextArrayWritable() { 
     super(Text.class); 
    } 
} 

結帳ArrayWritable javadocs

+1

'ArrayWritable'實現'Writable'而不是'WritableComparable',顯然後者是用於鍵的類所必需的。我可以繼承'ArrayWritable'並添加對'WritableComparable'接口的支持,但這是必要的嗎? – 2010-01-31 21:31:28

+0

對不起,看起來更接近。關鍵需要WritableComparable,因爲hadoop需要能夠對鍵進行排序。所以,是的,你可以實現WritableComparable接口,它只需要你重寫compareTo方法。希望這可以幫助。 – 2010-01-31 21:51:52

相關問題