带resultserialization的multitableinput mapreduce

z8dt9xmd  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(169)

我知道在使用单个输入表的情况下会使用结果序列化。

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

有什么想法我可以实现同样的同时使用多点输入(多个扫描作为输入)?

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

运行mr作业时出现以下错误:
info mapreduce.job:任务id:尝试\u 1492475015807 \u 0003 \u m \u000003 \u 2,状态:失败错误:java.lang.nullpointerexception at org.apache.hadoop.mapred.maptask$mapoutputbuffer.init(maptask)。java:988)在org.apache.hadoop.mapred.maptask.createsortingcollector(maptask。java:391)在org.apache.hadoop.mapred.maptask.access$100(maptask。java:80)在org.apache.hadoop.mapred.maptask$newoutputcollector.(maptask。java:675)在org.apache.hadoop.mapred.maptask.runnewmapper(maptask。java:747)在org.apache.hadoop.mapred.maptask.run(maptask。java:340)在org.apache.hadoop.mapred.yarnchild$2.run(yarnchild。java:168)位于javax.security.auth.subject.doas(subject)的java.security.accesscontroller.doprivileged(本机方法)。java:422)在org.apache.hadoop.security.usergroupinformation.doas(用户组信息。java:1614)在org.apache.hadoop.mapred.yarnchild.main(yarnchild。java:163)

dpiehjr4

dpiehjr41#

我能度过这个阶段。我在作业配置中显式指定了resultserialization类(但必须在创建作业示例之前完成)。

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

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

相关问题