我知道,如果我使用单个输入表,则使用结果序列化。
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() );
当使用单个输入表初始化映射器时,他的指定是如何指定的。如果我对此有进一步的发现,我一定会更新此答案,以便对可能需要它的其他人有用。