在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;
- 修改 metastore 的鏈接 URL vi hive-site.xml文件
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://doit01:3306/hive?createDatabaseIfNotExist=true&useUnicode=true&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 郵政編碼