实验过程中发现把整个数据库编码改成latin1或者Utf8都不行,只有把整个数据库设定为latin1而把要存储中文的数据表的编码设定为UTF8才能够解决。
第一步:修改表字段的字符编码为utf8
修改字段注释字符集
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;
通过mysql命令:show create table COLUMNS_V2可以查看字段是否成功修改编码。
第二步:修改HiveJDBC的编码
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://IP:3306/hive?characterEncoding=UTF-8</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
Ambari的配置位置:
Hive-shell模式:set -v 可以查看配置是否成功。
AquaDataStudio(IDE)连接元数据的时候需要设置他的驱动如下: