一、什麼是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
執行過程和結果和方式一一樣。