作者回复: 实际上,key的分发,与数据倾斜与否,并没有本质是的联系。不论数据是否倾斜,shuffle机制一定保证同样的可以,被分发到同样的reduce task。 不过,关于自动倾斜处理,确实有些地方值得注意。一个是,AQE对于倾斜的处理,是进程内部的。也就是说,一个倾斜的task,可能会被拆成两个或是多个子task,但是这些task,其实都还是在同一个Executor内。 在Join的时候,倾斜的表,会由AQE做倾斜处理;而与他做Join的表,相应的数据分区,是需要进行复制的。这些细节还需要特别注意哈~
作者回复: 感谢老弟的反馈,欢迎老弟批评指正~
作者回复: 生产上确实是启用了AQE以及它的3个特性,当然,这里面包含自动倾斜处理。就风险来说,其实要看场景,我能想到的,会有性能隐患的场景在于,就是两张倾斜的大表做Join,这个时候,自动倾斜由于自身的机制,可能并不会带来性能上的提升。这一点,可以参考给“海阔天空”同学的回复哈~ 关于相同的key的问题,也可以参考留给“海阔天空”同学的回复哈~