Чтение сжатых данных Snappy на HDFS из потоковой передачи Hadoop

В моей системе HDFS есть папка, содержащая текстовые файлы, сжатые с использованием кодека Snappy.

Обычно при чтении сжатых файлов GZIP в задании потоковой передачи Hadoop распаковка выполняется автоматически. Однако этого не происходит при использовании сжатых данных Snappy, и я не могу обрабатывать данные.

Как прочитать эти файлы и обработать их в Hadoop Streaming?

Спасибо заранее.

ОБНОВИТЬ:

Если я использую команду hadoop fs -text file, она работает. Проблема возникает только при использовании потоковой передачи Hadoop, данные не распаковываются перед передачей в мой скрипт Python.


person Salias    schedule 07.01.2017    source источник


Ответы (2)


У вас настроен быстрый кодек в core-site, например:

<property>
  <name>io.compression.codecs</name>
  <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
</property>
person rav    schedule 11.01.2017
comment
Большое спасибо @ravwojdyla за ваш ответ. Это хороший момент, но у меня есть кодек, настроенный в моем файле core-site.xml. - person Salias; 12.01.2017
comment
Если я использую команду hadoop fs -text file, работает. Проблема возникает только при потоковой передаче Hadoop, данные не распаковываются перед передачей в мой скрипт Python. - person Salias; 13.01.2017

Думаю, у меня есть ответ на проблему. Было бы здорово, если бы кто-то это подтвердил.

Просмотр блога Cloudera. Я нашел эту статью, объясняющую кодек Snappy. Как можно прочитать:

Следует отметить, что Snappy предназначен для использования с контейнерным форматом, таким как Sequence Files или Avro Data Files, а не для использования непосредственно в обычном тексте, например, поскольку последний не может быть разделен и не может быть обработан в параллельно с помощью MapReduce.

Поэтому файл, сжатый в HDFS с использованием кодека Snappy, можно прочитать с помощью hadoop fs -text, но не в задании потоковой передачи Hadoop (MapReduce).

person Salias    schedule 17.01.2017