我写了2个映射器Map1和Map2
Map1-读取HDFS中的seq文件并对其进行处理。
Map2-从HBASE读取并产生与Map1相同的键值对。
最后,我将它们合并到ReducerAll中。
问题是只有一个映射程序正在运行,并且该作业可以完成而不会发生任何类型的错误。只有最后一个映射器正在运行(即TableMapReduceUtil
)。如果我交换行TableMapReduceUtil
和MultipleInputs
,则最后一个即MultipleInputs
映射器运行。
我在这里做错了什么?两种情况都不会引发任何错误。我还使用addCacheFile()
读取了2个文件进行处理,但是我猜这里没关系。
Job job3 = Job.getInstance(config, "Test");
if (true) {
job3.setJarByClass(Main.class);
job3.setMapOutputKeyClass(ImmutableBytesWritable.class);
job3.setMapOutputValueClass(ImmutableBytesWritable.class);
job3.setOutputKeyClass(ImmutableBytesWritable.class);
job3.setOutputValueClass(ImmutableBytesWritable.class);
job3.getConfiguration().set("StartDate", c_startDate);
job3.getConfiguration().set("EndDate", c_endDate);
job3.addCacheFile(new URI(args[8]));
job3.getConfiguration().set("abc", args[8].substring(args[8].lastIndexOf("/") + 1));
job3.addCacheFile(new URI(args[9]));
job3.getConfiguration().set("xyz", args[9].substring(args[9].lastIndexOf("/") + 1));
job3.setReducerClass(ReducerAll.class);
job3.setOutputFormatClass(SequenceFileOutputFormat.class);
job3.setNumReduceTasks(10);
Scan scan = new Scan();
scan.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, Bytes.toBytes("hbasetable"));
scan.setCaching(300);
scan.setCacheBlocks(false);
MultipleInputs.addInputPath(job3, new Path(args[6]), SequenceFileInputFormat.class, Map1.class);
TableMapReduceUtil.initTableMapperJob(
"hbasetable",
scan,
Map2.class,
ImmutableBytesWritable.class,
ImmutableBytesWritable.class,
job3);
FileOutputFormat.setOutputPath(job3, new Path(args[7]));
job3.waitForCompletion(true);
if (!job3.waitForCompletion(true)) {
return (1);
}
最佳答案
我认为该行为是由于以下两行:
MultipleInputs.addInputPath(job3, new Path(args[6]), SequenceFileInputFormat.class, Map1.class);
TableMapReduceUtil.initTableMapperJob(
"hbasetable",
scan,
Map2.class,
ImmutableBytesWritable.class,
ImmutableBytesWritable.class,
job3);
Map1
中的映射器将与Map2
不同。 Map1
是Mapper
,Map2
是TableMapper
附言:-请让我知道这是否不正确,我尚未证实我在机器上介绍的理解。
关于java - 两个具有多个数据源的映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36698737/