2014-04-29 75 views
3

我需要在我的mapreduce作業中使用2個元素的「元組」作爲鍵。Tuple作爲Hadoop映射器中的鍵

I.e.我希望我的map任務輸出對(first_key,second_key), value

我使用ArrayWritable試過,但在運行我的代碼後,我得到了一個錯誤,它原來是ArrayWritable是不適合這樣的任務,因爲它沒有實現WritableComparable (不管它的意思)等等,不能用作關鍵。

奇怪的是,我找不到任何「正確」的解決方案,我的問題將無需附加任何字符串即可100%工作。有什麼建議麼?

回答

2

MapReduce作業中的任何鍵必須實現WritableComparable而不是ArrayWritable的情況。

它也必須是Comparable,以便Hadoop可以對(鍵,值)對進行排序。 所以在你的情況下,一個解決方案可以是創建你自己的類,實現WritableComparable

1

如果你不想實施WritableComparable你可以使用new Text(key1.toString() + "\t" + key2.toString())作爲關鍵。