hive兩個大表join操作


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 
)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM