Hadoop-25 Sqoop遷移 增量數據導入 CDC 變化數據捕獲 差量同步數據 觸發器 快照 日志

章節內容

上節我們完成了如下的內容:

  • Sqoop MySQL遷移到Hive
  • Sqoop Hive遷移數據到MySQL
  • 編寫腳本進行數據導入導出測試

背景介紹

這里是三臺公網云服務器,每臺 2C4G,搭建一個Hadoop的學習環境,供我學習。
之前已經在 VM 虛擬機上搭建過一次,但是沒留下筆記,這次趁著前幾天薅羊毛的3臺機器,趕緊嘗試在公網上搭建體驗一下。

  • 2C4G 編號 h121
  • 2C4G 編號 h122
  • 2C2G 編號 h123

在這里插入圖片描述

CDC

全稱為:變化數據捕獲(Change Data Capture)
我們前面執行的都是全量數據的導入。

  • 如果數據量很小采取完全源數據抽取
    • 如果源數據量很大,則需要抽取發生變化的數據,這種數據抽取模式叫:“變化數據捕獲”,簡稱 CDC。

如果CDC是侵入式的,那么操作會給源系統帶來性能的影響

基于時間戳

抽取過程可以根據某些屬性列來判斷哪些數據是增量的,最常見的屬性列有以下兩種:

  • 時間戳:最好有兩個列,一個插入時間戳,表示何時創建,一個更新時間戳表示最后一次更新時間。
  • 序列:大多數數據庫都提供自增功能,表中的列定義成自增的,很容易得根據該列識別新插入的數據

時間戳最簡單且常用的,但是有如下缺點

  • 不能記錄刪除記錄的操作
  • 無法識別多次更新
  • 不具有實時的能力

基于觸發器

當執行:INSERTUPDATEDELTE 這些 SQL 語句時,激活數據庫的觸發器,使用觸發器可捕獲變更的數據,并把數據保存中間臨時表里。
大多數場合下,不允許向操作性數據庫里添加觸發器,且這種會降低系統性能,基本不會采用。

基于快照

可以通過比較源表快照表來得到數據的變化,基于快照的CDC可以檢測插入、更新、刪除等數據,這是相對于時間戳的CDC方案的優點。
缺點就是需要大量的空間

基于日志

最復雜沒有侵入性的就是基于日志的方式,數據庫把每個插入、更新、刪除都記錄到日志里,解析日志文件,就可以獲取相關的信息。
每個關系型數據庫:日志格式不一致沒有通用的產品。
阿里巴巴的Canal可以完成MySQL日志文件解析。

Append方式

初始化數據

刪除 MySQL 中的數據

-- 刪除 MySQL 表中的全部數據
truncate table sqoop.goodtbl;

刪除Hive中的數據

-- 刪除 Hive 表中的全部數據
truncate table mydb.goodtbl;

重新生成數據

這個SQL是之前章節寫的函數方法,如果你第一次看到這里,你可能需要把前邊的文章執行一次。

-- 向MySQL的表中插入100條數據
call batchInsertTestData(1, 100);

導入Hive

sqoop import \
--connect jdbc:mysql://h122.wzk.icu:3306/sqoop \
--username hive --password hive@wzk.icu \
--table goodtbl \
--incremental append \
--hive-import \
--fields-terminated-by "\t" \
--hive-table mydb.goodtbl \
--check-column serialNumber \
--last-value 50 \
-m 1

以上參數說明:

  • check-column 用來指定一些列,來檢查是否可以作為增量數據進行導入,和關系型數據庫自增或時間戳類似。
  • last-value 制定上一次導入檢查列指定字段的最大值

在這里插入圖片描述

檢查Hive

我們通過指令查看 Hive 同步了多少數據過來:

select count(*) from mydb.goodtbl;

繼續生成

call batchInsertTestData(200, 1000);

增量導入

sqoop import \
--connect jdbc:mysql://h122.wzk.icu:3306/sqoop \
--username hive --password hive@wzk.icu \
--table goodtbl \
--incremental append \
--hive-import \
--fields-terminated-by "\t" \
--hive-table mydb.goodtbl \
--check-column serialNumber \
--last-value 100 \
-m 1

