我需要在mapreduce工作中使用2个元素的“元组”作为键。i、 我希望我的map任务输出一对 (first_key,second_key), value 我试过用 ArrayWritable ,但在运行我的代码后,我遇到了一个错误 ArrayWritable 不适合执行这样的任务,因为它不能执行 WritableComparable (不管是什么意思)所以,不能用作钥匙。奇怪的是,我找不到任何“正确”的解决方案,我的问题,将工作100%没有附加条件。有什么建议吗?
(first_key,second_key), value
ArrayWritable
WritableComparable
9o685dep1#
如果你不想实施 WritableComparable 你可以用 new Text(key1.toString() + "\t" + key2.toString()) 作为关键。
new Text(key1.toString() + "\t" + key2.toString())
wkftcu5l2#
mapreduce作业中的任何键都必须实现writeablecomparable,而不是 ArrayWritable .一定是的 Comparable 这样hadoop就可以对(键、值)对进行排序。所以在您的例子中,一个解决方案可以是创建自己的类来实现 WritableComparable .
Comparable
2条答案
按热度按时间9o685dep1#
如果你不想实施
WritableComparable
你可以用new Text(key1.toString() + "\t" + key2.toString())
作为关键。wkftcu5l2#
mapreduce作业中的任何键都必须实现writeablecomparable,而不是
ArrayWritable
.一定是的
Comparable
这样hadoop就可以对(键、值)对进行排序。所以在您的例子中,一个解决方案可以是创建自己的类来实现WritableComparable
.