如何在Hadoop Mapreduce中使用MultithreadedMapper类?

时间:2012-03-18 17:26:12

标签: java hadoop mapreduce

我在新的Hadoop版本中遇到过MultithreadedMapper类,文档说它可以用来代替传统的(单线程)映射器类。 但我没有遇到任何使用这个新类的演示示例。 另外,我会更高兴使用setNumberOfThreads()方法。 使用此代码的任何代码示例?

提前致谢

1 个答案:

答案 0 :(得分:8)

为您提供的小代码段:

Configuration conf = new Configuration();
Job job = new Job(conf);
job.setMapperClass(MultithreadedMapper.class);
conf.set("mapred.map.multithreadedrunner.class", WebGraphMapper.class.getCanonicalName());
conf.set("mapred.map.multithreadedrunner.threads", "8");
job.setJarByClass(WebGraphMapper.class);
// rest ommitted
job.waitForCompletion(true);

我认为这是非常自我解释的。您正在使用多线程映射器作为主类,然后配置它必须运行的类(您的真实映射器)。 还有这些方便的静态方法可以为您完成此配置。通话可能如下所示:

MultithreadedMapper.setMapperClass(job, WebGraphMapper.class);
MultithreadedMapper.setNumberOfThreads(job, 8);