背景:mysql編碼是utf-8,mysql中建庫建表中文顯示都正常,但在hive視窗中建表時字段中文注釋均亂碼的問題。
問題:hive中建表後字段中文注釋顯示異常。
1. 定位 mysql 端問題
檢視 mysql字符集編碼
mysql 中新建表中文注釋顯示正常
由此可以定位到並不是 mysql 服務端的編碼問題。
2. 定位 hive 元資料問題
檢視hive庫表在mysql中的元資料資訊,發現資料庫的編碼是utf8,而庫中表的編碼是latin1,所以才會導致hive中中文顯示亂碼。
至此就能定位到了是 hive 元資料表的問題了,需要修改相關表或字段的編碼。
3. 解決方案
將hive 原資料庫表中有關中文顯示的表或者欄位的編碼改為utf8,問題解決。
//修改表字段註解和表註解在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;
【參考資源】
[1]. hive 2.1.1欄位和表注釋中文亂碼.
問題解決 hive建表之後存在中文注釋亂碼的問題
為了後面的維護同事方便,一般都會要求同事在寫hive建表語句的時候,都需要新增相關的注釋,包括字段注釋和表注釋。而一般都是直接為中文注釋的。如下是乙個比較完整的hive建表語句 create external table test s no string comment 序號 i type int ...
CDH集群部署hive建表中文亂碼
背景 部署cdh集群的 hive 服務,選用 mysql 作為 hive 元資料的儲存資料庫,通過 hive cli 建表時發現中文注釋均亂碼。現象 hive端建表中文注釋亂碼。定位 已經確認過 mysql 庫的預設編碼是 utf 8,並且 mysql 中建庫建表不存在中文亂碼的情況。於是檢視hiv...
Hive中文注釋亂碼問題的解決
在hive中建表的時候,有時候難免要表中文注釋,然而如果不經過配置,會導致desc某個表名的時候,直接以?的方式返回。因此也來解決一下hive中文注釋亂碼的問題。由於hive的元資料是存在於mysql上的,因此需要在mysql上進行元資料的候。因此也來解決一下這個問題。當hive使用mysql作為元...