java - 元组作为 Hadoop 映射器中的键

标签 java hadoop mapreduce

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

即我希望我的 map task 输出一对 (first_key,second_key), value

我尝试使用 ArrayWritable,但在运行我的代码后出现错误,结果证明 ArrayWritable 不适合这样的任务,因为它不适合这样的任务' t 实现 WritableComparable(无论它是什么意思),因此不能用作键。

奇怪的是,我无法为我的问题找到任何“正确”的解决方案,该解决方案将 100% 有效且没有任何附加条件。有什么建议吗?

最佳答案

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

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

关于java - 元组作为 Hadoop 映射器中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23365622/

相关文章:

java - 无法在hadoop3.1.3中运行jar文件

java - Result 类型的方法 raw() 已弃用

java - PowerMock 在测试类中抛出类未找到异常

java - Gradle 构建在不同项目上总是失败

java - 如何获取同一索引的多个子字符串?

java.lang.NoClassDefFoundError : org/slf4j/LoggerFactory in OSGi

Hadoop 2.6.2,start-dfs.sh 不启动 jobtacker 和 tasktracker

java - 带有cygwin noclassdefinition的Windows中的hadoop发现错误

java - hadoop:无法运行 mapreduce 作业

hadoop - 即使将映射器和化简器的数量设置为1,为什么配置单元仍将2个零件文件写入hdfs