Я использовал LZO для сжатия выходного сигнала. Я попытался это: Hadoop-LZO project of Kevin Weil, а затем использовали LzoCodec
класс с моей работой:Как распаковать файл lzo_deflate?
TextOutputFormat.setOutputCompressorClass(job, LzoCodec.class);
сжатия теперь работает просто отлично.
Моя проблема заключается в том, что результатом сжатия является файл .lzo_deflate
, который я просто не могу распаковать.
Lzop utility, похоже, не поддерживает этот тип файла.
LzopCodec
должен предоставить файл .lzo
, но это не сработало, однако оно находится в том же пакете, что и LzoCodec
(org.apache.hadoop.io.compress
), который может ссылаться на проблему совместимости, поскольку я использовал старый API (0.19) для сжатия.
Ответы на это question предлагают решения Python, однако мне это нужно на Java.
Я использую Hadoop 1.1.2 и Java 6.
Что вы подразумеваете под «это не сработало» для LzopCodec? LzopCodec рекомендуется по LzoCodec, он должен работать. Можете ли вы включить эту ошибку? –
Yes.'Exception в теме "main" java.lang.NoClassDefFoundError: org/apache/hadoop/io/compress/LzopCodec'. Я попытался исправить проблему, пока не прочитал, что LzoCodec более рекомендуется. Так что это должно быть ясно. –
Большая разница в том, что Lzop добавляет заголовки, а Lzo - нет. Вы обновили свой файл hadoop-env.sh и правильно настроили HADOOP_CLASSPATH и JAVA_LIBRARY_PATH? –