Flink基礎(chǔ)教程:FlinkX RDB介紹與基本演示
一、RDB模塊介紹與演示
針對關(guān)系型數(shù)據(jù)庫,F(xiàn)linkX-RDB封裝了基于JDBC規(guī)范的查詢與插入等公共操作,各個數(shù)據(jù)源可通過繼承FlinkX-RDB模塊實現(xiàn)各自邏輯,目前已支持絕大部分市面上的RDB數(shù)據(jù)源:
MySQL
Oracle
SqlServer
PostgreSQL
Db2
DM
Gbase
ClickHouse
SAPHANA
Teradata
Greeplum
二、臟數(shù)據(jù)原理與演示
數(shù)據(jù)同步過程中,出現(xiàn)主鍵為空,主鍵沖突等臟數(shù)據(jù)導(dǎo)致插入失敗時,根據(jù)任務(wù)配置選擇記錄臟數(shù)據(jù)并繼續(xù)執(zhí)行后續(xù)數(shù)據(jù)插入或者直接結(jié)束任務(wù)。生產(chǎn)環(huán)境會根據(jù)臟數(shù)據(jù)管理模塊對臟數(shù)據(jù)進行管理,存儲到文件系統(tǒng)里,在任務(wù)結(jié)束后,可以在對應(yīng)路徑下查看,目前只支持Hadoop文件系統(tǒng)存儲。
三、多通道原理與演示
其本質(zhì)是通過Flink的并行度進行多線程并發(fā)讀寫以及數(shù)據(jù)庫函數(shù)的mod()方法劃分數(shù)據(jù),使得數(shù)據(jù)不會重復(fù)讀取。開啟多通道的參數(shù)如下:
reader插件parammeter里配置 splitPk切割鍵
setting.speed里配置 channel 通道數(shù)量
四、自定義sql使用
FlinkX通過where條件拼接來進行自定義過濾,自定義過濾條件仍然是對table進行數(shù)據(jù)過濾,而自定義sql則是用戶通過customSql指定sql,將其作為子查詢,其結(jié)果作為臨時表進行同步。
五、增量同步
表里的數(shù)據(jù)每天都在增加只需要同步增量的數(shù)據(jù)即可。指定增量字段來構(gòu)造sql的where條件語句查詢增量的數(shù)據(jù),并將最后一條數(shù)據(jù)的增量字段值存到prometheus中,作為下次任務(wù)的增量字段起始值,達到增量數(shù)據(jù)的每日同步。只有RDB類型的reader插件支持增量同步并且增量字段只能為數(shù)值類型或者時間類型。
六、斷點續(xù)傳
斷點續(xù)傳使用場景是在需要資源較多的任務(wù)中,如果出現(xiàn)同步失敗,重新同步會耗費大量資源,因此需要在同步失敗的地方開始重新同步,減少資源的占用。斷點續(xù)傳主要通過Flink的Check Point機制存儲任務(wù)運行時的狀態(tài)以及位置信息并在CheckPoint時進行事務(wù)的提交,避免數(shù)據(jù)重復(fù)插入,這樣在任務(wù)失敗的時候,從Check Point處進行恢復(fù)運行即可。
七、間隔輪詢
間隔輪詢場景是在表里的數(shù)據(jù)不停的插入而不做其他操作,其原理根據(jù)配置的增量標識字段去輪詢數(shù)據(jù)庫獲取數(shù)據(jù),如果獲取到數(shù)據(jù)則更新增量標識字段的值,相當于一個無界流,增量標識字段的類型必須是數(shù)值類型或者時間類型。
數(shù)棧是云原生—站式數(shù)據(jù)中臺PaaS,我們在github和gitee上有一個有趣的開源項目:FlinkX,F(xiàn)linkX是一個基于Flink的批流統(tǒng)一的數(shù)據(jù)同步工具,既可以采集靜態(tài)的數(shù)據(jù),也可以采集實時變化的數(shù)據(jù),是全域、異構(gòu)、批流一體的數(shù)據(jù)同步引擎。大家喜歡的話請給我們點個star!star!star!
github開源項目:https://github.com/DTStack/flinkx
gitee開源項目:https://gitee.com/dtstack_dev_0/flinkx