0
点赞
收藏
分享

微信扫一扫

hive支持MySQL显示中文,解决字段注释乱码

何以至千里 2022-03-16 阅读 81

乱码样式

在这里插入图片描述
在我想查看一张表某个字段的具体含义时发现出现了乱码现象,这是由于在hive改成MySQL管理元数据后,该数据库使用的是Latin1编码而非utf8或者gbk,所有会导致乱码,由于hive和其他很多hadoop生态也有一定的关联,所以不能直接修改管理元数据库的默认字符集,但是我们可以修改里面表的某些字段的字符集。
在这里插入图片描述

方法

第一步:在MySQL中指定管理hive元数据信息对应的数据库输入如下dml语句

#修改字段注释字符集
ALTER TABLE COLUMNS_V2 MODIFY COLUMN COMMENT VARCHAR(256) CHARACTER SET utf8;
#修改表注释字符集
ALTER TABLE TABLE_PARAMS MODIFY COLUMN PARAM_VALUE  VARCHAR(20000) CHARACTER SET utf8;
#修改分区参数,支持分区键用中文表示
ALTER TABLE PARTITION_PARAMS MODIFY COLUMN PARAM_VALUE VARCHAR(20000) CHARACTER SET utf8;
ALTER TABLE PARTITION_KEYS MODIFY COLUMN PKEY_COMMENT VARCHAR(20000) CHARACTER SET utf8;
#修改索引名注释,支持中文表示
ALTER TABLE INDEX_PARAMS MODIFY COLUMN PARAM_VALUE VARCHAR(4000) CHARACTER SET utf8;
#修改视图,支持视图中文
ALTER TABLE TBLS MODIFY COLUMN VIEW_EXPANDED_TEXT MEDIUMTEXT CHARACTER SET utf8;
ALTER TABLE TBLS MODIFY COLUMN VIEW_ORIGINAL_TEXT MEDIUMTEXT CHARACTER SET utf8;

第二步:修改hive中conf目录下的配置文件hive-site.xml
在原来的驱动中加上***&useUnicode=true&characterEncoding=UTF-8***该参数,然后重新进入hive客户端即可。

	<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop002:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
    </property>

测试结果

在这里插入图片描述
在这里插入图片描述
可以看到已经可以显示中文了,对后面的数据管理很有帮助。

注:该内容源于b站尚硅谷atlas课程内容

举报

相关推荐

0 条评论