Hive學習之路 (七)Hive中文亂碼
阿新 • • 發佈:2018-04-05
min sta keys Coding ava eight img 字符集 步驟
Hive註釋中文亂碼
創建表的時候,comment說明字段包含中文,表成功創建成功之後,中文說明顯示亂碼
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中的元數據出現亂碼
針對元數據庫metastore中的表,分區,視圖的編碼設置
因為我們知道 metastore 支持數據庫級別,表級別的字符集是 latin1
那麽我們只需要把相應註釋的地方的字符集由 latin1 改成 utf-8,就可以了。用到註釋的就三個地方,表、分區、視圖。如下修改分為兩個步驟:
1、進入數據庫 Metastore 中執行以下 5 條 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) characterset 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;
2、修改 metastore 的連接 URL
修改hive-site.xml配置文件
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://IP:3306/db_name?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8</value> <description>JDBC connect string for a JDBC metastore</description> </property>
驗證
做完可以解決亂碼問題
Hive學習之路 (七)Hive中文亂碼