对于大数据项目,我打算使用spark,它具有一些很好的功能,如内存计算,用于重复的工作负载 . 它可以在本地文件上运行,也可以在HDFS上运行 .
但是,在官方文档中,我找不到任何关于如何处理gzip文件的提示 . 实际上,处理.gz文件而不是解压缩文件可能非常有效 .
有没有办法手动实现gzip压缩文件的读取或在读取.gz文件时已经自动解压缩?
从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压缩文件) .
sc.textFile("myFile.gz")
textFile()
TextInputFormat
正如@ nick-chammas在评论中所提到的:
请注意,如果在gzip压缩文件上调用sc.textFile(),Spark将为您提供仅包含1个分区的RDD(从0.9.0开始) . 这是因为gzipped文件不可拆分 . 如果不以某种方式对RDD进行重新分区,则该RDD上的任何操作都将限制为单个核心
1 回答
从Spark Scala编程指南的section on "Hadoop Datasets":
对gzip输入文件的支持应该与Hadoop中的相同 . 例如,
sc.textFile("myFile.gz")
应自动解压缩并读取gzip压缩文件(textFile()
实际上是implemented,使用Hadoop的TextInputFormat
,它支持gzip压缩文件) .正如@ nick-chammas在评论中所提到的: