Java 从Spark中的tar.gz存档读取文件
我有一大堆tar.gz文件,我想用Spark处理这些文件,而不必解压缩它们 一个归档文件大约700MB,包含10个不同的文件,但我只对其中一个感兴趣(解压缩后约7GB) 我知道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方法。。。请看下面。如果存在文件名和文件内容,则
context.textFile
支持tar.gz,但我不确定当归档文件包含多个文件时,它是否是正确的工具。Spark将返回归档文件中所有文件(逐行)的内容,包括包含一些二进制数据的文件名
有没有办法从tar.gz中选择要映射的文件?好的,我建议使用
sc.binaryFiles
方法。。。请看下面。如果存在文件名和文件内容,则可以映射和拾取所需的文件并进行处理
公共RDD二进制文件(字符串路径,
int(分区)
获取Hadoop可读数据集的RDD,作为每个文件的PortableDataStream(对二进制数据有用)
例如,如果您有以下文件:
hdfs://a-hdfs-path/part-00000hdfs://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)