Hive中文乱码的解决方法
问题描述:书写hive sql的时候发现注释等地方的中文是乱码情况。
接下来我来带领大家解决这个问题
一、修改Hive源数据库的码表信息(mysql为例)
去MySQL的hive3数据库中, 修改Hive的码表信息
因为Hive的元数据(表名, 列名, 数据类型, 描述信息等)都是在MySQL中存储的.
-- 执行如下的代码
-- (1)修改表字段注解和表注解
use hive3;
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;
方式一:在Linux中进入MySQL进行修改Hive码表信息
方式二、通过可视化软件链接MySQL修改码表信息
链接方式(DataGrip为例):
二、修改hive软件的配置信息
- 去Linux中, 修改hive软件的配置信息, 配置文件是hive-site.xml 文件.
把如下的内容, 添加到 **<configuration> </configuration>**标签中即可.
注意:一定要在标签该标签内!!!
注意:一定要在标签该标签内!!!
注意:一定要在标签该标签内!!!
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
三、重启服务.
在Linux中, 关闭metastore服务, hiveserver2服务, 然后重启这两个服务.
kill -9 pid值 pid值
nohup hive --service metastore & # 如果未配置环境变量,请在hive的bin目录下执行此语句
nohup hive --service hiveserver2 & # 如果未配置环境变量,请在hive的bin目录下执行此语句
到这里就解决了hive中文乱码的问题
我们以后创建表注释等地方的中文就不会是乱码了
如果想解决之前已经创建的表中中文乱码的情况,则需要删除重建。