1.問題描述mysql
默認Hive中建立有中文註釋的表時,不管是在Hive CLI仍是Hue中該註釋顯示都會是亂碼。如使用如下建表語句:sql
create external table test_table ( s1 string comment 'abc', s2 string comment '你好啊' ) row format delimited fields terminated by '#' stored as textfile location '/lilei/test_table';
在Hive CLI中查看以下:數據庫
Hue中顯示同樣,這裏省略。編碼
2.解決辦法3d
這個問題是由於mysql中的元數據庫表COLUMNS_V2中的字段COMMENT編碼問題致使的,須要設置爲utf-8,以下所示:code
在mysql中設置該字段的編碼爲utf-8,以下所示:orm
| mysql –u root –puse metastore;alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;FLUSH PRIVILEGES; |blog
|:----|utf-8
注意Hive元數據這個數據庫應使用utf-8建立,如:create database metastore defaultcharacter set utf8;string
回到Hive中重現create一張表
查看該表的註釋:
發現中文註釋已經顯示正常。
查看之前的表:
發現依舊顯示爲亂碼。
須要修改之前的表的comment才能顯示正常,在Hive CLI中執行,命令以下:
| ALTER TABLE test_table1 change column s2 s2 STRING COMMENT '我很差'; |
|:----|
再次查看舊錶的comment:
發現中文註釋已經顯示正常。問題解決。 a
醉酒鞭名馬,少年多浮誇! 嶺南浣溪沙,嘔吐酒肆下!摯友不願放,數據玩的花!