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列族名