【问题标题】:Read Snappy Compressed data on HDFS from Hadoop Streaming从 Hadoop Streaming 读取 HDFS 上的 Snappy 压缩数据
【发布时间】:2017-01-07 16:33:21
【问题描述】:

我的 HDFS 系统中有一个文件夹,其中包含使用 Snappy 编解码器压缩的文本文件。

通常,在 Hadoop Streaming 作业中读取 GZIP 压缩文件时,会自动进行解压缩。但是,在使用 Snappy 压缩数据时不会发生这种情况,并且我无法处理数据。

如何读取这些文件并在 Hadoop Streaming 中处理它们?

非常感谢。

更新:

如果我使用命令hadoop fs -text file 它可以工作。该问题仅在使用 hadoop 流时发生,数据在传递给我的 python 脚本之前未解压缩。

【问题讨论】:

    标签: hadoop hdfs hadoop-streaming compression snappy


    【解决方案1】:

    您是否在core-site 中配置了 snappy 编解码器,例如:

    <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>
    

    【讨论】:

    • 非常感谢@ravwojdyla 的回答。这是一个很好的观点,但我在 core-site.xml 中配置了编解码器。
    • 如果我使用命令hadoop fs -text file 有效。这个问题只发生在hadoop流中,数据在传递给我的python脚本之前没有解压。
    【解决方案2】:

    我想我有这个问题的答案。如果有人能证实这一点,那就太好了。

    浏览 Cloudera 博客。我发现this article 解释了 Snappy 编解码器。如其所见:

    需要注意的一点是,Snappy 旨在用于容器格式,如序列文件或 Avro 数据文件,而不是直接用于纯文本,例如,因为后者不可拆分且不能使用 MapReduce 并行处理。

    因此,使用 Snappy 编解码器在 HDFS 中压缩的文件可以使用 hadoop fs -text 读取,但不能在 Hadoop 流式处理作业 (MapReduce) 中读取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 2023-03-09
      • 2014-06-08
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      相关资源
      最近更新 更多