程序中设置的分区数与spark web ui中显示的分区数不匹配

时间:2018-12-23 13:36:34

标签: java apache-spark

为以下单词计数程序创建的分区为10,但是据我了解,如果我们在创建sparksession对象时设置master(“ local [2]”)意味着它将在本地运行2个内核,即2个分区

有人可以帮助我为什么我的spark代码创建10个分区而不是创建2个分区。

代码:

    SparkSession spark = SparkSession.builder().appName("JavaWordCount").master("local[2]").getOrCreate();

    JavaRDD<String> lines = spark.read().textFile(args[0]).javaRDD();

    JavaRDD<String> words = lines.flatMap(s -> Arrays.asList(SPACE.split(s)).iterator());

    JavaPairRDD<String, Double> pairRDD = words.mapToPair(s -> new Tuple2<>(s, 1.0));

Spark Web UI的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

  

它将在本地运行,具有2个核心,即2个分区

这一点都不意味着。这意味着Spark最多可以使用2个线程进行数据处理。但是除了极少数例外(例如parallelize),这与所使用的分区数量无关。

在这样简单的管道中,分区的数量将取决于spark.sql.files.maxPartitionBytes parameter的值。