查看表时,发现comment注释的中文是一堆问号。
Hive的元数据存在MySQL中,查看MySQL的COLUMNS_V2表,可以看到字符集是latin1。
show create table COLUMNS_V2;
解决方法
修改其中有关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 '列注释';
如果数据少,可以重新建表,把数据导入。