最近遷移遇到些問題,因為總設計更新洗掉操作hive不太適合這種操作應該怎么辦
如:
v_begin_time 這種的為變數,腳本設定的
1.oracle的sql: delete from cli_other_distinct c where c.mobile in (select mobile from cli_user);
我遷移到hive:
初始版本:delete from dmid.cli_other_distinct where mobile in (select mobile from base.ods_khd_cli_user_di where ymd = ${v_date1}) 每天從dmid.cli_other_distinct 洗掉base.ods_khd_cli_user_di 包含表資料 但是不好這個操作,效率慢表可能被鎖住
第二個hive版本:
insert overwrite table dmid.cli_other_distinct
select
t.*
from dmid.cli_other_distinct t
left join
(select mobile from base.ods_khd_cli_user_di where ymd = '${v_date1}') s
on t.mobile=s.mobile
where s.mobile is null;
進行全表重繪效率很慢。
由于每天 base.ods_khd_cli_user_di表中的手機號不確定在 dmid.cli_other_distinct哪個磁區中所以必須主表全部匹配才可,主表資料量3000W條左右,效率很慢全部更新
有大佬請教下嗎,最新做遷移有點暈5555555555!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/223103.html
標籤:高級技術
上一篇:資料泵匯入資料成功后再查詢無資料
