使用sqoop工具從oracle導入數據


 

sqoop工具是hadoop下連接關系型數據庫和Hadoop的橋梁,支持關系型數據庫和hive、hdfs,hbase之間數據的相互導入,可以使用全表導入和增量導入

從RDBMS中抽取出的數據可以被MapReduce程序使用,也可以被類似Hive的工具使用;得到分析結果后sqoop可以將結果導回數據庫,供其他客戶端使用

sqoop安裝


 

 

解壓然后配置環境變量即可

 

從oracle向HDFS導入數據


 

原理: 

 1)在導入之前,sqoop使用jdbc來檢查將要導入的表,檢索出表中所有的列及數據類型,然后將這些類型映射為java類型,在mapreduce中將使用對應的java類型保存字段的值。sqoop的代碼生成器使用這些信息來 創建對應的類,用於保存從表中抽取的記錄

2)不需要每次都導入整張表,可以在查詢中加入where子句,來限定需要導入的記錄

 

 

導入:

遍歷oracle的表:

sqoop list-tables --connect jdbc:oracle:thin:@192.168.**.**:**:**--username **--password=**

導入oracle中的表:

sqoop import --connect jdbc:oracle:thin:@192.168.**.**:**:**--username **--password **--table ENTERPRISE -m 1 --target-dir /user/root --direct-split-size 67108864

 


其中split-size指定導入的HDFS路徑與導入的文件大小限制

 

注意:1. 默認情況下會使用4個map任務,每個任務都會將其所導入的數據寫到一個單獨的文件中,4個文件位於同一目錄,本例中 -m1表示只使用一個map任務

   2. 文本文件不能保存為二進制字段,並且不能區分null值和字符串值"null"

   3. 執行上面的命令后會生成一個ENTERPRISE.java文件,可以通過ls ENTERPRISE.java查看,代碼生成是sqoop導入過程的必要部分,sqoop在將源數據庫中的數據寫到HDFS前,首先會用生成的代碼將其進行反序列化

 

在MapReduce下查看:

 

在namenode下查看:

 

查看VEHICLE表:

查看part-m-00000中數據

 

oralce中每條記錄對應上面一行數據

 

數據導出


 

 

使用export可將hdfs中數據導入到遠程數據庫中

 

eg: 

export --connect jdbc:oracle:thin:@192.168.**.**:**:**--username **--password=** -m1 table VEHICLE--export-dir /user/root/VEHICLE

 

向Hbase導入數據


 

 

eg:

sqoop import --connect jdbc:oracle:thin:
@192.168.**.**:**:**--username **--password=**--m 1 --table VEHICLE --hbase-create-table --hbase-table VEHICLE --hbase-row-key ID --column-family VEHICLEINFO --split-by ID

 

 


免責聲明!

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



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