CDM支持對文件類數據源進行增量遷移,全量遷移完成之后,第二次運行作業時可以導出全部新增的文件,或者只導出特定的目錄/文件。
目前CDM支持以下文件增量遷移方式:
1.增量導出指定目錄的文件
?適用場景:源端數據源為文件類型(OBS/HDFS/FTP/SFTP)。這種增量遷移方式,只追加寫入文件,不會更新或刪除已存在的記錄。
?關鍵配置:文件/路徑過濾器+定時執行作業。
?前提條件:源端目錄或文件名帶有時間字段。
2.增量導出指定時間以后的文件
?適用場景:源端數據源為文件類型(OBS/HDFS/FTP/SFTP)。這里的指定時間,是指文件的修改時間,當文件的修改時間晚于指定的時間,CDM才遷移該文件。
?關鍵配置:時間過濾+定時執行作業。
?前提條件:無。
文件/路徑過濾器
- 參數位置:在創建表/文件遷移作業時,如果源端數據源為文件類型,那么源端作業參數的高級屬性中可以看到“過濾類型”參數,該參數可選擇:通配符或正則表達式。
- 參數原理:“過濾類型”選擇“通配符”時,CDM就可以通過用戶配置的通配符過濾文件或路徑,CDM只遷移滿足指定條件的文件或路徑。
- 配置樣例:
例如源端文件名帶有時間字段“2017-10-15 20:25:26”,這個時刻生成的文件為“/opt/data/file_20171015202526.data”,則在創建作業時,參數配置如下:
a.過濾類型:選擇“通配符”。
b.文件過濾器:配置為“ ${dateformat(yyyyMMdd,-1,DAY)} ” (這是CDM支持的日期宏變量格式,詳見 時間宏變量使用解析)。
c.配置作業定時自動執行,“重復周期”為1天。
這樣每天就可以把昨天生成的文件都導入到目的端目錄,實現增量同步。
文件增量遷移場景下,“路徑過濾器”的使用方法同“文件過濾器”一樣,需要路徑名稱里帶有時間字段,這樣可以定期增量同步指定目錄下的所有文件。
時間過濾
- 參數位置:在創建表/文件遷移作業時,如果源端數據源為文件類型,那么源端作業配置下的高級屬性中,“時間過濾”參數選擇“是”。
- 參數原理:“起始時間”和“終止時間”參數中輸入時間值后,只有介于起始時間和終止時間的文件才會被CDM遷移。
- 配置樣例:
例如需要CDM只同步2021年1月1日~2022年1月1日生成的文件到目的端,則參數配置如下:
a.時間過濾器:選擇為“是”。
b.起始時間:配置為 2021-01-01 00:00:00 (格式要求為yyyy-MM-dd HH:mm:ss)。
c.終止時間:配置為 2022-01-01 00:00:00 (格式要求為yyyy-MM-dd HH:mm:ss)
詳見下圖:時間過濾

這樣CDM作業就只遷移2021年1月1日~2022年1月1日時間段內生成的文件,下次作業再啟動時就可以實現增量同步。