Sqoop = SQL- to-Hadoop,是易用、並行的導入導出工具。
一. 安裝
1.1 安裝並設置環境變量
解壓縮,重命名爲sqoop
sudo gedit /etc/profile
文末添加安裝路徑,別忘了source一下
export SQOOP_HOME=/home/hduser/sqoop
export PATH=$SQOOP_HOME/bin:$PATH
1.2 修改配置文件sqoop-env.sh
mv sqoop-env-template.sh sqoop-env.sh
配置文件內容
export HADOOP_COMMON_HOME=/home/hduser/hadoop-2.2.0
export HADOOP_MAPRED_HOME=/home/hduser/hadoop-2.2.0
export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/home/hduser/hive
export ZOOCFGDIR=/usr/local/zk
1.3 將JDBC驅動複製到sqoop的lib目錄
mysql的jdbc驅動mysql-connector-java-5.1.10.jar複製到sqoop項目的lib目錄下
1.4 啓動Hadoop集羣
start-all.sh
二 . sqoop 小實例
2.1 Sqoop入門-使用方法
用法: sqoop COMMAND [ARGS]
支持的指令(command):
codegen 生成關係數據庫表映射的Java文件
create-hive-table 生成與關係數據庫對應的 Hive表
export 導出hdfs目錄到關係數據庫中
import 導入關係數據庫表到HDFS
import-all-tables 導入關係數據庫所有表到HDFS
list-databases 顯示關係數據庫所有的數據庫
list-tables 顯示關係數據庫所有的表
eval 執行SQL並顯示結果
version 顯示版本信息
2.2 Mysql到Hive–初始化mysql數據庫
mysql -uroot -p
create database study;
use study;
create table table1 (id int,name varchar(32) ,primary key(id));
insert into table1 values(1,'n1');
insert into table1 values(2,'n2');
insert into table1 values(3,'n3');
insert into table1 values(4,'n4');
insert into table1 values(5,'n5');
2.3 Mysql到Hive–從Mysql導入數據到Hive
GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%';
flush privileges;
sqoop import --connect jdbc:mysql://node01:3306/study --username root --password ""--table table1 --hive-import --hive-table table1 -m 1
sqoop import --connect jdbc:mysql://node01:3306/study --username root --password "" --as-avrodatafile --table table1 --hive-import --hive-table table2 -m 1
sqoop list-databases --connect jdbc:mysql://node01:3306/study --username root --password ""
2.4 Mysql到Hive–查看Hive中導入的數據
hive
select * from products;
導入參數說明:
sqoop import
--connect jdbc:mysql://node01:3306/study //Mysql JDBC連接串
--username root //Mysql用戶名
--password 123 //Myql用戶密碼
--table table1 //Mysql被導出的數據表
--hive-import //操作類型,導入數據到hive
--hive-table table1 //導入到hive表名
-m 1 //並行map任務數量
2.5 Hive到Mysql–在Mysql中建立空表
mysql -uroot -p
use study;
create table table2 (id int,name varchar(32));
2.6 Hive到Mysql–從Hive導出數據到Mysql
sqoop export --connect jdbc:mysql://node01:3306/study --username root --password "" --table table2 --export-dir /user/hive/warehouse/table1 --input-fields-terminated-by '\001'
2.7 Hive到Mysql–Mysql查看導出結果
select * from table2;
Hive導出參數說明:
sqoop export
--connect jdbc:mysql://node01:3306/study //Mysql JDBC連接串
--username root //Mysql用戶名
--password 123 //Myql用戶密碼
--table table2 //導入Mysql的數據表
--export-dir /user/hive/warehouse/table1 //Hive表HDFS路徑
--input-fields-terminated-by ‘\001‘ //字段分割符號
2.8 Mysql導入到Hbase
啓動HBase
/home/hduser/hbase/bin/start-hbase.sh
導入數據到Hbase
sqoop import --connect jdbc:mysql://node01:3306/study --username root --password 123 --table table1 --hbase-table table1 --hbase-create-table --hbase-row-key id --column-family cf
查看導入結果
hbase shell
list
scan "table1"
Mysql到Hbase參數說明:
sqoop import
--connect jdbc:mysql://node01:3306/study //Mysql JDBC連接串
--username root //Mysql用戶名
--password 123 //Myql用戶密碼
--table table1 //Mysql被導出的數據表
--hbase-table table1 //導入到Hbase表名
--hbase-create-table //自動創建Hbase新表
--hbase-row-key id //Hbase新表Key
--column-family cf //Hbase列族名