Hive學習之七《 Sqoop import 從關系數據庫抽取到HDFS》


一、什么是sqoop

  Sqoop是一款開源的工具,主要用於在Hadoop(Hive)與傳統的數據庫(mysql、postgresql...)間進行數據的傳遞,可以將一個關系型數據庫(例如 :MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。

二、sqoop的特點

  Sqoop中一大亮點就是可以通過hadoop的mapreduce把數據從關系型數據庫中導入數據到HDFS。

三、Sqoop import 命令

  將Mysql的jdbc驅動放在/opt/cloudera/parcels/CDH/lib/sqoop/lib目錄下。

  如下圖:

  

  參考學習網址:

  http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.0/SqoopUserGuide.html

  命令詳解:

  1、基本語法

1 $ sqoop import (generic-args) (import-args)$ sqoop-import (generic-args) (import-args)

 

  2、基本命令

  查看網址:

  http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.0/SqoopUserGuide.html

  中的sqoop import的 Import control arguments

   

  3、案例

  方式一:

  將表rpt_sale_daily中數據導入到HDFS上。

  目標目錄為:sqoop/rpt_sale_daily。

sqoop import --connect jdbc:mysql://master:3306/test \
--username root --password 123456 --table rpt_sale_daily \
--columns "dateid,huodong,pv,uv" \
--where "dateid='2015-08-28'" \
--target-dir sqoop/rpt_sale_daily \
-m 1

  如果提示 sqoop/rpt_sale_daily 目錄已經存在,執行:

hadoop fs -rmr sqoop/rpt_sale_daily

執行結果:如下圖

20條數據成功導入,開始檢測吧親。

執行代碼:

hadoop fs -cat sqoop/rpt_sale_daily/part-m-00000

數據如下圖:

關系數據庫表rpt_sale_daily里面的數據如下:

對比,數據相同,成功導入。

 方式二:

通過opt文件的方式傳送:

新建test.opt文件:

 1 import 
 2 --connect 
 3 jdbc:mysql://192.168.0.115:3306/test 
 4 --username 
 5 root 
 6 --password 
 7 123456 
 8 --table 
 9 rpt_sale_daily 
10 --columns 
11 "id,huodong,pvv,uvv" 
12 --where 
13 "id='2015-08-28'" 
14 --target-dir 
15 sqoop/rpt_sale_daily 
16 -m 1

執行指令:

sqoop options-file test.opt

執行過程和結果和方式一一樣。


免責聲明!

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



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