解決Hive使用desc顯示中文註釋亂碼

wait4friend發表於2018-05-12

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;
複製程式碼

解決Hive使用desc顯示中文註釋亂碼

遺留問題

本文的方法僅能解決desc顯示的問題,不能解決show create table xxx的問題。

解決Hive使用desc顯示中文註釋亂碼

相關文章