大資料增量同步實現方案

2021-10-24 22:34:13 字數 1989 閱讀 5377

目前做的專案使用阿里 datax 作為不同資料來源資料同步的實現工具。資料的批量一次性匯入比較簡單,對於增量資料需要對不同場景設計不同的方案。

每天全量同步

如人員表、訂單表一類的會發生變化的資料,根據資料倉儲的4個特點裡的反映歷史變化的這個特點的要求,我們建議每天對資料進行全量同步。也就是說每天儲存的都是資料的全量資料,這樣歷史的資料和當前的資料都可以很方便地獲得。

設定日分割槽,每天同步全量資料。

--全量同步

create table ods_user_full(

uid bigint,

uname string,

deptno bigint,

gender string,

optime datetime

) partitioned by (ds string);

查詢全量用where 分割槽 語句where ds = "2017-10-19"

每天增量同步

真實場景中因為某些特殊情況,需要每天只做增量同步。又因為目前流行的大資料平台都不支援 update 語句進行修改資料,只能用其他方法來實現。

兩個表,結果表和增量表,用 full outer join 合併 + insert overwrite(阿里巴巴大資料實踐中阿里平台使用方案)

操作如下

--結果表

create table dw_user_inc(

uid bigint,

uname string,

deptno bigint,

gender string,

optime datetime

);--增量記錄表

create table ods_user_inc(

uid bigint,

uname string,

deptno bigint,

gender string,

optime datetime

)

insert overwrite table dw_user_inc 

select

--所有select操作,如果ods表有資料,說明發生了變動,以ods表為準

case when b.uid is not null then b.uid else a.uid end as uid,

case when b.uid is not null then b.uname else a.uname end as uname,

case when b.uid is not null then b.deptno else a.deptno end as deptno,

case when b.uid is not null then b.gender else a.gender end as gender,

case when b.uid is not null then b.optime else a.optime end as optime

from

dw_user_inc a

full outer join ods_user_inc b

on a.uid = b.uid ;

對比以上兩種同步方式,可以很清楚看到兩種同步方法的區別和優劣。第二種方法的優點是同步的增量資料量比較小,但是帶來的缺點有可能有資料不一致的風險,而且還需要用額外的計算進行資料合併。如無必要,會變化的資料就使用方法一即可。如無必要,會變化的資料就使用方法一即可。如果對歷史資料希望只保留一定的時間,超出時間的做自動刪除,可以設定lifecycle。

這個場景,由於資料生成後就不會發生變化,因此可以很方便地根據資料的生成規律進行分割槽,較常見的是根據日期進行分割槽,比如每天乙個分割槽。

做法是按日期字段 where 過濾所需日期,增量 insert。

阿里大資料平台文件

大資料之路-阿里巴巴大資料實踐

goldengate 實現資料同步增量跟蹤

oracle goldengate有眾多解決方案,其中有乙個可用來實現資料同步增量跟蹤.比如有的業務系統需要實時的記錄某些資料的各種變化,通過ogg可以輕鬆的實現。應用場景 現需要實現對源端庫中空間資料表,資料變化進行監控。源端點空間資料表結構 create table sde point oid ...

時間戳實現增量資料同步

資料同步 1 靠記錄中本身的時間戳來增量更新 分頁獲取必須排序 時間戳 排序後也會出錯 會出現記錄跳過的情況 中途指令碼停止更是會出錯 非分頁的會出問題,指令碼中斷更會出問題 時間戳不能保證是從低到高 解決方法 1 分頁條數為1 並排序但效率不高 2 分頁採用每次獲取比當前時間戳大的的limit條數...

如何實現檔案增量同步 演算法

問題 如何增量同步檔案,例如乙個文字檔案有10m,分別存放在a,b兩個地方,現在兩個檔案是完全一樣的,但是我馬上要在a上對這個檔案進行修改,b如何實現自動和a上的檔案保持一致,並且網路的傳輸量最少。應用場景 這樣的使用場景太多,這裡隨便列舉幾個 1.a機器為線上運營的機器,現在需要一台備份的機器b,...