分桶如何提高连接性能

How bucketing can improve join performance

我是 pyspark 的新手,我在某处读到“通过在需要洗牌的操作之前对数据帧中的方便列应用分桶,我们可以避免多次可能的昂贵洗牌。分桶通过在之前对数据进行排序和洗牌来提高性能执行排序合并连接

非常想知道,我们如何在加入之前通过分桶“避免多次可能的昂贵洗牌” 两个数据框

这是一篇对您有帮助的好文章understand bucketing sorting.

基本上归结为您将“pre-chew”您的数据,以便轻松加入。您可以通过使用 CLUSTERED BYBUCKET 创建 table 定义来执行此操作。如果您定期加入两个 tables,在两个 tables 上使用相同的 clusterd by/bucketing 将启用 tables 之间的超快速加入。 (它们可以映射到同一个减速器以加速连接)。