文章目录
  1. hive解决元数据乱码
  2. 1. 修改hive表
  3. 2. 修改hive配置
  4. 3. 重启服务

hive解决元数据乱码

1. 修改hive表

由于 Cloudera Manager 安装的hive的元数据(如在mysql中)的编码是 latin1, 所以在各种有 COMMENT 是中文的情况下各种乱码。

注意:不要修改hive整库的编码,会有问题,报错如下:

1
2
FAILED: Error in metadata: javax.jdo.JDODataStoreException: An exception was thrown while adding/validating class(es) : Specified key was too long; max key length is 767 bytes 
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

方案:

1
2
3
4
5
6
use hive;
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;
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;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

2. 修改hive配置

  • 一般修改 /etc/hive/conf/hive-site.xml,或者HIVE_HOME下的。
  • Cloudera Manager安装的就随意了,不用修改。
1
2
3
4
修改
jdbc:mysql://YOUR_HOST/hivemeta?createDatabaseIfNotExist=true

jdbc:mysql://YOUR_HOST/hivemeta?createDatabaseIfNotExist=true&characterEncoding=UTF-8

3. 重启服务

最后重启hive的服务即可,然后做下相关含有中文的测试。

文章目录
  1. hive解决元数据乱码
  2. 1. 修改hive表
  3. 2. 修改hive配置
  4. 3. 重启服务