InputFormat
описывает спецификацию ввода задания Map-Reduce. Рамки Map-Reduce опирается на InputFormat задания на:
- Validate ввод-спецификация работы.
- Разбить входной файл (ы) на логический
InputSplits
, каждый из которых затем присваивается отдельному Mapper.
- Обеспечить реализацию
RecordReader
, которая будет использоваться для ввода записей ввода из логического InputSplit
для обработки Mapper.
InputSplit
представляет данные, подлежащие обработке отдельным лицом Mapper
.
Посмотрите на код FileInputFormat, чтобы понять, как работает сплит.
API:
public List<InputSplit> getSplits(JobContext job
) throws IOException {
RecordReader разбивает данные на пары ключ/значение для ввода в Mapper.
Существует несколько типов RecordReader
.
CombineFileRecordReader, CombineFileRecordReaderWrapper, ComposableRecordReader,
DBRecordReader, KeyValueLineRecordReader, SequenceFileAsTextRecordReader,
SequenceFileRecordReader
Чаще всего не используется один: KeyValueLineRecordReader
взглянуть на соответствующий вопрос SE для лучшего понимания о внутренностях чтения: How does Hadoop process records split across block boundaries?
я проверил RecordReader.java и InputSplit.java и есть нет фрагмент кода, который показывает любую подсказку некоторого типа, в то время как цикл, который читает до конца файла. – IFH
И RecordReader.java, и InputSplit.java - это интерфейсы, вы должны проверить реализацию любого входного формата, такого как TextInputFormat для класса, который реализует эти интерфейсы. – donut