Реализация FileInputFormat # isSplitable () .Тогда входные файлы не разделяются и обрабатываются по одному на карту.Обратите внимание, что время выполнения задания зависит от времени обработки самого большого входного файла, несмотря на то, что преобразователи выполняются параллельно.Кроме того, это может быть неэффективно, так как будет происходить много перетасовки данных между узлами.
import org.apache.hadoop.fs.*;
import org.apache.hadoop.mapred.TextInputFormat;
public class NonSplittableTextInputFormat extends TextInputFormat {
@Override
protected boolean isSplitable(FileSystem fs, Path file) {
return false;
}
}
Текущий API не позволяет обрабатывать весь каталог одним преобразователем.Возможно, вам придется написать свой InputFormat .Или же создайте список каталогов, которые нужно обработать, и передайте один каталог каждому обрабатываемому преобразователю, опять же, это неэффективно из-за перестановки данных между узлами.
Возвращаясь к редукторам, они работают на выходеKV-пары из картографов, а не входные файлы / каталоги.