网站导读怎么做,网站建设 资产,网站主页被做跳转,wordpress照相馆主题背景
spark sql中join操作是最耗费性能的操作#xff0c;因为这涉及到数据的shuffle操作#xff0c;如果由此导致数据倾斜更是会雪上加霜#xff0c;那么如何优化join操作的性能呢#xff1f;
join优化
方式一 broadcast广播#xff1a;
如果是大表和小表的join操作因为这涉及到数据的shuffle操作如果由此导致数据倾斜更是会雪上加霜那么如何优化join操作的性能呢
join优化
方式一 broadcast广播
如果是大表和小表的join操作最简单的解决方式就是对小表进行broadcast操作把小表的数据广播到各个executor的内存中然后和大表进行join这种方式是join优化的首选不过也有硬伤因为有个前提broadcast的表要是小表量不能太大
方式二 distributed by操作
如果是两个大表之间进行join操作影响性能的主要因素是数据倾斜我们要进行尽量保证join的两张表发送到executor的数据的数量是一样的而这个可以通过distributed by join(条件列)进行这样可以提前把两个表的数据按照条件列分布好在进行join操作时就不会发生数据倾斜的问题了
注distributed by 条件列 是把数据按照条件列进行分区分区的数量由set spark.sql.shuffle.partitions600; 进行控制此外即使不是用于join操作遇到表数据倾斜是我们也可以使用例如select * from Table distribute by rand(); 这样就可以保证每个分区的数据基本一致了
参考文献 https://blog.csdn.net/vipshop_fin_dev/article/details/95231696