Hive中文注释问题

在Hive中遇到指定键过长的问题,通过将数据库默认字符集更改为latin1来解决。同时,为了支持中文注释,分别修改了COLUMNS_V2、TABLE_PARAMS和PARTITION_KEYS表的注释字符集为utf8。然而,即使做了这些更改,使用describe table命令查看时,中文注释仍然显示为乱码。解决这个问题需要修改Hive源码,具体涉及DDLTask.java中的describeTable方法,将其调用的TextMetaDataFormatter.java中的outStream.writeBytes方法替换为outStream.write方法。
摘要由CSDN通过智能技术生成

hive元数据建表之后需要修改一些字符集


为了解决hive的specified key was too long; max key length is 767 问题(MySQL的varchar主键只支持不超过768个字节 或者 768/2=384个双字节 或者 768/3=256个三字节的字段,UTF-8是三字节的。),需要将数据库默认字符集改为latin1;

alter database hive character set latin1;


以下是为了支持hive建表时插入中文注释:
//修改字段注释字符集
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;
//修改分区注释字符集
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;


但是建好表之后去describe table得到的中文注释还是乱码,这个需要去修改Hive的源码重新编译:

src/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java 的 describeTable方法,在hive-0.10里这个方法调用了src/ql/src/java/org/apache/hadoop/hive/ql/metadata/formatting/TextMetaDataFormatter.java,

format
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值