sqoop

一:RDBMS 到 HDFS

1) 确定Mysql 服务开启正常
2) 在Mysql 中新建一张表并插入一些数据
$ mysql -uroot -p000000
mysql> create database company;
mysql> create table company.staff(id int(4) primary key not null
auto_increment, name varchar(255), sex varchar(255));
mysql> insert into company.staff(name, sex) values('Thomas', 'Male');
mysql> insert into company.staff(name, sex) values('Catalina',
'FeMale');

全量导入例如:
bin/sqoop import \ (输入命令)
--connect jdbc:mysql://bigdata.ibeifeng.com:3306/testdb \ (指定连接jdbc端口和数据库名称)
--username root \ (数据库用户名)
--password root123 \ (密码 若不适用明文指定数据库密码 则可以用-P)
--table user \ (指定数据库中的一张表)
--target-dir /input/import \ (指定数据导入到HDFS上的目录)
--delete-target-dir \ //如果目标目录已存在,则先删除
--num-mappers 1 \ (指定使用导入数据的map个数,mapreduce(V1)中的方式可以用-m 1 代替(过时))
--fields-terminated-by "," (目标文件的分隔符, 默认情况下,导入HDFS的每行数据分隔符是逗号)

 

---------------------------------
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/test \
--username root \
--password root \
--table company \
--target-dir /sqoop1 \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t";

查询导入:

bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/test \
--username root \
--password root \
--table company \
--target-dir /sqoop \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--query 'select name,sex from company where id <=1 and $CONDITIONS;'

 

导入列:

bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/test \
--username root \
--password root \
--target-dir /sqoop1 \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--columns id,sex \
--table company

使用sqoop查询导入

bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/test \
--username root \
--password root \
--target-dir /sqoop1 \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t" \
--table company \
--where "id=1"

 

二:RDBMS 到HIVE

两步:先导入HDFS ,然后导入 HIVE,不用在hive中创建表

bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/test \
--username root \
--password root \
--table company \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table staff_hive;

 

三:导出数据,hive到RDBMS

在MySQL建表

create table if not exists staff_m(
id int auto_increment,
name varchar(100),
sex varchar(20),
primary key(id)
);

 

bin/sqoop export \
--connect jdbc:mysql://hadoop1:3306/test \
--username root \
--password root \
--table staff_m \
--num-mappers 1 \
--export-dir /user/hive/warehouse/staff \
--input-fields-terminated-by "\t"

 

脚本打包

你可能感兴趣的:(sqoop)