2015-01-03 2 views
1

В одном из моих заданий mapreduce используется MultipleInputs. После выполнения задания я хочу удалить входные файлы. К сожалению, MultipleInputs имеет очень ограниченный API и не предоставляет функции FileInputFormat FileInputFormat.getInputPaths().Получение всех входных путей из MultipleInputs

Я посмотрел исходный код Hadoop, и похоже, что я должен получить все пути формы mapreduce.input.multipleinputs.dir.formats, но это всегда пусто для меня.

Конечно, я могу хранить все входные пути где-то «на стороне», но я уверен, что должен быть способ получить его из API Hadoops.

for(Path path : getParsedSitesToMerge(conf, crawlPath)) { 
       MultipleInputs.addInputPath(job, path, SequenceFileInputFormat.class, InjectLinkMapper.class); 
       System.out.println(path.toString()); 
       System.out.println(MultipleInputs.DIR_FORMATS + ": " + conf.get(MultipleInputs.DIR_FORMATS)); 
} 

выходы

file:/tmp/crawl1/link_db/links/parsed_1420300287148 
mapreduce.input.multipleinputs.dir.formats: null 
file:/tmp/crawl1/link_db/links/parsed_1420300308993 
mapreduce.input.multipleinputs.dir.formats: null 

ответ

0

См this часть кода MultipleInputs:

public static final String DIR_FORMATS = "mapreduce.input.multipleinputs.dir.formats"; 
public static void addInputPath(Job job, Path path, 
Class<? extends InputFormat> inputFormatClass) { 
     String inputFormatMapping = path.toString() + ";" + inputFormatClass.getName(); 
     Configuration conf = job.getConfiguration(); 
     String inputFormats = conf.get(DIR_FORMATS); 
     conf.set(DIR_FORMATS, 
      inputFormats == null ? inputFormatMapping : inputFormats + "," 
      + inputFormatMapping); 
     job.setInputFormatClass(DelegatingInputFormat.class); 
} 

Вы можете выяснить с помощью String mappers = conf.get("mapreduce.input.multipleinputs.dir.formats");, чтобы получить все пути, которые в сверху кода добавляется всякий раз, когда вам скажем, addInputPath из вашего кода драйвера.

+0

Это для меня тоже. Btw «отображен». не предлагая Haddoop 1? –

+0

Да, это так. Отредактировано то же самое, и даже я вижу то же самое 'mapreduce.input.multipleinputs.dir.formats' в Gen2, что и вы. Итак, как и где именно вы пытаетесь получить доступ к этому параметру? – SMA

+0

'conf.get (" mapreduce.input.multipleinputs.dir.formats ")' где conf - ссылка на «Конфигурация». Я также запускаю его из Netbeans. –

Смежные вопросы