当然,我知道
spark.sql.shuffle.partitions
配置。
但是,例如,当我在只有200行的小数据集上设置300这个配置时,这个配置是无效的,实际的分区数只有2。
再比如,我在有300亿行的数据集上设置了3000这个配置,这个配置也是无效的,实际分区数只有600。
我们看到,当我们在一个小的数据集上设置一个大的分区配置值时,这个配置是无效的。
所以我只想知道,在SparkSQL的shuffle中,Spark是如何决定下一阶段的分区数的?或者如何强制这个配置是有效的?
我的SparkSQL就像下面这样。
set spark.sql.shuffle.partitions=3000;
with base_data as (
select
device_id
table_name
where
dt = '20210621'
distribute by
rand()
select count(1) from base_data