Sqoop
關系DB與Hive/HDFS/HBase導入導出的Mapreduce框架。
http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.0/SqoopUserGuide.html
ETL: Extraction-Transformation-Loading的縮寫,數據提取、轉換(業務處理)和加載。
文件數據源:hive load命令
關系DB數據源:sqoop抽取
Sqoop import數據到HDFS/Hive/Hbase-->業務處理--->Sqoop export數據到關系數據庫
Sqoop import 從關系數據庫抽取到HDFS
Sqoop export 從HDFS導回到關系數據
二、Sqoop Linux下開發的步驟
Mysql Jdbc驅動放到SQOOP_HOME/lib下
放lib的目錄(eg:cd /opt/cloudera/parcels/CHD/lib/sqoop/lib,有時候master和slave節點都要存放此lib)
1、Sqoop 基本導入和導出講解(command line方式)
sqoop import --connect jdbc:mysql://master:3306/test \ (此句是配置mysql路徑,linux下一行未完結要加上反斜杠)
--username root --password 123456 --table rpt_sale_daily \ (配置mysql的帳號和密碼和table表名)
--columns "dateid,huodong,pv,uv" \ (配置table抽取的字段)
--where “dateid='2015-08-28'” \ (表抽取查詢條件)
--target-dir sqoop/rpt_sale_daily \ (表抽取存放目標位置)
-m 1 (sqoop抽取要啟動的map數量,如果抽取量多的話可以適當調節map的數量)


Sqoop import(抽取)需要注意:
抽取到target-dir ,列用逗號分隔;
抽取到hive表時,會根據hive表的列分隔符自動匹配。
2.利用sqoop --options也可以進行sqoop抽取但是不支持往數據里面傳參數
sqoop --options-file ./test.opt 不支持往opt文件里傳參數。(shell腳本方式)
先寫好執行文件test.opt

在shell腳本里寫好執行sqoop執行opt文件命令

執行命令

相比下command line的方式會比較好,因為可以利用shell腳本進行傳參。不過還是過於麻煩
