hadoop - 多种自定义可写格式

标签 hadoop writable

我有多个输入源,并且使用了Sqoop的codegen工具为每个输入源生成自定义类

public class SQOOP_REC1 extends SqoopRecord  implements DBWritable, Writable

public class SQOOP_REC2 extends SqoopRecord  implements DBWritable, Writable

在 map 方面,根据输入源,我相应地创建了上述2类的对象。

我将键的类型设置为“文本”,并且由于我有2种不同类型的值,因此我将值输出类型保留为“可写”。

在归约方面,我将值类型接受为可写。
   public class SkeletonReduce extends Reducer<Text,Writable, Text, Text> {

public void reduce(Text key, Iterable<Writable> values, Context context) throws     IOException,InterruptedException {

   }
}

我也设定
job.setMapOutputValueClass(Writable.class);

在执行期间,它根本不会进入reduce函数。

有人可以告诉我是否可以这样做?如果是这样,我在做什么错?

最佳答案

您不能将Writable指定为输出类型。它必须是具体类型。所有记录都必须具有相同的(具体)键和值类型,即MapperReducer。如果需要其他类型,则可以创建某种混合的Writable,其中包含“A”或“B”。这有点丑陋,但是可以正常工作,例如在Mahout中就做了很多。

但是我不知道为什么这会使 reducer 不运行。根据此信息,这很可能是完全分开的,无法回答。

关于hadoop - 多种自定义可写格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10294944/

相关文章:

java - 输入大小为 ~ 2Mb 的 Hadoop mapreduce

permissions - XAMPP:[错误] InnoDB:innodb_system 数据文件 'ibdata1' 必须是可写的

java - 如何将 MapWritable 与 SequenceFile 一起使用? Hadoop

hadoop - 如何查看hbase数据库中使用的表?

java - 使用Map Reduce连接多个文件

xml - HDP 沙盒上的 Hive ADD JAR

java - Hadoop 序列化嵌套对象

hadoop - 将数据插入 Hive 分区表时失败 : SemanticException org. apache.hadoop.hive.ql.metadata.HiveException

hadoop - 使用命令行将 csv 文件放入 HDFS

synchronization - 如何修复 Perforce 错误 "Can' t clobber 可写文件”或 Perforce 错误消息 - 无法破坏可写文件