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软件的配置信息

  1. 去Linux中, 修改hive软件的配置信息, 配置文件是hive-site.xml 文件.
    把如下的内容, 添加到 **<configuration> </configuration>**标签中即可.
    注意:一定要在标签该标签内!!!
    注意:一定要在标签该标签内!!!
    注意:一定要在标签该标签内!!!
        <!-- 存储元数据mysql相关配置 -->
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;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中文乱码的问题
我们以后创建表注释等地方的中文就不会是乱码了
如果想解决之前已经创建的表中中文乱码的情况,则需要删除重建。

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值