Sqoop

Sqoop部署

解压

tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/Module/

重命名

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop

配置sqoop-env.sh

mv sqoop-env-template.sh sqoop-env.sh

export HADOOP_COMMON_HOME=/opt/Module/hadoop-3.1.3
export HADOOP_MAPRED_HOME=/opt/Module/hadoop-3.1.3
export HIVE_HOME=/opt/Module/hive3.1.2
#export ZOOKEEPER_HOME=zookeeper_home
#export ZOOCFGDIR=zookeeper_home
#export HBASE_HOME=hbase_home

拷贝JDBC驱动

cp mysql-connector-java-5.1.7-bin.jar /opt/Module/sqoop/lib/

验证Sqoop

bin/sqoop-help

测试Sqoop是否能够成功连接数据库

bin/sqoop list-databases --connect jdbc:mysql://Hadoop2:3306/ --username root --password 123456

若能显示MySQL的数据库,至此环境配置完成 。

Sqoop 实操

数据准备
mysql -uroot -p123456
create database Sqoop_db;
create table Sqoop_db.staff(id int(4) primary key not null auto_increment, name varchar(255), sex varchar(255));
insert into Sqoop_db.staff(name, sex) values('Thomas', 'Male');
insert into Sqoop_db.staff(name, sex) values('Catalina', 'FeMale');
select * from Sqoop_db.staff; 数据准备完毕。
导入数据

导入数据
在Sqoop中,“导入”概念指:从关系型数据库(RDBMS)向大数据集群(HDFS,HIVE,HBASE)中传输数据,叫做: 导入,即使用import关键字。

导入整张表数据到HDFS
导入整张表数据

bin/sqoop import \
--connect jdbc:mysql://192.168.188.130:3306/Sqoop_db 
--driver com.mysql.jdbc.Driver
--username root 
--password 034578
--table staff 
--target-dir /user/a1 
--num-mappers 1 
--delete-target-dir
--fields-terminated-by "\t" 
导入查询结果集到HDFS
导入查询结果集
where子句中必须包含$CONDITIONS
如果query后使用的是双引号,$CONDITIONS前必须加转移符,防止shell识别为自己的变量。

bin/sqoop import 
--connect jdbc:mysql://192.168.183.120:3306/Sqoop_db 
--driver com.mysql.jdbc.Driver 
--username root 
--password 456879 
--target-dir /user/a1 
--num-mappers 1 
--delete-target-dir 
--fields-terminated-by "\t" 
--query 'select *from Sqoop_db.staff where id=2 and $CONDITIONS;'
导入指定列数据到HDFS
导入指定列数据

bin/sqoop import 
--driver com.mysql.jdbc.Driver 
--connect jdbc:mysql://192.168.156.120:3306/Sqoop_db 
--username root 
--password 091876 
--target-dir /user/a1 
--delete-target-dir 
--num-mappers 1 
--fields-terminated-by "\t" 
--table staff 
--columns id
导入where过滤的数据到HDFS
导入where过滤的数据

bin/sqoop import 
--driver com.mysql.jdbc.Driver 
--connect jdbc:mysql://192.168.150.190:3306/Sqoop_db 
--username root 
--password 569416 
--target-dir /user/a1 
--delete-target-dir 
--table staff 
--columns id 
--where id=2 
--fields-terminated-by "\t"
RDBMS导入数据到Hive
RDBMS导入数据到Hive
小知识点: 该过程系统会分为两步运行,第一步将数据导入到HDFS,第二步将导入到HDFS的数据迁移到Hive仓库,第一步默认的临时目录是/user/用户名/表名。

bin/sqoop import 
--driver com.mysql.jdbc.Driver 
--connect jdbc:mysql://192.168.156.145/Sqoop_db 
--username root 
--password 861816 
--table staff 
--num-mappers 1 
--hive-import 
--fields-terminated-by "\t" 
--hive-overwrite 
--hive-table staff_hive
RDBMS导入数据到Hbase
RDBMS导入数据到Hbase
提示:sqoop1.4.6只支持HBase1.0.1之前的版本的自动创建HBase表的功能
解决方案:手动创建HBase表
hbase> create 'hbase_company,'info'

bin/sqoop import 
--connect jdbc:mysql://192.168.167.122:3306/Sqoop_db 
--username root 
--password 000000 
--table staff 
--columns "id,name,sex" 
--column-family "info" 
--hbase-create-table 
--hbase-row-key "id" 
--hbase-table "staff_hbase" 
--num-mappers 1 
--split-by id
导出数据

在Sqoop中,“导出”概念指:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群(RDBMS)中传输数据,叫做: 导出,即使用export关键字。

HIVE/HDFS导出数据到RDBMS
HIVE/HDFS导出数据到RDBMS
提示:Mysql中如果表不存在,不会自动创建。(若两边数据有相同注意主键冲突问题truncate table staff;)

bin/sqoop export 
--driver com.mysql.jdbc.Driver 
--connect jdbc:mysql://192.168.187.130:3306/Sqoop_db 
--username root 
--password 021216 
--table staff 
--num-mappers 1 
--export-dir /user/hive/warehouse/staff_hive 
--input-fields-terminated-by "\t"
sqoop脚本导出数据
sqoop脚本导出数据

mkdir job
touch job_hdfsVrdbms.opt
vim /opt/job/job_hdfsVrdbms.opt
bin/sqoop --options-file /opt/job/job_hdfsVrdbms.opt

脚本内容:
export
--driver
com.mysql.jdbc.Driver
--connect
jdbc:mysql://Hadoop2:3306/Sqoop_db
--username
root
--password
021216
--table
staff
--num-mappers
1
--export-dir
/user/hive/warehouse/staff_hive
--input-fields-terminated-by
"\t"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值