这可能是一个愚蠢的问题,但是我无法理解如何在分区中分配文件。我的要求是从HDFS位置读取10000个二进制文件(Bloom Filter持久文件),并通过将数据转换为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。基本上,期望文件应以从头到尾的方式读取文件。
保证每个(file, stream)
在stream
中提供file
的完整内容。在没有情况下,数据将在多对之间进行分配,更不用说多个分区了。
您可以安全地用于预期的方案。