Смещение байта потокового преобразователя Hadoop не генерируется

Я выполняю потоковое задание Hadoop, и смещения байтов не генерируются как выходные данные (ключи) преобразователя, как я и ожидал. Команда:

$HADOOP_INSTALL/bin/hadoop \
jar $HADOOP_INSTALL/contrib/streaming/hadoop-streaming-$HADOOP_VERSION.jar \
-D stream.map.input.ignoreKey=false \
-inputformat org.apache.hadoop.mapred.TextInputFormat \
-file ./mapper.py \
-file ./reducer.py \
-mapper ./mapper.py \
-reducer ./reducer.py \
-input $INPUT_DIR \
-output $OUTPUT_DIR \
-cmdenv REGEX=$REGEX

Насколько я понимаю, TextInputFormat используется по умолчанию, поэтому я также попытался выполнить приведенную выше команду без параметра -inputformat. Я'мы также пытались удалить -D, но яМне сказали, что это требуется для получения байтового смещения в качестве ключа при использовании потокового API.

Для чего этостоит, яЯ просто экспериментирую с Hadoop для студенческого проекта. На данный момент маппер - это очень простой python grep файла в HDFS, сопоставляющий каждую строку с предоставленным регулярным выражением:

pattern = re.compile(os.environ['REGEX'])
for line in sys.stdin:
   match = pattern.search(line)
   if (match):
      sys.stdout.write(line)

Хотя сейчас единственное, чтоВыходной сигнал (для редуктора) - совпадающие линии. Я'm ожидает пары «ключ / значение» с разделителями или пробелами, где key = byte_offset и value = regex_line_match.

Может кто-нибудь сказать мне или предложить, почему это происходит?

Также я'Я так же заинтересован в ответе на эти два (связанных) вопроса:

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

Если да, то как? (Python или потоковое в целом).

Редактировать:

Если я использую-inputformat org.apache.hadoop.mapred.lib.NLineInputFormat тогда смещения байтов производятся как ключи вывода картографа. Но работа требуетдействительно долгое время для завершения (и мой входной файл содержит только около 50 строк текста!).

Ответы на вопрос(0)

Ваш ответ на вопрос