Hive注释中文乱码问题:
解决说明:
1、进入hive的元数据库中修改相应的编码配置,我使用的元数据库是MySQL。
mysql中每个数据库、每个表、每个字段都有自己的编码,默认编码为latin1_bin,我们需要将一些字段的编码改为utf8。 查看mysql中字段的编码:show full columns from tableName;
2、配置Hive Metastore Database JDBC URL的连接。
解决步骤:
进入hive的元数据库执行,修改下列内容的字符集!
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;
4、修改数据库注解:
alter table DBS modify column `DESC` varchar(4000) character set utf8 ;
5、修改metastore的连接url:
修改hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://你的IP:3306/hive?createDatabaseIfNotExsit=true&characterEncoding=UTF-8</value>
</property>
6、查看修改结果
desc [table];
show create table [table]];
需要额外说明一下,如果是在CDH里修改hive-site.xml,jdbc需要注意(去掉amp;):
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://你的IP:3306/你的数据库?createDatabaseIfNotExsit=true&characterEncoding=UTF-8</value>
</property>