我在 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 库步骤可能是可选的。