Как использовать класс MultithreadedMapper в Hadoop Mapreduce? - PullRequest
4 голосов
/ 18 марта 2012

Я столкнулся с классом MultithreadedMapper в новой версии Hadoop, и в документации сказано, что его можно использовать вместо обычного (однопоточного) класса mapper. Но я не сталкивался ни с одним демонстрационным примером использования этого нового класса. Кроме того, я был бы счастлив использовать метод setNumberOfThreads (). Любой пример кода для использования этого?

Заранее спасибо

1 Ответ

8 голосов
/ 18 марта 2012

фрагмент кода для вас:

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);
...