cloud-fan commented on a change in pull request #35657:
URL: https://github.com/apache/spark/pull/35657#discussion_r826708563
##########
File path:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/physical/partitioning.scala
##########
@@ -305,6 +306,63 @@ case class HashPartitioning(expressions: Seq[Expression],
numPartitions: Int)
newChildren: IndexedSeq[Expression]): HashPartitioning = copy(expressions
= newChildren)
}
+/**
+ * Represents a partitioning where rows are split across partitions based on
transforms defined
+ * by `expressions`. `partitionValuesOpt`, if defined, should contain value of
partition key(s) in
+ * ascending order, after evaluated by the transforms in `expressions`, for
each input partition.
+ * In addition, its length must be the same as the number of input partitions
(and thus is a 1-1
+ * mapping), and each row in `partitionValuesOpt` must be unique.
+ *
+ * For example, if `expressions` is `[years(ts_col)]`, then a valid value of
`partitionValuesOpt` is
+ * `[0, 1, 2]`, which represents 3 input partitions with distinct partition
values. All rows
+ * in each partition have the same value for column `ts_col` (which is of
timestamp type), after
+ * being applied by the `years` transform.
Review comment:
After reading it, I think it's not really a "hash" partitioning, but
more like an "identity" partitioning: rows share the same value w.r.t. the
clustering expressions(keys) must be in the same partition, and one partition
can only have one value.
Shall we adjust the naming accordingly?
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]