![](/img/trans.png)
[英]How do I read Snappy compressed files on HDFS without using Hadoop?
[英]Read Snappy Compressed data on HDFS from Hadoop Streaming
我的HDFS系统中有一个文件夹,其中包含使用Snappy编解码器压缩的文本文件。
通常,在Hadoop Streaming作业中读取GZIP压缩文件时,解压缩会自动发生。 但是,使用Snappy压缩数据时不会发生这种情况,并且我无法处理数据。
如何读取这些文件并在Hadoop流中处理它们?
提前谢谢了。
更新:
如果我使用命令hadoop fs -text file
它将起作用。 该问题仅在使用hadoop流时发生,数据在传递给我的python脚本之前不会被解压缩。
您是否在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>
我想我对这个问题有答案。 如果有人可以确认这一点,那就太好了。
浏览Cloudera博客。 我发现这篇文章解释了Snappy编解码器。 可以看到:
需要注意的一件事是,Snappy旨在与诸如序列文件或Avro数据文件之类的容器格式一起使用,而不是直接用于纯文本,例如,因为后者不可拆分并且无法在纯文本中进行处理。使用MapReduce并行。
因此,可以使用hadoop fs -text
读取使用Snappy编解码器在HDFS中压缩的文件,但不能在Hadoop Streaming作业(MapReduce)中读取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.