Hive資料庫原生不支援中文註釋的顯示,使用desc命令,如果有中文就會顯示亂碼。解決方法如下
修改MySQL中的metadata
進入mysql ,檢視hive 資料庫當前編碼
show create database hive ;
複製程式碼
如果是utf8 則執行下面sql將 hive 資料庫預設編碼改成 latin1
alter database hive default character set latin1 ;
複製程式碼
執行下面sql ,修改 表/欄位/分割槽/索引 等部分的註釋字符集
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;
複製程式碼
在Hive中驗證
在hue或者beeline中執行hql
drop table if exists demo.cn_comment ;
CREATE TABLE IF NOT EXISTS demo.cn_comment (
c1 STRING COMMENT 'this is english comment',
c2 FLOAT COMMENT '中文註釋'
) COMMENT '表-中文註釋'
stored as orc;
desc demo.cn_comment;
複製程式碼
遺留問題
本文的方法僅能解決desc顯示的問題,不能解決show create table xxx的問題。