2014-04-29 134 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())作为关键。