在 spark SQL 中按 vs 集群分布

Distribute by vs Cluster by in spark SQL

我最近开始研究 spark,我们总是在加入之前使用 cluster by 来优化表,但我想知道在任何情况下我们更喜欢 distribution by cluster by 子句。

聚类依据和分布依据之间的唯一区别是 分布依据仅根据表达式对数据进行重新分区,而聚类依据首先对该数据进行重新分区,然后根据每个分区中的键对数据进行排序。

dataframe api 中 cluster by 和 distribution by 的等价表示如下: 分发者

df.repartition($"key", 2)

聚类依据

df.repartition($"key", 2).sortWithinPartitions()

除了cluster by有额外的排序操作外,都涉及到shuffle操作。