您現在的位置是:首頁 > 運動
Spring Boot整合DataX同步資料
資料庫可以刪嗎
我們系統的基礎資料存放在
EBS
中,的有個基礎資料同步功能,因為變化頻率比較低,所以採用定時加手動的方式同步,每日凌晨三點由ETL工具同步到我們中間表,然後儲存過程再處理資料。手動則是程式呼叫
Kettle
指令碼同步資料到中間表沒然後執行儲存過程。剛開始上線時,量較小,也就幾萬條資料,手動同步比較快,越到後期,資料量逐漸增多,達到一百多萬的基礎資料,透過
Kettle
同步一次得花十多分鐘。業務方實在無法忍受,要求我們必須最佳化。
當初使用
Kettle
的原因是處於簡單、易操作,透過視覺化介面先設計好指令碼,獲取到
ktr
的指令碼檔案,然後在程式中引入
kettle-engine
、
metastore
、
kettle-core
這三個
kettle
相關的包即可在Java程式中執行
kettle
的
ktr
指令碼。當資料量上來後,
Kettle
確實有些力不從心了,所以,我們就換成了阿里開源的
DataX
。那我們就來嘗試下如何整合到程式中吧?
我這邊的編譯環境是:
Windows10
、
JDK1。8
、
Apache Maven 3。6。3
,執行環境是
Linux version 3。10。0-957。el7。x86_64
,Python為Linux自帶的
2。7。5
,JDK為1。8。
先去
Github
下載原始碼到本地使用
mvn -U clean package assembly:assembly -Dmaven。test。skip=true
進行編譯。
編譯好的壓縮包有
1。32GB
,我們將其上傳到伺服器上。上傳後解壓,如果本機有
Python
環境,則不需上傳。先用
Python
生成同步指令碼模版,
python datax。py -r {YOUR_READER} -w {YOUR_WRITER}
,我這裡是從
Oracle
到
Oracle
,進入到
datax->bin
目錄中執行如下指令碼:
最終會生成如下模版,
我們根據自己的情況,修改即可。接下來,就是在
Spring Boot
中呼叫
DataX
來同步資料了。首先引入
Jar
由於
DataX
相關的包在
Maven
倉庫中不存在,那麼只有上傳到個人倉庫或者直接引用本地包,我選擇了後者,這幾個包在編譯好的
datax
目錄中可以找到。接下來,我們編寫呼叫程式碼:
我來看一下執行效果:
可以看到
1335288
條資料,
60
秒便同步完成。相較之前的
Kettle
,同步速度提升了8-10倍,而且,可以按不同組織進行同步,每個組織的資料最多也就十多萬,透過
DataX
同步也就十幾秒,業務也能夠接受這個速度。為什麼非要把
Kettle
換為
DataX
,這就是我自身原因,不知如何對
Kettle
進行調優來提升同步速度,有經驗的朋友還請告知。
推薦文章
- 橫板卷軸動作遊戲《深沉之火》將於11月30日在Steam發售
遊戲頁面: 遊戲簡介⦁自由選擇外形、出身,關卡過程中靈活調整職業、屬性⦁探索隱藏元素,揭示世界真相,任何可疑細節都別錯過⦁攀爬、衝刺、開啟機關,尋找隱藏路線,沉浸式受苦體驗⦁套裝搭配銘火多重選擇,因地適宜,定製最順手武器、防具⦁數十個原創B...
- 一粒毫末如何起兮於大風?
以最新的AI DAY為例,毫末智行的董事長張凱以《毫末1000天:新週期,新徵程》為題,回顧了毫末成立至今成功穿越創業公司生死線,躋身為中國自動駕駛技術創業公司新標杆的成長曆程與經驗,並分享了對智慧駕駛宏觀趨勢的判斷,以及毫末2022年三大...
- 三大運營哪家好,大家會使用哪家的手機卡?
有的時候也是降低一下價格來吸引更多的客戶可以說雙方也是想出了很多的辦法,也是在不斷的競爭,在生活當中大家應該也是能聽到兩個行業的詆譭或者競爭也是常有的事情,在我國使用者最多也是移動通訊但是給大家的影響並不是很好的,現在很多人即使都在用移動的...