1.mysql先创建数据库 create database my;
2.进入数据库 use my;
3.创建表,表字段需要对应hive表的字段并且设置编码格式,不然无法导入数据 create table sf11 (name varchar(33),id int)default charset = utf8;
4.从hive中导入数据到mysql中:
sqoop export
--connect jdbc:mysql://192.168.56.110:3306/my //连接接口,my为数据库名称
--username root //mysql用户名
--password Newland@123 //mysql密码
--export-dir '/user/hive/warehouse/hive.db/sf1/000000_0' //数据在hdfs中的路径
--table sf9 //导进数据库中表的名称
--input-fields-terminated-by '^' //分隔符
关于用sqoop从hive(hdfs)导入数据到mysql遇到的问题:
1.hive默认的分隔符'^'
2.数据有中文:需要修改linux下的my.cnf文件,在mysqld下面增加character-set-server=utf8,重启mysql服务,service mysqld restart
PS:1.4.7版本的坑
not hive-conf-dir
复制hive lib 包下面的hive-common-1.1.0-cdh5.7.0.jar 至sqoop lib 包下
org.apache.hadoop.hive.shims.ShimLoader
拷贝 hive lib 包下 hive-exec-1.1.0-cdh5.7.0.jar 至 sqoop 的lib包下
PS:查看默认字符集
mysql> show variables like 'char%';
mysql中数据库与数据表编码格式的查看,创建及修改:https://www.nuoweb.com/database/8331.html
sqoop export --connect jdbc:mysql://192.168.56.110:3306/my --username root --password root --export-dir '/input/000000_0' --table top --input-fields-terminated-by '^';