我在 HDFS 中有 LZ4 压缩数据,我正在尝试在 Apache Spark 中将其解压缩为 RDD。据我所知,JavaSparkContext 中从 HDFS 读取数据的唯一方法是 textFile,它只读取 HDFS 中的数据。我遇到过关于 CompressionCodec 的文章,但它们都解释了如何将输出压缩到 HDFS,而我需要解压缩 HDFS 上已有的内容。

我是 Spark 的新手,所以如果我错过了一些明显的东西或者我的概念理解不正确,我会提前道歉,但如果有人能指出我正确的方向,那就太好了。

最佳答案

Spark 1.1.0 supports 通过 sc.textFile 读取 LZ4 压缩文件。
我通过使用支持 LZ4(在我的情况下为 2.4.1)的 Hadoop 构建的 Spark 使其工作

之后,我按照 Hadoop docs 中的描述为我的平台构建了 native 库,并通过 --driver-library-path 选项将它们链接到 Spark。

没有链接就有 native lz4 library not loaded 异常。

根据您使用的 Hadoop 发行版,构建 native 库步骤可能是可选的。

10-07 13:59
查看更多