天天看点

Hive中文注释乱码

查看表时,发现comment注释的中文是一堆问号。

Hive中文注释乱码
Hive的元数据存在MySQL中,查看MySQL的COLUMNS_V2表,可以看到字符集是latin1。

show create table COLUMNS_V2;           
Hive中文注释乱码

解决方法 

修改其中有关COMMENT的设置,但是只对新建的表有效,原来的表只能通过alter修改注释才可以。

# 建库时hive的库名改的metastore
use metastore;

# 修改字段注释字符集
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_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

# 索引
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
           

重新建表 

create table stu(id int comment '学号', name string comment '姓名');           
Hive中文注释乱码
# 修改hive表注释
alter table table_name set TBLPROPERTIES('comment' = '表注释');
 
# 修改字段注释
alter table table_name change column 原列名 新列名 列类型 comment '列注释';