2016-06-15 1 views
2

Я могу видеть SequenceFileInputFilter.Filter имеет принять метод, который возвращать Boolean, здесь мы можем поставить проверить текущий ключ обработки, если текущий ключ обработки не нашего интереса, мы можем пропустите эту строку из обработки.Что такое использование SequenceFileInputFilter.Filter в Hadoop

Насколько я знаю, при чтении файла последовательности hadoop получает информацию о ключевом классе ввода ключа из файла последовательности его самого (некоторые метаданные о классе). так что это возможно, что один файл последовательности имеют другой тип ключа класса, Если его не представляется возможным, то, что было бы реальное использование времени класса фильтра

ответ

1

Мое понимание о нем идет как это:

As мы можем создать класс Mapper с пользовательской кнопки, как показано ниже:

DerivedMapper extends Mapper<InCustomKey, Text, OutCustomKey, Text> 

и метод карта будет

public void map(InCustomKey key, Text value, Context contx) 

Итак, SequencefileReader прочитает класс ключа из метаданных, присутствующих в файле, и создаст объект, используя эту информацию, которая будет передана методу карты. Там может быть две причины для реализации фильтра

  1. Чтобы сделать код более устойчивым, если последовательность файлов имеет различные Key класс от ключевого класса входного картографа, в этом случае он будет ввергать Runtime Exception

  2. Если мы передаем директорию в качестве ввода, возможно, есть вероятность, что некоторые файлы имеют другой ключ в файле Sequences.

    В обоих вышеупомянутых случаях мы можем использовать функциональность фильтра, чтобы пропустить обработку таких записей.