Hive中文乱码的解决方法
问题描述:书写hive sql的时候发现注释等地方的中文是乱码情况。
接下来我来带领大家解决这个问题
一、修改Hive源数据库的码表信息(mysql为例)
去MySQL的hive3数据库中, 修改Hive的码表信息
因为Hive的元数据(表名, 列名, 数据类型, 描述信息等)都是在MySQL中存储的.
-- 执行如下的代码-- (1)修改表字段注解和表注解use hive3;altertable COLUMNS_V2 modifycolumnCOMMENTvarchar(256)characterset utf8;altertable TABLE_PARAMS modifycolumn PARAM_VALUE varchar(4000)characterset utf8;-- (2)修改分区字段注解altertable PARTITION_PARAMS modifycolumn PARAM_VALUE varchar(4000)characterset utf8 ;altertable PARTITION_KEYS modifycolumn PKEY_COMMENT varchar(4000)characterset utf8;-- (3)修改索引注解altertable INDEX_PARAMS modifycolumn PARAM_VALUE varchar(4000)characterset 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中文乱码的问题
我们以后创建表注释等地方的中文就不会是乱码了
如果想解决之前已经创建的表中中文乱码的情况,则需要删除重建。
版权归原作者 抹梦 所有, 如有侵权,请联系我们删除。