问题描述:第一次建表并执行发现comment后的注释乱码
执行以下代码并查看
drop database if exists db_1 cascade;
create database if not exists db_1;
create table db_1.tb_user(
id int comment '编号',
username string comment '用户名',
password string comment '密码'
);
desc db_1.tb_user;
结果如下,发现注释乱码
解决方法;
到MySQL中打开一个窗口,执行以下代码
use hive;
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;
回到hivesql中
在执行以下代码
drop database if exists db_1 cascade;
create database if not exists db_1;
create table db_1.tb_user(
id int comment '编号',
username string comment '用户名',
password string comment '密码'
);
desc db_1.tb_user;
先删除,在创建,最后查看结果
结果如下
发现乱码问题已经解决。
乱码原因如下
在hiveSQL中使用的是latin1,此编码一个字符表示一个字节,而一个中文在utf8中占3个字节
在gbk中占两个字符。这里我们修改为utf8。
细节:修改编码后创建的表comment才能变成中午,因为之前的注释已经按latin1编码进行编码了,无法改变。