从hadoop流媒体读取hdfs上的snappy压缩数据

ztigrdn8  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(952)

我在hdfs系统中有一个文件夹,其中包含使用snappy编解码器压缩的文本文件。
通常,在hadoop流作业中读取gzip压缩文件时,解压缩会自动进行。但是,使用snappy压缩数据时不会发生这种情况,我无法处理数据。
如何读取这些文件并在hadoop流媒体中处理它们?
非常感谢。
更新:
如果我使用命令 hadoop fs -text file 它起作用了。问题只发生在使用hadoop流媒体时,数据在传递到python脚本之前没有解压缩。

ss2ws0br

ss2ws0br1#

我想我已经找到了这个问题的答案。如果有人能证实这一点就太好了。
浏览cloudera博客。我发现这篇文章解释了snappy编解码器。可以看出:
需要注意的一点是,snappy打算与容器格式一起使用,比如序列文件或avro数据文件,而不是直接在纯文本上使用,因为后者是不可拆分的,不能使用mapreduce并行处理。
因此,可以使用 hadoop fs -text 但在hadoop流作业(mapreduce)中没有。

n3schb8v

n3schb8v2#

您是否在中配置了snappy编解码器 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>

相关问题