我最近开始研究spark,在加入之前我们总是使用cluster by来优化表,但是我想知道是否有任何情况下我们更喜欢distributed by over cluster by子句。
taor4pac1#
cluster by和distribute by之间的唯一区别是distribute by仅根据表达式重新分区数据,而cluster by首先重新分区数据,然后根据每个分区中的键对数据进行排序。dataframeapi中cluster by和distribute by的等价表示如下:distribute bydf.重新分区($“key”,2)聚类依据df.repartition($“key”,2).sortwithinpartitions()除了cluster by有额外的排序操作外,这两个操作都涉及洗牌操作。
1条答案
按热度按时间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有额外的排序操作外,这两个操作都涉及洗牌操作。