全量計算開發處理雖然簡單,但隨著資料量的增加計算資源和時間會倍速增長;在物力人力等成本考量下,引入增量更新進行開發難度和計算資源的平衡。
前提
設計
黃色為歷史分割槽,以建立日期分割槽存放
綠色為增量資料,根據建立時間可以劃分出來的分割槽
藍色為合併後的分割槽
從黃色部分取和綠色劃分相同的分割槽進行資料合併,再動態寫回去
偽**
insert overwrite table bule partition
(dt)
select
coalesce
(green.
columns
,yellow.
columns),
coalesce
(green.dt,yellow.dt)
from yellow outer
full
join
green on yellow.
key= green.
keyand green.dt =
'$'where yellow.dt in
(select
distinct substring(
replace
(create_time,
'-'),1
,7) –## '20201001'
from green where dt =
'$')
問題在hive1.0(其它版本未測試過)中分割槽in語句會掃瞄所有分割槽,用udf解決
--固定分割槽值 掃瞄指定分割槽
select
count(1
)from dwd_a t where t.dt in
('20210204');
--固定分割槽值 掃瞄指定分割槽
select
count(1
)from dwd_a where find_in_set(dt,concat_ws(
',',
('20210202'
,'20210203'
,'20210204'))
)>0;
--動態分割槽值 但掃瞄全分割槽
select
count(1
)from dwd_a t where t.dt in
(select dt from ods_a where dt=
'$')
;--動態分割槽值 利用udf實現掃瞄指定分割槽
select
count(1
)from dwd_a t where t.dt in
(select dt from ods_a where find_in_set(ds,my_udf(
"select dt from ods_a where dt='$'"))
);
my_udf內部實現為執行輸入的sql,並返回類似20210202,20210203,20210204的字串
前提
設計
最近分割槽
分割槽
問題
呼~,有空再補圖吧,有些描述不太好理解
數倉專案筆記 20200817
1 資料倉儲 作為資料的管理和運算中心 資料存檔 各種統計 運算任務的核心平台 2 使用者畫像系統 含義 深入分析使用者後給使用者打上各種規範標籤 年齡,性別,地域特徵,偏好特徵,價值指數,行為習慣,消費習慣 作用 對使用者進行精準營銷,用於支撐精細化營運 比如,針對不同的人 放不同的優惠券 比如,...
數倉筆記 資料建模
3.資料整合及管理體系 3.3 分層建模 3.3.2 分層模型設計原則 3.4 主題域 3.5 建模實施 reference 隨著dt時代的發展,資料出現了爆發式的增長,需要對資料進行有序,有結構的分類組織和儲存,以方便應用。合適的資料建模,能帶來以下幾點好處 關係模型嚴格遵循第三正規化 3nf 較...
kettle 增量更新
後面的乙個問號就是表示它需要接受乙個引數,你在這個table input 下面需要指定replace variable in script 選項和execute for each row 為選中狀態,這樣,kettle就會迴圈執行這個sql 執行的次數為前面引數步驟傳入的資料集的大小。kettle執...