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

Hive 使用mysql 数据库乱码问题_第1张图片

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;

Hive 使用mysql 数据库乱码问题_第2张图片

直接在红线这里依次执行上面语句

04.验证:

show variables like 'char%';

Hive 使用mysql 数据库乱码问题_第3张图片


show variables like "colla%";

Hive 使用mysql 数据库乱码问题_第4张图片

3.数据测试:

hive >create table emp(

       >empno int comment '员工编号',
              >ename string comment '员工姓名') row format delimiteds fields terminated by '\t';hive

hive >desc emp;

Hive 使用mysql 数据库乱码问题_第5张图片

乱码解决了。













你可能感兴趣的:(Hive,乱码,注释乱码,hive,mysql,乱码)