Вызов job.setOutputKeyClass( NullWritable.class );
будет устанавливать типы, ожидаемые как выходные данные как на карте, так и на фазах уменьшения.
Если ваш Mapper испускает разные типы, чем редуктор, вы можете установить типы, испускаемые преобразователем, с помощью JobConf
setMapOutputKeyClass()
и setMapOutputValueClass()
.
Что касается вашего второго вопроса, то по умолчанию InputFormat
TextInputFormat
. Это рассматривает каждую строку каждого входного файла как отдельную запись и не выполняет синтаксический анализ. Вы можете вызвать эти методы, если вам нужно обработать ваш ввод в другом формате, вот несколько примеров:
InputFormat | Description | Key | Value
--------------------------------------------------------------------------------------------------------------------------------------------------------
TextInputFormat | Default format; reads lines of text files | The byte offset of the line | The line contents
KeyValueInputFormat | Parses lines into key, val pairs | Everything up to the first tab character | The remainder of the line
SequenceFileInputFormat | A Hadoop-specific high-performance binary format | user-defined | user-defined
Экземпляр по умолчанию OutputFormat
- TextOutputFormat
, который пишет (ключ, значение ) пары на отдельных строках текстового файла. Некоторые примеры ниже:
OutputFormat | Description
---------------------------------------------------------------------------------------------------------
TextOutputFormat | Default; writes lines in "key \t value" form
SequenceFileOutputFormat | Writes binary files suitable for reading into subsequent MapReduce jobs
NullOutputFormat | Disregards its inputs
(источник: Другое учебное пособие для разработчиков Yahoo )