我在 HDFS 中有 LZ4 压缩数据,我试图在 Apache Spark 中将其解压缩为 RDD。据我所知,JavaSparkContext
中从 HDFS 读取数据的唯一方法是 textFile
,它只读取 HDFS 中的数据。我看过关于 CompressionCodec
的文章,但所有文章都解释了如何将输出压缩到 HDFS,而我需要解压缩 HDFS 上已有的内容。
我是 Spark 的新手,所以如果我遗漏了一些明显的东西或者我的概念理解不正确,我会提前道歉,但如果有人能指出我正确的方向,那就太好了。
最佳答案
星火 1.1.0 supports通过 sc.textFile
读取 LZ4 压缩文件。
我通过使用支持 LZ4(在我的例子中是 2.4.1)的 Hadoop 构建的 Spark 使其工作
之后,我为我的平台构建了 native 库,如 Hadoop docs 中所述并通过 --driver-library-path
选项将它们链接到 Spark。
如果没有链接,则会出现未加载 native lz4 库
异常。
根据您使用的 Hadoop 发行版,构建 native 库步骤可能是可选的。
关于hadoop - 在 Spark 中解压 LZ4 压缩数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24985704/