如何在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 文件
使用 Hadoop 以编程方式解压缩包含多个不相关 csv 文件的文件