hive中字段注释中中文出现乱码的问题

在hive中创建一个带中文注释的表,如

create table mytest4(id int COMMENT '学号',name string COMMENT '姓名');

然后用Hive JDBC去读表信息时候,取出来的字段注释是乱码。


hive的表信息存在mysql库中。


这个问题的解决需要做到下面几点:

1. 数据库hive的编码设为UTF8

2. 将表column_v2中字段comment的编码设为UTF8

3. hive中的数据库URL中指明使用UTF8。如

jdbc:mysql://dev2.com/hive?createDatabaseIfNotExist=true&characterEncoding=utf-8

4. 修改DDLTask.java

if (tbl.isView()) {
        String createTab_stmt = "CREATE VIEW `" + tableName + "` AS " + tbl.getViewExpandedText();
        outStream.write(createTab_stmt.getBytes());
改为

if (tbl.isView()) {
        String createTab_stmt = "CREATE VIEW `" + tableName + "` AS " + tbl.getViewExpandedText();
        outStream.writeUTF(createTab_stmt);

outStream.write(createTab_stmt.render().getBytes());
改为

outStream.writeUTF(createTab_stmt.render());


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值