檢查Hive

重新查看Hive,看看目前同步了多少數據過來

select count(*) from mydb.goodtbl;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44448.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44448.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44448.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機的錯誤計算(二十九)

摘要 (1)討論近似值的錯誤數字個數。有時,遇到數字9或0, 不太好確認近似值的錯誤數字個數。(2)并進一步解釋確認計算機的錯誤計算(二十八)中一個函數值的錯誤數字個數。 理論上,我…

py2neo常用語句

1.連接數據庫 Neo4j服務器默認的端口號就是7474,所以本地的主機就是"http://localhost:7474" 。 默認的用戶名密碼都是neo4j, # 連接數據庫,輸入個人配置 graph Graph("http://localhost:7474//browser/", auth("neo4j"…

百日筑基第十九天-一頭扎進消息隊列2

百日筑基第十九天-一頭扎進消息隊列2 消息隊列的通訊協議 目前業界的通信協議可以分為公有協議和私有協議兩種。公有協議指公開的受到認可的具有規 范的協議,比如 JMS、HTTP、STOMP 等。私有協議是指根據自身的功能和需求設計的協 議,一般不具備通用性&…

數學建模·熵權法

熵權法 一種計算評價指標之間權重的方法。熵權法是一種客觀的方法,沒有主觀性,比較可靠。 具體定義 熵權法的核心在于計算信息熵,信息熵反映了一個信息的紊亂程度,體現了信息的可靠性 具體步驟 Step1正向化處理 將所以評價指標轉…

智能家居裝修怎么布線?智能家居網絡與開關插座布置

打造全屋智能家居。計劃的智能家居方案以米家系列為主,智能家居聯網方案以無線為主。裝修前為了裝備智能家居做了很多準備工作,本文深圳僑杰智能分享一個智能家居裝修和布線方面的心得與實戰知識。希望能對大家的裝修有所幫助。 ?1.關于網絡 如果房子比…

HTML基本標簽(二)

HTML基本標簽&#xff08;二&#xff09; 表格標簽 table媒體元素audio 音頻vido 視頻 form 表單元素 表格標簽 table <!-- caption 代表表格標題相關屬性border 邊框cellpadding 設置單元格內填充cellspacing 設置單元格間空隙width 設置表格寬度&#xff0c;默認是內容撐…

Python-數據爬取(爬蟲)

~~~理性爬取~~~ 杜絕從入門到入獄 1.簡要描述一下Python爬蟲的工作原理&#xff0c;并介紹幾個常用的Python爬蟲庫。 Python爬蟲的工作原理 發送請求&#xff1a;爬蟲向目標網站發送HTTP請求&#xff0c;通常使用GET請求來獲取網頁內容。解析響應&#xff1a;接收并解析HTTP響…

結合實體類型信息1——基于本體的知識圖譜補全深度學習方法

1 引言 1.1 問題 目前KGC和KGE提案的兩個主要缺點是:(1)它們沒有利用本體信息;(二)對訓練時未見的事實和新鮮事物不能預測的。 1.2 解決方案 一種新的知識圖嵌入初始化方法。 1.3 結合的信息 知識庫中的實體向量表示&#xff0b;編碼后的本體信息——>增強 KGC 2基…

基于AT89C51單片機超聲波水位液位控制系統設計(含文檔、源碼與proteus仿真,以及系統詳細介紹)

本篇文章論述的是基于AT89C51單片機的1616點陣LED顯示器字符滾動顯示設計的詳情介紹&#xff0c;如果對您有幫助的話&#xff0c;還請關注一下哦&#xff0c;如果有資源方面的需要可以聯系我。 目錄 設計任務與要求 原理圖 仿真圖 代碼 系統論文 資源下載 設計任務與要求…

處理線程安全的列表CopyOnWriteArrayList 和Collections.synchronizedList

ConcurrentModificationException 是 Java 中的一種異常&#xff0c;用于指示在迭代集合時&#xff0c;該集合的結構發生了并發修改。 在 Java 中&#xff0c;許多集合類&#xff08;如 ArrayList, HashMap 等&#xff09;都不是線程安全的。如果一個線程在迭代集合的同時&…

