本篇主要是数据迁移,使用 Sqoop 把 Hive 中的数据迁移到 MySQL 中。
阅读此篇文章,需要先阅读前篇:
使用 jps 命令查看当前服务:
[root@centos2020 dataset]# jps
12707 RunJar
7876 NameNode
8183 ResourceManager
7930 DataNode
8477 NodeManager
17086 Jps
hive> create table dbtaobao.inner_user_log(user_id INT,item_id INT,cat_id INT,merchant_id INT,brand_id INT,month STRING,day STRING,action INT,age_range INT,gender INT,province STRING) COMMENT 'Welcome to XMU dblab! Now create inner table inner_user_log ' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
OK
Time taken: 0.464 seconds
INSERT OVERWRITE TABLE dbtaobao.inner_user_log select * from dbtaobao.user_log;
确认数据已经在 inner_user_log 中:
hive> select * from dbtaobao.inner_user_log limit 5;
OK
328862 406349 1280 2700 5476 11 11 0 0 1 四川
328862 406349 1280 2700 5476 11 11 0 7 1 重庆市
328862 807126 1181 1963 6109 11 11 0 1 0 上海市
328862 406349 1280 2700 5476 11 11 2 6 0 台湾
328862 406349 1280 2700 5476 11 11 0 6 2 甘肃
Time taken: 1.732 seconds, Fetched: 5 row(s)
创建数据库dbtaobao
mysql> create database dbtaobao;
确认character_set_server
编码是 utf8
mysql> use dbtaobao;
Database changed
mysql> show variables like "char%";
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/mysql/mysql5.7.26/share/charsets/ |
+--------------------------+----------------------------------------+
8 rows in set (0.11 sec)
创建表
CREATE TABLE `dbtaobao`.`user_log` (`user_id` varchar(20),`item_id` varchar(20),`cat_id` varchar(20),`merchant_id` varchar(20),`brand_id` varchar(20), `month` varchar(6),`day` varchar(6),`action` varchar(6),`age_range` varchar(6),`gender` varchar(6),`province` varchar(10)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
[root@centos2020 sqoop-1.4.7.bin__hadoop-2.6.0]# bin/sqoop export --connect jdbc:mysql://centos2020:3306/dbtaobao --username root --password root --table user_log --export-dir '/user/hive/warehouse/dbtaobao.db/inner_user_log' --fields-terminated-by ',';
参数解释:
–-connect jdbc:mysql://localhost:3306/dbtaobao
表示要复制数据到 mysql
-–username root
表示mysql 的远程登陆名
-–password root
表示mysql 的远程登陆密码
-–table user_log
表示 mysql 中的表名,即将被导入数据的表
export-dir ‘/user/hive/warehouse/dbtaobao.db/user_log
表示即将被导出的文件,是 hdfs 文件中的路径
fields-terminated-by ‘,’
表示hive 的文件字段的分隔符号