为以下单词计数程序创建的分区为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的屏幕截图:
答案 0 :(得分:0)
它将在本地运行,具有2个核心,即2个分区
这一点都不意味着。这意味着Spark最多可以使用2个线程进行数据处理。但是除了极少数例外(例如parallelize
),这与所使用的分区数量无关。
在这样简单的管道中,分区的数量将取决于spark.sql.files.maxPartitionBytes
parameter的值。