首页 文章

Spark中的gzip支持

提问于
浏览
36

对于大数据项目,我打算使用spark,它具有一些很好的功能,如内存计算,用于重复的工作负载 . 它可以在本地文件上运行,也可以在HDFS上运行 .

但是,在官方文档中,我找不到任何关于如何处理gzip文件的提示 . 实际上,处理.gz文件而不是解压缩文件可能非常有效 .

有没有办法手动实现gzip压缩文件的读取或在读取.gz文件时已经自动解压缩?

1 回答

  • 67

    从Spark Scala编程指南的section on "Hadoop Datasets"

    Spark可以从存储在Hadoop分布式文件系统(HDFS)中的任何文件或Hadoop支持的其他存储系统(包括本地文件系统,Amazon S3,Hypertable,HBase等)创建分布式数据集 . Spark支持文本文件,SequenceFiles和任何其他Hadoop InputFormat .

    对gzip输入文件的支持应该与Hadoop中的相同 . 例如, sc.textFile("myFile.gz") 应自动解压缩并读取gzip压缩文件( textFile() 实际上是implemented,使用Hadoop的 TextInputFormat ,它支持gzip压缩文件) .

    正如@ nick-chammas在评论中所提到的:

    请注意,如果在gzip压缩文件上调用sc.textFile(),Spark将为您提供仅包含1个分区的RDD(从0.9.0开始) . 这是因为gzipped文件不可拆分 . 如果不以某种方式对RDD进行重新分区,则该RDD上的任何操作都将限制为单个核心

相关问题