Hive學習之路 (八)Hive中文亂碼

 

正文java


Hive註釋中文亂碼

建立表的時候,comment說明字段包含中文,表成功建立成功以後,中文說明顯示亂碼mysql

複製代碼
create external table movie(
userID int comment '用戶ID',
movieID int comment '電影ID',
rating int comment '電影評分',
timestamped bigint comment '評分時間戳',
movieName string comment '電影名字', 
movieType string comment '電影類型', 
sex string comment '性別', 
age int comment '年齡', 
occupation string comment '職業', 
zipcode string comment '郵政編碼'
) comment '影評三表合一' 
row format delimited fields terminated by ","
location '/hive/movie';
複製代碼

 

這是由於在MySQL中的元數據出現亂碼sql

針對元數據庫metastore中的表,分區,視圖的編碼設置

由於咱們知道 metastore 支持數據庫級別,表級別的字符集是 latin1數據庫

那麼咱們只須要把相應註釋的地方的字符集由 latin1 改爲 utf-8,就能夠了。用到註釋的就三個地方,表、分區、視圖。以下修改分爲兩個步驟:編碼

一、進入數據庫 Metastore 中執行如下 條 SQL 語句

(1)修改表字段註解和表註解

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;

(2)修改分區字段註解

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;

(3)修改索引註解

alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

二、修改 metastore 的鏈接 URL

 修改hive-site.xml配置文件spa

複製代碼
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://IP:3306/db_name?createDatabaseIfNotExist=true&amp;useUnicode=true&characterEncoding=UTF-8</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>
複製代碼

驗證

作完能夠解決亂碼問題code

相關文章
相關標籤/搜索