Я полностью сбит с толку API hadoop. (угадайте, что он постоянно меняется)
Если я не ошибаюсь, JobConf
был deprecated
, и вместо этого мы должны были использовать классы Job
и Configuration
для запуска задания по уменьшению карты из Java. похоже, что в недавно выпущенном hadoop 1.0.0
JobConf
больше не устарела!
Так что я использую Job и классы конфигурации для запуска карты уменьшить работу. Теперь мне нужно поместить выходные файлы редукторов в структуру папок на основе определенных значений, которые являются частью моего вывода карты. Я просмотрел несколько статей и обнаружил, что этого можно достичь с помощью класса 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
Спасибо!