元组作为Hadoop映射器中的关键

时间:2014-04-29 13:09:24

标签: java hadoop mapreduce

我需要在mapreduce作业中使用2个元素的“元组”作为键。

即。我希望我的地图任务输出(first_key,second_key), value

我尝试使用ArrayWritable,但在运行我的代码后,我遇到了错误,结果发现ArrayWritable不适合此类任务,因为它没有实现{{1} }(无论它意味着什么)因此,不能用作密钥。

奇怪的是,我无法找到任何“正确”的解决方案来解决我的问题,该解决方案100%无法附加任何字符串。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

MapReduce作业中的任何键都必须实现WritableComparable ,而不是ArrayWritable

它也必须是Comparable,以便Hadoop可以对(键,值)对进行排序。  因此,在您的情况下,解决方案可能是创建自己的类来实现WritableComparable

答案 1 :(得分:1)

如果您不想实施WritableComparable,可以使用new Text(key1.toString() + "\t" + key2.toString())作为密钥。