Spark 支持 gzip 格式吗?

Posted

技术标签:

【中文标题】Spark 支持 gzip 格式吗?【英文标题】:Is gzip format supported in Spark? 【发布时间】:2013-04-24 12:29:31 【问题描述】:

对于一个大数据项目,我计划使用spark,它具有一些不错的功能,例如用于重复工作负载的内存计算。它可以在本地文件或 HDFS 之上运行。

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

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

【问题讨论】:

【参考方案1】:

来自 Spark Scala 编程指南的section on "Hadoop Datasets":

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

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

正如@nick-chammas 在 cmets 中提到的:

请注意,如果您在 gzip 压缩文件上调用 sc.textFile(),Spark 将给出 你是一个只有 1 个分区的 RDD(从 0.9.0 开始)。这是因为 gzip 文件是not splittable。如果您不重新分区 RDD 不知何故,对该 RDD 的任何操作都将仅限于单个核心

【讨论】:

当我尝试logs = sc.textFile("logs/*.bz2") 时,我在随后的logs.count() 上收到错误消息。任何想法为什么? @zbinsd 你最后想通了吗?加载 tar.gz 文件时出现以下错误: JsonParseException: Illegal character ((CTRL-CHAR, code 0)): only regular white space (\r, \n, \t) is allowed between tokens @Leon,来自这个页面:spark.apache.org/docs/latest/programming-guide.html,它说:Spark 的所有基于文件的输入法,包括 textFile,都支持在目录、压缩文件和通配符上运行。例如,您可以使用 textFile("/my/directory")、textFile("/my/directory/*.txt") 和 textFile("/my/directory/*.gz"),希望对您有所帮助。 我正在尝试处理来自 Google Takeout 的内容,但它是我想要从存档中获取的一个文件 (.mbox)。如何指定我想要这个文件? 看来 spark 检查压缩文件的 .gz 文件扩展名。我有一个压缩文件,可以用sc.textFile() 很好地读取,但是当我弄乱扩展名时会返回字节字符串,somefile.gz.bkp

以上是关于Spark 支持 gzip 格式吗?的主要内容,如果未能解决你的问题,请参考以下文章

用win rar压缩的文件能用7-ZIP解压吗

用win rar压缩的文件能用7-ZIP解压吗

spark会代替impala吗

怎么让.NET支持gzip压缩页面的功能

如何通过 pyspark 以 gzip 格式保存 spark RDD

Spark 支持子查询吗? [复制]