多性input mapreduce与结果序列化



我知道,如果我使用单个输入表,则使用结果序列化。

TableMapReduceUtil.initTableMapperJob( tableName, scan, Mapper.class, Text.class, Result.class, job );

在使用MultipationInput(多次扫描作为输入(时,我如何实现同样的想法?

TableMapReduceUtil.initTableMapperJob( scans, SummaryMapper.class, Text.class, Result.class, job );

我在运行MR职位时会出现以下错误:

info mapreduce.job:任务ID: 状态:失败错误:java.lang.nullpointerexception atorg.apache.hadoop.mapred.maptask $ mapoutputbuffer.init(maptask.java:988( at org.apache.hadoop.mapred.maptask.createsortingcollector(mappask.java:391( at org.apache.hadoop.mapred.maptask.access $ 100(maptask.java:80( atorg.apache.hadoop.mapred.maptask $ newOutputCollector。(maptask.java:675( atrg.apache.hadoop.mapred.maptask.runnewmapper(maptask.java:747( atrg.apache.hadoop.mapred.maptask.run(maptask.java:340( at org.apache.hadoop.mapred.yarnchild $ 2.run(yarnchild.java:168( 在java.security.accesscontroller.doprivileged(本机方法( 在javax.security.auth.subject.doas(object.java:422( atrg.apache.hadoop.security.usergroupinformation.doas(userGroupInformation.java:1614( atorg.apache.hadoop.mapred.yarnchild.main(yarnchild.java:163(

我能够完成这个阶段。我在作业配置中明确指定了结果序列化类(但必须在创建作业实例之前完成(。

config.setStrings( "io.serializations", config.get( "io.serializations" ),
                    MutationSerialization.class.getName(), ResultSerialization.class.getName(),
                    KeyValueSerialization.class.getName() );

当使用单个输入表初始化映射器时,他的指定是如何指定的。如果我对此有进一步的发现,我一定会更新此答案,以便对可能需要它的其他人有用。

最新更新