小文件是否会分布在JavaPairRDD中的分区上?

问题描述 投票:0回答:1

这可能是一个愚蠢的问题,但我无法理解文件如何跨分区分割。我的要求是从Hdfs位置读取10000个二进制文件(Bloom过滤器持久文件),并通过将数据转换为ByteArrayInputStream来单独处理二进制文件。需要注意的是,这些文件是Bloom过滤器持久化文件,应该从文件的开头到结束顺序读取,并且应该转换为字节数组,因此这个字节数组将用于重构Bloomfilter对象。

JavaPairRDD<String, PortableDataStream> rdd = sparkContext.binaryFiles(commaSeparatedfilePaths);

rdd.map(new Function<Tuple2<String, PortableDataStream>, BloomCheckResponse>()

在代码中,我将v1._1作为Filepath,v1._2将PortableDataStream转换为ByteArrayInputStream。每个二进制文件为34 MB。现在的问题是,是否会出现文件的一部分位于一个分区而另一个部分位于另一个分区的情况?或者我处理的所有时间,我是否会将所有文件内容映射到单个分区中的文件,而不是分开?执行程序内存= 4GB,内核= 2,执行程序为180.基本上,期望文件应该按照从开始到结束的方式进行读取而不进行拆分。

apache-spark apache-spark-sql rdd apache-spark-dataset
1个回答
0
投票

每个(file, stream)保证提供file中的stream的全部内容。不存在数据将在多对之间划分的情况,更不用说多个分区。

您可以安全地将其用于预期的场景。

© www.soinside.com 2019 - 2024. All rights reserved.