我在Hadoop的新版本中发现了MultithreadMapper类,文档中说可以使用它来代替传统的(单线程)mapper类。但我没有遇到任何使用这个新类的演示示例。此外,我更愿意使用setNumberOfThreads()方法。有使用这个的代码示例吗?
提前感谢
适合您的小代码片段:
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);