1、相关参数介绍
1.1 sqoop参数
1.2 导入 import
1.3 导出 export
2、sqoop使用案例
说明:使用下方命令需要在/etc/profile中配置SQOOP_HOME;
如未配置,需要在sqoop安装目录下使用bin/sqoop命令格式。
2.1 测试Sqoop是否能够成功连接数据库
命令:
sqoop list-databases --connect jdbc:mysql://node1:3306/ --username root --password 123456
2.2 建表语句
2.2.1 HIVE建表语句
CREATE EXTERNAL TABLE IF NOT EXISTS student(
id BIGINT comment '学生ID',
name STRING comment '姓名',
age INT comment '年龄',
sex STRING comment '性别',
clazz STRING comment '班级'
)
comment '学生表'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/user/lumia/hive/data/student';
2.2.2 MySQL建表语句
CREATE TABLE `student` (
`id` bigint(20) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` varchar(20) DEFAULT NULL,
`clazz` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
2.2.3 向MySql中导入数据
导入student2.sql
执行命令 mysql -u root -p123456 student < /linux中path路径/student2.sql
2.3 MySQL to HDFS
2.3.1全部导入
sqoop import \
--connect jdbc:mysql://node1:3306/student \
--username root \
--password 123456 \
--table student \
-m 1 \
--target-dir /user/lumia/hdfs/data/student/ \
--direct \
--delete-target-dir \
--fields-terminated-by "\t"
2.3.2 查询导入
sqoop import \
--connect jdbc:mysql://node1:3306/student\
--username root \
--password 123456\
--target-dir /user/lumia/hdfs/data/student/ \
--delete-target-dir \
-m 1 \
--fields-terminated-by "\t" \
--query 'select name,sex from studentwhere id <=1001 and $CONDITIONS;'
提示:must contain '$CONDITIONS' in WHERE clause.
如果query后使用的是双引号,则$CONDITIONS前必须加转移符,
防止shell识别为自己的变量。
2.3.3 导入指定列
sqoop import \
--connect jdbc:mysql://node1:3306/student\
--username root \
--password 123456\
--table student \
--target-dir /user/lumia/hdfs/data/student/ \
--delete-target-dir \
-m 1 \
--fields-terminated-by "\t" \
--columns id,sex
提示:columns中如果涉及到多列,用逗号分隔,分隔时不要添加空格
2.3.4 筛选查询导入数据
sqoop import \
--connect jdbc:mysql://node1:3306/student \
--username root \
--password 123456\
--target-dir /user/lumia/hdfs/data/student/ \
--delete-target-dir \
-m 1 \
--fields-terminated-by "\t" \
--table student\
--where "id=1"
2.4 MySQL to HIVE
sqoop import \
--connect jdbc:mysql://node1:3306/student2 \
--username root \
--password 123456 \
--table student3 \
-m 1 \
--split-by age \
--target-dir /user/lumia/hive/data/student2/ \
--hive-import \
--hive-database default \
--hive-table student2 \
--fields-terminated-by '\t' \
--lines-terminated-by '\n'
提示:该过程分为两步,第一步将数据导入到HDFS,第二步将导入到HDFS的数据迁移到Hive仓库
2.5 MySql to HBase
sqoop import \
--connect jdbc:mysql://192.168.0.120:3306/student \
--username root \
--password 123456 \
--table student \
--hbase-table student \
--hbase-create-table \
--hbase-row-key id \
--m 1 \
--column-family 'info'
2.6 HDFS to MySQL
sqoop export \
--connect jdbc:mysql://node1:3306/student2 \
--username root \
--password 123456 \
-m 1 \
--columns id,name,age,sex,clazz \
--export-dir /user/lumia/hdfs/data/student3/ \
--fields-terminated-by '\t' \
--lines-terminated-by '\n' \
--table student3