Hive表字段中文注释乱码解决

问题

今日在hive内部建表发现所加字段comment显示全为?号。其实之前也碰到过只是觉得不是很重要,便没去管,但今天又遇到了,还是决定予以解决。

解决

大家都知道关系型数据库之所以为关系型,就是内部所有属性值都能在自身库里找到其位置。Hive为数据仓库的框架,虽数据都是以文件形式存于hdfs,但其定义属性值(元数据)也需要存于关系型数据库中。通常是sqllite、mysql等轻量级RDBMS。本人使用的是mysql。

出现乱码的原因无非就是Hive使用的字符集与mysql中设置的元数据字符集不一致。故从这个角度寻找。Hive里字段的comment存在于Hive元数据库的COLUMNS_V2表,可以通过

show full columns from COLUMNS_V2 

来查看该表各字段详细信息,即可得到该列字符集。通常工作中使用的字符集为utf8,现将其改成utf8:

 alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
 flush privileges ;

修改完毕,desc table ,comment仍旧为?号,重启mysql,结果一样。于是去查看hive的元数据配置。
本人是使用的ambari,查看Database URL为:

jdbc:mysql://test.boc.com/hive?createDatabaseIfNotExists=true

于是乎在改为

jdbc:mysql://test.boc.com/hive?createDatabaseIfNotExists=true&characterEncoding=UTF-8

,指定UTF-8,重启hive各组件后,解决。(Hive单独安装的可以查看hive-site.xml配置文件的javax.jdo.option.ConnectionURL属性值,看是否指定的UTF-8)。不过只对后续的建表生效,要想之前的comment也改掉就只能重新建表了。

扩展

看有的网友表示只能解决desc的comment展示问题,而show create table查看需要修改源码。但在本人的使用上并无次问题,show create table也能正常展示,可能是版本的问题,本人使用的为1.2版本。另外,需要用到中文的也不止字段注释,还可能有其他地方,表参数,索引参数等,故另附几条语句供修改:

alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
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;
alter table  INDEX_PARAMS  modify column PARAM_VALUE  varchar(4000) character set utf8;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值