Hive 使用mysql 数据库乱码问题
1.错误情况 当 :
hive >create table test(
> sno int comment ‘编号’,
>sname String comment ‘姓名’
>)row format delimited fields terminated by '\t';
>desc test;
注释出现乱码
2.解决方案:
01.修改my.cnf文件 命令:vi /etc/my.cnf 或者sudo vi /etc/my.cnf (根据自己情况选择),进入文件添加如下文件
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
02.重启mysql 先退出msql客户端(quit;),然后重启 (sudo service mysqld restart)
03.进入数据库 metastore 中执行以下 5 条 SQL 语句 :
修改表字段注解和表注解
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
修改分区字段注解:
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
修改索引注解:
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
直接在红线这里依次执行上面语句
04.验证:
show variables like 'char%';
show variables like "colla%";
3.数据测试:
hive >create table emp(
>empno int comment '员工编号',
>ename string comment '员工姓名') row format delimiteds fields terminated by '\t';hive
hive >desc emp;
乱码解决了。