hive詳細筆記之hive註釋中文亂碼問題

在hive中建立表  , 表中的字段註釋是中文註釋 html

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';

建表查看錶基本信息java

hive> desc movie;
OK
userid                  int                     ??ID
movieid                 int                     ??ID
rating                  int                     ????
timestamped             bigint                  ?????
moviename               string                  ????
movietype               string                  ????
sex                     string                  ??
age                     int                     ??
occupation              string                  ??
zipcode                 string                  ????
Time taken: 0.057 seconds, Fetched: 10 row(s)

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

 

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

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

進入數據庫 Metastore 中執行如下 5 條 SQL 語句bash

 

(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)修改分區字段註解spa

 

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)修改索引註解code

 

alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
  1. 修改 metastore 的鏈接 URL  vi hive-site.xml文件

 

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

從新建立表驗證

 

hive> desc formatted movie;
OK
# col_name              data_type               comment

userid                  int                     用戶ID
movieid                 int                     電影ID
rating                  int                     電影評分
timestamped             bigint                  評分時間戳
moviename               string                  電影名字
movietype               string                  電影類型
sex                     string                  性別
age                     int                     年齡
occupation              string                  職業
zipcode                 string                  郵政編碼
相關文章
相關標籤/搜索