我需要在mapreduce作业中使用2个元素的“元组”作为键。
即。我希望我的地图任务输出(first_key,second_key), value
我尝试使用ArrayWritable
,但在运行我的代码后,我遇到了错误,结果发现ArrayWritable
不适合此类任务,因为它没有实现{{1} }(无论它意味着什么)因此,不能用作密钥。
奇怪的是,我无法找到任何“正确”的解决方案来解决我的问题,该解决方案100%无法附加任何字符串。有什么建议吗?
答案 0 :(得分:2)
MapReduce作业中的任何键都必须实现WritableComparable ,而不是ArrayWritable
。
它也必须是Comparable
,以便Hadoop可以对(键,值)对进行排序。
因此,在您的情况下,解决方案可能是创建自己的类来实现WritableComparable
。
答案 1 :(得分:1)
如果您不想实施WritableComparable
,可以使用new Text(key1.toString() + "\t" + key2.toString())
作为密钥。