准备工作:
安装好HIVE3.1.2和Spoon1.47,有很多配置 安装Debeaver,配置连接,在Debeaver中操作Mysql表和HIVE表
驱动版本
开始操作:
mysql建表
- 在mysql创建原始表(不含分片字段),并插入数据
CREATE TABLE `stu1` (
`id` int DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`age` int DEFAULT NULL
)
INSERT into stu1 values(1001,'zhangsan',21),(1002,'lisi',22),(1003,'xiaohua',23);
Hive建表
- 在HIVE中创建分片表(只能有一个分片字段)
CREATE EXTERNAL TABLE IF NOT EXISTS `stu_partition` (
`id` int ,
`name` string,
`age` int)
PARTITIONED BY (
`my_date` string COMMENT 'date used by partition'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ;
Spoon传输,从mysql到HIVE
增量传输append测试成功
bin/sqoop import \
--connect jdbc:mysql://111.111.111.111:3306/test \
--username admin \
--password '123456!Aa' \
--table stu1 \
--columns id,name,age \
--num-mappers 1 \
--fields-terminated-by ',' \ #与建表的分割符对应
--hive-import \
--hive-drop-import-delims \
--hive-table default.stu_partition \
--incremental append \
--check-column id \
--last-value 1000 \
--hive-partition-key my_date \ # 只能一个,多个需其他方法
--hive-partition-value 01
Spoon传输,从Hive到mysql
目前只能按分片数据单独下载
bin/sqoop export \
--connect jdbc:mysql://111.111.111.111:3306/test \
--username admin \
--password '123456!Aa' \
--table stu1 \
--num-mappers 1 \
--export-dir /opt/hive-3.1.2/warehouse/stu_partition/my_date=01/ \
--fields-terminated-by ',' \
--columns id,name,age
全量导入
#全量导入
bin/sqoop import \
--connect jdbc:mysql://111.111.111.111:3306/test \
--username admin \
--password '123456!Aa' \
--num-mappers 1 \
--table stu1 \
--hive-import \
--fields-terminated-by ',' \
--hive-table default.stu2
#带筛选的全量导入
bin/sqoop import \
--connect jdbc:mysql://111.111.111.111:3306/test \
--username admin \
--password '123456!Aa' \
--num-mappers 1 \
--query "select * from stu1 where id > 1001 and \$CONDITIONS;" \
--hive-import \
--fields-terminated-by ',' \
--hive-table default.stu3 \
--target-dir /opt/hive-3.1.2/warehouse/stu3
|