join的本质就是 根据 左表left,右表right的key字段,进行关联,得到一个结果
底层怎么做的呢?
就是对 左表和右表 的数据 根据key,partition到一个reduce中
然后左右表的相同key的数据,在一个reduce中,需要进行笛卡儿积
所以,如果存在某个key数据倾斜比较严重,那么这个join是会出问题的
这时候需要调整sql了,先增加一个额外的维度进行一次join,然后再合并
join的本质就是 根据 左表left,右表right的key字段,进行关联,得到一个结果
底层怎么做的呢?
就是对 左表和右表 的数据 根据key,partition到一个reduce中
然后左右表的相同key的数据,在一个reduce中,需要进行笛卡儿积
所以,如果存在某个key数据倾斜比较严重,那么这个join是会出问题的
这时候需要调整sql了,先增加一个额外的维度进行一次join,然后再合并