數據抽取 之 CDC(變化/增量數據捕獲)


  • 基於時間戳CDC
  • 基於觸發器的CDC
  • 基於快照的CDC
  • 基於日志的CDC

基本用時間戳CDC,日志CDC!

分為侵入式和非侵入式。侵入式:對源數據庫有sql操作,有性能影響(前三種都是)

1.基於時間戳CDC

兩列時間,分別記錄create_time和modify_time,可以識別變動數據

缺點:

1.無法識別多次更新

2.無法識別刪除

3.不具有實時能力

2.基於觸發器的CDC【少】

原始數據表+insert觸發器,可以在另外一張表中記錄對原表的增刪改查操作

事件機制

影響性能:因為數據庫中直接多了一張表!所以很少使用此方法。

3.基於快照的CDC

比較某個表現在的情況 vs 某個時間點某個表的快照 => 差異檢測出更新情況

缺點:需要大量存儲空間保存快照

4.基於日志CDC

binlog用來記錄對mysql的操作日志,如何開啟binlog => https://www.jb51.net/article/157187.htm

場景:日志抽取 => kafka實時/hbase/redis但不會hive(慢) => spark計算 => 展示

(在hive中,transactional=‘true’表明如此我可以進行事務操作如更新,一般情況不更新)

 場景應用:

  • flume收集日志工具 + binlog日志= 整合,實時監控,使用flume-ng-sql-source
  • 專門用來同步binlog的工具:canal,可以實現“ MySQL Binlog通過Canal同步HDFS ”

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM