Я полностью запутался с API-интерфейсом Hadoop. (угадайте, что он все время меняется)
Если я не ошибаюсь, JobConf
был deprecated
, и вместо этого мы должны были использовать классы Job
и Configuration
для запуска задания уменьшения карты из java. похоже, что в недавно выпущенном hadoop 1.0.0
JobConf
больше не рекомендуется!
Итак, я использую классы заданий и конфигурации для запуска задания по уменьшению карты. Теперь мне нужно поместить выходные файлы редукторов в структуру папок на основе определенных значений, которые являются частью вывода моей карты. Я просмотрел несколько статей и обнаружил, что этого можно добиться с помощью класса OutputFormat
, но у нас есть этот класс в двух пакетах:
org.apache.hadoop.mapred and
org.apache.hadoop.mapreduce
В нашем объекте job
мы можем установить класс формата вывода следующим образом:
job.setOutputFormatClass(SomeOutputFormat.class);
Теперь, если SomeOutputFormat
extends
сказать org.apache.hadoop.mapreduce.lib.output.FileOutputFormat
, мы получим один метод с именем getRecordWriter();
, это никак не поможет переопределить выходной путь.
Есть еще один способ использования jobConf
, но он снова не работает с точки зрения установки классов mappers, reducers, partitions, sorting and grouping
.
Есть ли что-то очень очевидное, что я упускаю? Я хочу записать свой выходной файл сокращения в папку, основанную на значении. например, SomeOutputPrefix/Value1/Value2/realReduceFileName
Спасибо!