Spark

时间:2015-11-03 05:43:36

标签: apache-spark

我想了解Spark分区的方式,所以我做了以下操作:

JavaPairRDD<Text, CustomObj> bigRDD = ctx.sequenceFile("path to sequenceFile", Text.class, CustomObj.class);
        System.out.println(bigRDD.partitions().size());

假设“sequenceFile的路径”包含8个不同的序列文件,总共21 MB。输出给出8作为分区数。

JavaPairRDD<String, String> bigRDD1 = ctx.wholeTextFiles("path to image file");
        System.out.println(bigRDD1.partitions().size());

在这种情况下,“图像文件路径”包含200多个图像文件,总大小为91 MB。它显示了2个分区。

我使用Spark作为本地模式(setMaster [“local”]),据我所知,分区数=总文件大小/ hdfs默认块大小(此处为32MB)。所以我认为第二个结果是正确的理论。

但在第一种情况下,我不明白为什么它总共有8个分区,即使总文件大小只有21 MB。?

已更新

案例1中的序列文件已在不同的作业中创建:

    JavaPairRDD<Text, CustomObj> setsPartitions = clusteSet.partitionBy(new HashPartitioner(8));
   setsPartitions.saveAsHadoopFile("path to out put", Text.class, CustomObj.class, MultipleSequenceFileOutputFormat.class);

在我的情况下,我知道之前的分区数,所以我把它设置为等于8

0 个答案:

没有答案