在连接表时,当底层表被扣住时,spark如何减少混乱

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

我在多个论坛上读到过这样一篇文章:当底层表被压缩和排序时,在执行sort-merge-join时,shuffle会减少。不过,我的问题是
排序的bucket只能保证bucket中的数据是大致相同的一组键,并且数据是经过排序的。假设我们有两个Dataframed1和d2,这两个Dataframe都被排序和装箱。
spark是否保证包含key1和key2数据的d1表的bucketx与包含key1和key2数据的d2表的buckety在同一台机器上?
若bucketx和buckety保证在同一台机器上,那个么在执行sort merge join时,节点之间就不会有交换。如果他们能坐在不同的机器上。然后在执行join时应该进行数据交换。
请帮助理解这个概念。提前谢谢。

vohkndzv

vohkndzv1#

你的理解是正确的。 SortMergeJoin 要求 RangePartitioning 大量的数据。
如果Dataframedf1和df2已经被 RangePartitioner on键 k (也用于join)那么就不会有额外的交换,否则就会有。

相关问题