IDEA的JAVA版本沒有8怎么辦

問題&#xff1a; 很多小伙伴會出現如下的情況&#xff0c;java的版本很高&#xff0c;沒有8 解決 更換IDEA內置的Server URL的鏡像地址 就是這個 把其中的地址換成 https://start.aliyun.com/ https://start.aliyun.com/ 我們可以看到JAVA 8就出現了

Vue Router 4:構建高效單頁面應用的路由管理

引言 Vue Router的重要性在于它極大地簡化了單頁面應用(SPA)的開發流程。通過Vue Router&#xff0c;開發者可以輕松地將URL映射到對應的組件&#xff0c;實現頁面的無刷新跳轉&#xff0c;從而提升用戶體驗。 安裝和設置Vue Router 4 如何在Vue 3項目中安裝Vue Router 4 1…

期貨量化交易客戶端開源教學第四節——交易接口協議

指令介紹: 01----09:服務端發送到客戶端指令 10----49:客戶端發送操作指令 50----59:客戶端與服務端通訊指令 60----99:股票接口與服務端交互指令 --------------------------------------------------- 02:商品行情 03:用戶信息接收 04:用戶資產信息接收 ----發送到…

SpringBoot的動態代理默認用的哪個???

在 Spring Boot 中&#xff0c;動態代理的默認實現方式取決于被代理的對象的類型和具體配置&#xff1a; JDK 動態代理&#xff1a; 當代理的對象實現了一個或多個接口時&#xff0c;Spring 默認使用 JDK 動態代理。JDK 動態代理只能代理實現了接口的類。 CGLIB 動態代理&…

Python-PLAXIS自動化建模技術與典型巖土工程案例

有限單元法在巖土工程問題中應用非常廣泛&#xff0c;很多軟件都采用有限單元解法。在使用各大軟件進行數值模擬建模的過程中&#xff0c;巖土工程中的各種問題&#xff08;塑性、滲流、固結、動力、穩定安全、熱力TM&#xff09;&#xff0c;一步一步地搭建自己的Plaxis模型&a…

dm-verity hashtree的結構

參考了&#xff1a;實現 dm-verity | Android Open Source Project (google.cn)。基于這個添加了一層原始數據&#xff0c;便于理解。 結構圖如下&#xff1a; 對hashtree結構圖的解釋&#xff1a; dev data&#xff1a;表示我們的分區數據。這里我們將dev data按照指定的大…

【C++進階學習】第六彈——set和map——體會用C++來構建二叉搜索樹

set和map基礎&#xff1a;【C進階學習】第五彈——二叉搜索樹——二叉樹進階及set和map的鋪墊-CSDN博客 前言&#xff1a; 在上篇的學習中&#xff0c;我們已經學習了如何使用C語言來實現二叉搜索樹&#xff0c;在C中&#xff0c;我們是有現成的封裝好的類模板來實現二叉搜索樹…

第二講 數據結構

#數組模擬鏈表 #include <iostream> using namespace std; const int N 100010; int head ,e[N], ne[N],idx; //ne[i]表示節點i的next指針是多少 //e[i]表示節點i 的值 //head 表示頭結點的下標 //idx 存儲當前已經用了哪個點 void init() {head -1;//頭結點指向下標為…

前端實現PDF文件打印和下載

在Web開發中&#xff0c;經常需要處理PDF文件&#xff0c;尤其是在業務涉及發票、報告或文檔生成的場景下。本文將詳細介紹如何使用前端技術實現PDF文件的打印和下載&#xff0c;我們將利用HTML5的<embed>元素和JavaScript庫FileSaver.js來完成這一任務。 一、環境準備 …

Python 爬蟲:使用打碼平臺來識別各種驗證碼:

本課程使用的是 超級鷹 打碼平臺&#xff0c; 沒有賬戶的請自行注冊&#xff01; 超級鷹驗證碼識別-專業的驗證碼云端識別服務,讓驗證碼識別更快速、更準確、更強大 使用打碼平臺來攻破驗證碼難題&#xff0c; 是很簡單容易的&#xff0c; 但是要錢&#xff01; 案例代碼及測…