sparksql中的distribute by vs cluster by

d7v8vwbk  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(1655)

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

taor4pac

taor4pac1#

cluster by和distribute by之间的唯一区别是distribute by仅根据表达式重新分区数据,而cluster by首先重新分区数据,然后根据每个分区中的键对数据进行排序。
dataframeapi中cluster by和distribute by的等价表示如下:distribute by
df.重新分区($“key”,2)
聚类依据
df.repartition($“key”,2).sortwithinpartitions()
除了cluster by有额外的排序操作外,这两个操作都涉及洗牌操作。

相关问题