-
概述
sqoop是apache旗下一款“Hadoop和關係數據庫服務器之間傳送數據”的工具。
導入數據:MySQL,Oracle導入數據到Hadoop的HDFS、HIVE、HBASE等數據存儲系統;
導出數據:從Hadoop的文件系統中導出數據到關係數據庫mysql等. -
原理
將導入或導出命令翻譯成mapreduce程序來實現
在翻譯出的mapreduce中主要是對inputformat和outputformat進行定製 -
安裝
安裝sqoop的前提是已經具備java和hadoop的環境
3.1 下載並解壓
這裏用的是cdh版本sqoop.
下載地址 http://archive.cloudera.com/cdh5/cdh/5/
sqoop1版本詳細下載地址 http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.14.0.tar.gz
sqoop2版本詳細下載地址http://archive.cloudera.com/cdh5/cdh/5/sqoop2-1.99.5-cdh5.14.0.tar.gz
裏使用sqoop1的版本,下載之後上傳到/export/softwares目錄下,然後進行解壓cd /export/softwares tar -zxvf sqoop-1.4.6-cdh5.14.0.tar.gz -C ../servers/
3.2 修改配置文件
cd /export/servers/sqoop-1.4.6-cdh5.14.0/conf/ cp sqoop-env-template.sh sqoop-env.sh vim sqoop-env.sh #修改內容 export HADOOP_COMMON_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0 export HADOOP_MAPRED_HOME=/export/servers/hadoop-2.6.0-cdh5.14.0 export HIVE_HOME=/export/servers/hive-1.1.0-cdh5.14.0
3.3 加入額外的依賴包
sqoop的使用需要添加兩個額外的依賴包,一個是mysql的驅動包,一個是java-json的的依賴包,不然就會報錯.
mysql-connector-java-5.1.40.jar
java-json.jar
將這個兩個jar包添加到sqoop的lib目錄下 -
驗證啓動
cd /export/servers/sqoop-1.4.6-cdh5.14.0 bin/sqoop-version
-
Sqoop的數據導入
5.1 導入數據庫表數據到HDFS
下面的命令用於從MySQL數據庫服務器中的emp表導入HDFS。bin/sqoop import --connect jdbc:mysql://192.168.1.101:3306/userdb --password admin --username root --table emp --m 1
在導入表數據到HDFS使用Sqoop導入工具,我們可以指定目標目錄。
使用參數 --target-dir來指定導出目的地,
使用參數–delete-target-dir來判斷導出目錄是否存在,如果存在就刪掉
使用參數–fields-terminated-by可以指定分隔符bin/sqoop import --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --delete-target-dir --table emp --target-dir /sqoop/emp --m 1 --fields-terminated-by '\t'
5.2 導入關係表到HIVE
將我們mysql表當中的數據直接導入到hive表中的話,我們需要將hive的一個叫做hive-exec-1.1.0-cdh5.14.0.jar的jar包拷貝到sqoop的lib目錄下cp /export/servers/hive-1.1.0-cdh5.14.0/lib/hive-exec-1.1.0-cdh5.14.0.jar /export/servers/sqoop-1.4.6-cdh5.14.0/lib/
準備hive數據庫與表
hive (default)> create database sqooptohive; hive (default)> use sqooptohive; hive (sqooptohive)> create external table emp_hive(id int,name string,deg string,salary int ,dept string) row format delimited fields terminated by '\001';
導入
bin/sqoop import --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --table emp --fields-terminated-by '\001' --hive-import --hive-table sqooptohive.emp_hive --hive-overwrite --delete-target-dir --m 1
hive表數據查看
select * from emp_hive;
5.3 導入關係表到hive並自動創建hive表
我們也可以通過命令來將我們的mysql的表直接導入到hive表當中去bin/sqoop import --connect jdbc:mysql://172.16.43.67:3306/userdb --username root --password admin --table emp_conn --hive-import -m 1 --hive-database sqooptohive;
通過這個命令,我們可以直接將我們mysql表當中的數據以及表結構一起倒入到hive當中去
-
Sqoop的數據導出
hdfs導出到mysql
通過export來實現數據的導出,將hdfs的數據導出到mysql當中去bin/sqoop export \ --connect jdbc:mysql://172.16.43.67:3306/userdb \ --username root --password admin \ --table emp_out \ --export-dir /sqoop/emp \ --input-fields-terminated-by ","
sqoop更多參數可以參考sqoop官網 sqoop官網
sqoop的安裝和簡單使用案例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.