我需要在mapreduce作业中使用一个由2个元素组成的"元组"作为键。
即,我希望我的地图任务输出一对(first_key,second_key), value
我尝试使用ArrayWritable
,但在运行代码后,我遇到了一个错误,结果发现ArrayWritable
不适合执行这样的任务,因为它没有实现WritableComparable
(无论它的意思是什么(,因此不能用作键。
奇怪的是,我找不到任何"正确"的解决方案来解决我的问题,它可以100%无条件地工作。有什么建议吗?
MapReduce作业中的任何键都必须实现WritableComparable,而ArrayWritable
则不然。
它也必须是Comparable
,这样Hadoop才能对(键,值(对进行排序。因此,在您的情况下,解决方案可以是创建自己的类来实现WritableComparable
。
如果不想实现WritableComparable
,可以使用new Text(key1.toString() + "t" + key2.toString())
作为键。