InputSplits в mapreduce

Я только начал изучать Mapreduce и у меня есть несколько вопросов, на которые я хочу получить ответы. Вот оно:

1) Случай 1: FileInputFormat в качестве формата ввода. Каталог, содержащий несколько файлов для обработки, является входным путем. Если у меня n файлов, все файлы меньше размера блока в кластере hadoop. Сколько расщеплений рассчитывается для карты, чтобы уменьшить работу?

2) Я расширяю FileInputFormat в классе, называемом MyFileInputFormat, и переопределяю isSplitable, чтобы всегда возвращать false. Входная конфигурация такая же, как указано выше. Получу ли я n сплитов в этом случае?

3) Если, скажем, 1 из n файлов будет немного больше, чем размер блока кластера, получу ли я n+1 разбиений во втором случае?

Заранее спасибо за помощь!

1 ответ

Начнем с Основы FileInputFormat

  1. FileInputFormat является абстрактным, поэтому вы не можете использовать его напрямую. "публичный абстрактный класс FileInputFormat"

  2. Предположим, вы используете InputFormat наподобие TextInputFormat (класс TextInputFormat расширяет FileInputFormat) и ответите на ваш вопрос.

  3. Логика splitMethod в FileInputFormat применима для каждого файла во входном пути, поэтому у вас будет "N" разбиений в заданиях MapReduce (Case1).

  4. В случае Case2 у вас все еще будет N разбиений, поскольку вы только что сообщили входному формату, чтобы не разбивать отдельные файлы. Но для каждого файла рассмотрим это как одно разбиение.

  5. В случае 3 у вас все еще будет N разделений, так как файлы не разделяются. Помните, что логика разделения применяется к отдельному файлу и не учитывает их вместе.

  6. CombineInputFormat - это то, что используется, если вы хотите объединить входные файлы во время логики разделения.

Другие вопросы по тегам