首页 > 解决方案 > spark中的分区数和任务数

问题描述

我正在执行一项阅读 2 个 zip 文件的工作

JavaPairRDD<String, PortableDataStream> zipFilesRdd = sc.binaryFiles("*.zip"));

有时分区大小为 2,有时为 1。

使用 flatmap 函数,我正在创建一个文档列表(zip 文件的所有条目),我将其转换为数据框。重新分区后,此数据帧的分区大小为 16:

Column column = new Column("applicationYear");
int numberOfPartitions = (int) dataFrame.select("applicationYear").distinct().count();
Dataset<Row> applicationYear = dataFrame.repartition(numberOfPartitions, column);

有 19 个分区,所需的分区数。但是,总是有 255 个任务开始于:

Dataset<String> keys = applicationYear.map(new MapPostProcessLoadVendor(), Encoders.STRING());
keys.collect();

为什么忽略数据帧的分区数(有和没有重新分区)?在 zipFilesRdd 的情况下,使用从 1 到 2 的重新分区。

spark-3.1.1,一个 postgres 数据库。

标签: javaapache-sparkapache-spark-sql

解决方案


推荐阅读