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

淩亂°似流年 2022-06-16 11:43 273阅读 0赞

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

  1. 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

  1. 修改DDLTask.java

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

改为

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

  1. outStream.write(createTab_stmt.render().getBytes());

改为

  1. outStream.writeUTF(createTab_stmt.render());

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Hive注释问题

    在HIVE中建表的时候,有时候难免要表中文注释,然而如果不经过配置,会导致desc某个表名的时候,直接以?的方式返回。 因此也来解决一下HIVE中文注释乱码的问题。由于HI