在使用hive-2.1.0的过程中使用desc tableName或者show create table tableName发现comment出现中文乱码问题。需要对hive作出修改并重新打包
参考https://cloud.tencent.com/developer/article/1419250中整理的Hive表所有与中文注释相关的属性项。进行如下修改:
1、直接修改hive初始化sql文件(对应当前hive版本号) HIVE_HOME/scripts/metastore/upgrade/mysql/hive-schema-2.1.0.mysql.sql。对以下7行作出修改。
#修改字段注释字符集
54 `COMMENT` varchar(256) CHARACTER SET utf8 DEFAULT NULL,
#修改表名注释,支持中文表示
177 `PARAM_VALUE` varchar(4000) CHARACTER SET utf8 DEFAULT NULL,
#修改分区参数,支持分区建用中文表示
249 `PKEY_COMMENT` varchar(4000) CHARACTER SET utf8 DEFAULT NULL,
284 `PARAM_VALUE` varchar(4000) CHARACTER SET utf8 DEFAULT NULL,
#修改表注释字符集
565 `PARAM_VALUE` varchar(4000) CHARACTER SET utf8 DEFAULT NULL,
#修改视图,支持视图中文
588 `VIEW_EXPANDED_TEXT` mediumtext CHARACTER SET utf8,
589 `VIEW_ORIGINAL_TEXT` mediumtext CHARACTER SET utf8,
2、修改后安装部署hive,初始化数据库。(若hive已经部署上,则参看上面的链接直接去mysql中alter相关表字段)
3、部署之后进入hive shell建表测试
CREATE TABLE test_comment (
s1 string COMMENT "测试字段",
s2 string COMMENT "测试字段2"
) COMMENT "测试表名"
partitioned BY (s3 string COMMENT "测试分区");
4、使用desc test_comment测试正常
5、使用show create table test_comment发现仍有乱码问题。
6、下面处理show create table的乱码问题,关于这部分社区也有可参考的patch https://issues.apache.org/jira/browse/HIVE-11837,参考该patch需要对hive-2.1.0 ql下的两个类MetaDataFormatUtils和DDLTask作出修改,并重新编译生成hive-exec-2.1.0.jar。
7、下载hive-2.1.0源码https://github.com/apache/hive/archive/release-2.0.1.zip,解压后修改ql下的如下两个类
org.apache.hadoop.hive.ql.exec.DDLTask修改2080行和2228行如下:
org.apache.hadoop.hive.ql.metadata.formatting.MetaDataFormatUtils修改465行如下:
8、mvn clean package -DskipTests重新编译生成hive-exec-2.1.0.jar,替换环境中hive lib下的hive-exec-2.1.0.jar
,重启HiveMetaStore进入hive shell,执行show create table test_comment问题解决。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。