繁体   English   中英

从Hadoop流中读取HDFS上的快照压缩数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM