關係型數據庫導入導出絕招出爐

Sqoop作爲數據傳輸的工具,對於Hadoop與傳統數據庫之間數據的傳輸起着橋樑作用,那麼到底如何導入導出數據呢?

第一:使用MapReduce作業來執行導入:

1Sqoop首先檢查將要導入的表

1、確定主鍵(如果有的話),調用mapreduce,根據主鍵分割map

2、沒有主鍵,運行邊界查詢確定導入的記錄數(找到一個min和一個max,確定邊界進行劃分)

3、通過任務數來劃分邊界查詢的結果,使得他們有相同的負載

2Sqoop爲每個將導入的表生成Java源文件

1、在導入過程中編譯和使用文件

2、導入後依然保留,可以被安全刪除

第二:使用sqoop導入整個數據庫:

(1)import-all-tables工具導入整個數據庫

1、存儲爲逗號間隔的文件

2、默認導入到HDFShome目錄

3、數據將放在每個表的子目錄中

wKiom1hXdT7iH2INAAAShqPt8jo536.png-wh_50

2)使用--warehouse-dir選項指定不同的基礎目錄wKiom1hXdVPCB-YqAAAVy2VgGNc378.png-wh_50

第三:使用Sqoop導入單個表:

1import工具導入單個表

1、示例:導入accounts

以逗號分隔的方式存儲數據到HDFS

wKioL1hXdWeh-vJzAAASa1rV2Lo830.png-wh_50

2、指定tab分隔字段

wKioL1hXdXbhOTNYAAAV-q0G1GU170.png-wh_50

第四:增量導入

(1)  如果上次記錄導入後發生了變更怎麼辦?

1、可以重新導入所有記錄,但是效率低

(2)  Sqooplastmodified增量模式導入新的和修改的記錄

1、基於指定的timestamp

2、確保當記錄更新或者被添加時timestamp也更新

wKiom1hXdYfRTTZTAADcbxJuKiM539.png-wh_50

(3)append增量模式只導入新紀錄

1、基於指定列的最後一條記錄

wKioL1hXdZeSBMMwAADIokr7ixk722.png-wh_50

第五:使用SqoopHadoop導出數據到RDBMS

1Sqoopimport工具把數據從RDBMS拉入到HDFS

2)有時候也需要把HDFS的數據推回到RDBMS,當需要對大數據集進行批處理,並導出結果到RDBMS供其它系統訪問

3Sqoop使用export工具RDBMS表在導出前必須已存在

wKiom1hXdaWRjKDDAADrmhoLyKM720.png-wh_50

掌握了以上方式,對於關係型數據庫的導入和導出基本有一個明確的認知和了解,其實我們在日常的學習和實踐過程中要多去看看別人的分享,畢竟做技術每個人的經歷與經驗不一樣,有時候說不準會有意向不到的收穫。我自己平時喜歡關注“大數據cn”、“大數據時代學習中心”這些微信服務號,對於我個人而言,起到了很大的促進作用,也期待每一個學習大數據的人都能夠有所收穫!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章