天天看點

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 '列注釋';