解决思路:主要从hive meta_store的元数据hive库进行编码设置
1 mysql -u root -p 输入相关密码 进入mysql ;
2 切换到hive 数据>>use hive;
3 在mysql命令行,执行以下5条SQL语句
3.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;
3.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.3 修改索引注释
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
4 修改metastore的连接URL为:characterEncoding=UTF-8
cd $HIVE_HOME cd conf vim hdfs-site.xml
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node1:6666/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true</value> <description> JDBC connect string for a JDBC metastore. To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL. For example, jdbc:postgresql://myhost/db?ssl=true for postgres database. </description> </property>