cloud-fan commented on a change in pull request #27493: [SPARK-30751][SQL]
Combine the skewed readers into one in AQE skew join optimizations
URL: https://github.com/apache/spark/pull/27493#discussion_r378157822
##########
File path:
sql/core/src/main/scala/org/apache/spark/sql/execution/adaptive/OptimizeSkewedJoin.scala
##########
@@ -156,60 +155,130 @@ case class OptimizeSkewedJoin(conf: SQLConf) extends
Rule[SparkPlan] {
|${getSizeInfo(rightMedSize, rightStats.bytesByPartitionId.max)}
""".stripMargin)
- val skewedPartitions = mutable.HashSet[Int]()
- val subJoins = mutable.ArrayBuffer[SparkPlan]()
- for (partitionId <- 0 until numPartitions) {
- val isLeftSkew = isSkewed(leftStats, partitionId, leftMedSize)
- val isRightSkew = isSkewed(rightStats, partitionId, rightMedSize)
- val leftMapIdStartIndices = if (isLeftSkew &&
supportSplitOnLeftPartition(joinType)) {
- getMapStartIndices(left, partitionId)
- } else {
- Array(0)
- }
- val rightMapIdStartIndices = if (isRightSkew &&
supportSplitOnRightPartition(joinType)) {
- getMapStartIndices(right, partitionId)
- } else {
- Array(0)
- }
-
- if (leftMapIdStartIndices.length > 1 || rightMapIdStartIndices.length
> 1) {
- skewedPartitions += partitionId
- for (i <- 0 until leftMapIdStartIndices.length;
- j <- 0 until rightMapIdStartIndices.length) {
- val leftEndMapId = if (i == leftMapIdStartIndices.length - 1) {
- getNumMappers(left)
- } else {
- leftMapIdStartIndices(i + 1)
+ val leftSidePartitions = mutable.ArrayBuffer.empty[ShufflePartitionSpec]
+ val rightSidePartitions = mutable.ArrayBuffer.empty[ShufflePartitionSpec]
+ // This is used to delay the creation of non-skew partitions so that we
can potentially
+ // coalesce them like `ReduceNumShufflePartitions` does.
+ val nonSkewPartitionIndices = mutable.ArrayBuffer.empty[Int]
+ val skewDesc = mutable.ArrayBuffer.empty[String]
Review comment:
Is it common to have many skewed partitions? I'm fine with a summary, what
do you think we should put it in the summary? number of skewed partitions and
the min/median/max size?
----------------------------------------------------------------
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]