背景: hive中虽然有数据类型,但是int、double、string都可以在hive中存储为string类型,hive中String类型是没有长度
限制的。hive中空值有三种情况,null(NULL值)、'\0'字符(hive自定义的空字符)、''(空字符)。
由于hive在存储上存在以上情况,当把数据导入mysql会导致一下问题:
1、字符长度太小的异常。由于mysql定义表结构的时候会定义字段长度值,当hive中数据的int、double、String长度大于mysql表定义的长度会出现mysql字段定义的数据长度太多而出现异常。
2、int、double空数据异常。hive中int、double的空字符是有以上三种情况,会导致空值存储到mysql时出现类型不匹配而出现异常。
解决办法:
1、根据业务场景设定mysql字段长度。
2、在数据导从hive导入mysql之前把空字符替换成默认字符。(已安装则跳过)
yum -y install wget
安装这个包后,会获得两个mysql的yum repo源:
修改配置文件/etc/my.cnf,添加
然后,重启服务:
MYSQL就可以无密码登录了
删除配置文件my.cnf中的skip-grant-tables
重启服务: systemctl restart mysqld
使用密码登录: mysql -uroot -p
注:需要关闭centos防火墙
查看版本号:
mysql -V
启动mysql服务
systemcl start mysqld.service
停止mysql服务
systemctl stop mysqld.service
重启mysql服务
systemctl restart mysqld.service
查看mysql服务当前状态
systemctl status mysqld.service
设置mysql服务开机自启动
systemctl enable mysqld.service
停止mysql服务开机自启动
systemctl disable mysqld.service
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
输出内容最后root@localhost:XXXXXXXX中的XXXX为初始密码
编写后保存MySQL命令行导出数据库
:
1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录
如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin
(或者直接将windows的环境变量path中添加该目录)
2,导出数据库:mysqldump -u 用户名 -p 数据库名 >导出的文件名
如我输入的命令行:mysqldump -u root -p news >news.sql (输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)
3、会看到文件news.sql自动生成到bin文件下
命令行导入数据库:
1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)
4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:mysql>use 目标数据库名
如我输入的命令行:mysql>use news
6,导入文件:mysql>source 导入的文件名
如我输入的命令行:mysql>source news.sql
评论列表(0条)