如何在spark中解压和读取包含多个压缩文件的文件

Posted

技术标签:

【中文标题】如何在spark中解压和读取包含多个压缩文件的文件【英文标题】:how to decompress and read a file containing multiple compressed file in spark 【发布时间】:2018-11-20 08:46:16 【问题描述】:

我有一个 AA.zip 文件,其中又包含多个文件,例如 aa.tar.gz、bb.tar.gz 等

我需要在 spark scala 中读取这些文件,我该如何实现??

这里唯一的问题是提取 zip 文件的内容。

【问题讨论】:

Read whole text files from a compression in Spark的可能重复 不,这个问题是关于一个包含压缩文件的目录,但这里我有一个 zip 格式的文件,并且再次包含 .tar.gz 格式的文件。 【参考方案1】:

所以 HDFS 上的 ZIP 会有点棘手,因为它们不能很好地拆分,因此您必须为每个执行程序处理 1 个或多个 zip 文件。这也是您可能不得不回退到SparkContext 的少数情况之一,因为出于某种原因,Spark 中的二进制文件支持不是那么好。

https://spark.apache.org/docs/2.4.0/api/scala/index.html#org.apache.spark.SparkContext

那里有一个readBinaryFiles,它可以让您访问 zip 二进制数据,然后您可以通过 java 或 scala 的常规 ZIP 处理来使用这些数据。

【讨论】:

以上是关于如何在spark中解压和读取包含多个压缩文件的文件的主要内容,如果未能解决你的问题,请参考以下文章

解压多个 *.gz 文件并在 spark scala 中制作一个 csv 文件

在 Spark 中读取具有多个标题的文本文件

使用 Hadoop 以编程方式解压缩包含多个不相关 csv 文件的文件

如何只查看tar.gz压缩文件中顶层目录的列表

如何使用 spark(python)读取 zip 文件中的 CSV 文件的内容 [重复]

如何使用 spark DF 或 DS 读取“.gz”压缩文件?