https://blog.csdn.net/qq_42189083/article/details/82177689
(1)第一次優化,on 字段准換成類型相同
(2)第二次優化,on 后面字段的缺失率很高(為空、字段長度為零、字段填充了非整數),關聯字段為無效字段,則不需要關聯
(3)雖然設置了左表關聯字段為空不去關聯右表,但是這樣做,左表中未關聯的記錄(字段為空)將會全部聚集在一個reduce中進行處理,體現為reduce進度長時間處在99%。 換一種思路,解決辦法的突破點就在於如何把左表的未關聯記錄的key盡可能打散,因此可以這么做:若左表關聯字段無效(為空、字段長度為零、字段填充了非整數),則在關聯前將左表關聯字段設置為一個隨機數,再去關聯右表,這么做的目的是即使是左表的未關聯記錄,它的key也分布得十分均勻。
from trackinfo a
left outer join pm_info b
on (
case when (a.ext_field7 is not null
and length(a.ext_field7) > 0
and a.ext_field7 rlike ‘^[0-9]+$’)
then
cast(a.ext_field7 as bigint)
else
cast(ceiling(rand() * -65535) as bigint)
end = b.id
)