Java 从Spark中的tar.gz存档读取文件

Java 从Spark中的tar.gz存档读取文件,java,apache-spark,Java,Apache Spark,我有一大堆tar.gz文件,我想用Spark处理这些文件,而不必解压缩它们 一个归档文件大约700MB,包含10个不同的文件,但我只对其中一个感兴趣(解压缩后约7GB) 我知道context.textFile支持tar.gz,但我不确定当归档文件包含多个文件时,它是否是正确的工具。Spark将返回归档文件中所有文件(逐行)的内容,包括包含一些二进制数据的文件名 有没有办法从tar.gz中选择要映射的文件?好的,我建议使用sc.binaryFiles方法。。。请看下面。如果存在文件名和文件内容,则

我有一大堆tar.gz文件,我想用Spark处理这些文件,而不必解压缩它们

一个归档文件大约700MB,包含10个不同的文件,但我只对其中一个感兴趣(解压缩后约7GB)

我知道
context.textFile
支持tar.gz,但我不确定当归档文件包含多个文件时,它是否是正确的工具。Spark将返回归档文件中所有文件(逐行)的内容,包括包含一些二进制数据的文件名


有没有办法从tar.gz中选择要映射的文件?

好的,我建议使用
sc.binaryFiles
方法。。。请看下面。如果存在文件名和文件内容,则可以映射和拾取所需的文件并进行处理


公共RDD二进制文件(字符串路径,
int(分区)
获取Hadoop可读数据集的RDD,作为每个文件的PortableDataStream(对二进制数据有用) 例如,如果您有以下文件:

hdfs://a-hdfs-path/part-00000
hdfs://a-hdfs-path/part-00001

hdfs://a-hdfs-path/part-nnnnn

Do val
rdd=sparkContext.binaryFiles(“hdfs://a-hdfs-path”,

然后rdd包含

(a-hdfs-path/part-00000,其内容)
(a-hdfs-path/part-00001,其内容)

(a-hdfs-path/part-NNN,其内容)


另外,请检查

您是否能够解决此问题?如果是,你采取了什么方法?
public RDD<scala.Tuple2<String,PortableDataStream>> binaryFiles(String path,
                                                           int minPartitions)