maryannxue commented on a change in pull request #27669: [SPARK-30918][SQL]
improve the splitting of skewed partitions
URL: https://github.com/apache/spark/pull/27669#discussion_r387341483
##########
File path:
sql/core/src/main/scala/org/apache/spark/sql/execution/adaptive/OptimizeSkewedJoin.scala
##########
@@ -61,6 +85,19 @@ case class OptimizeSkewedJoin(conf: SQLConf) extends
Rule[SparkPlan] {
}
}
+ /**
+ * The goal of skew join optimization is to make the data distribution more
even. The target size
+ * to split skewed partitions is the average size of non-skewed partition,
or the
+ * target post-shuffle partition size if avg size is smaller than it.
+ */
+ private def targetSize(stats: MapOutputStatistics, medianSize: Long): Long =
{
+ val targetPostShuffleSize =
conf.getConf(SQLConf.SHUFFLE_TARGET_POSTSHUFFLE_INPUT_SIZE)
Review comment:
After coming across the config description of
`ADAPTIVE_EXECUTION_SKEWED_PARTITION_SIZE_THRESHOLD`, I probably get @JkSelf 's
point. In the description, it is meant to test if a partition is skewed... but
the way it is actually used here in this class, it is more like the target size
for splitting the skewed partitions.
So we need to changes here:
1. bring this conf back and use it in `isSkewed` instead.
2. if eventually the entire "skewed" partition is not split at all because
the size is smaller than the target size, we need to avoid adding the SkewDesc
for that partition.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]