Hive中文注释乱码问题

现象

创建表的时候,comment说明字段包含中文,表成功创建成功之后,desc的时候中文说明显示乱码

pF7l9q1.png

处理

针对HIVE使用的mysql元数据库存储进行字符集修改的SQL语句。在hive配置中,元数据存储通常是关系数据库,例如mysql,它存储了hive表的结构信息、分区信息、表注释和字段注释等。以下命令的目的是修复中文注释乱码问题,通过将相关字段的字符集修改为utf8来支持中文字符。

修改表字段注解和表注解

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

此命令用于修改COLUMNS_V2表的COMMENT字段。这个字段用于存储hive表的列注释。命令把COMMENT列的数据类型设置为varchar(256),并指定其字符集为utf8,这样就可以存储utf8编码的字符,包括中文。

1
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

这个命令与上一个命令类似,只不过它是针对TABLE_PARAMS表的PARAM_VALUE字段。TABLE_PARAMS表存储表级别的参数和值,其中的PARAM_VALUE字段可能包含注释或其他字符串值,更改字符集为utf8确保了可以正确存储中文注释。

修改区分字段注解

1
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

这个命令修改了PARTITION_PARAMS表中的PARAM_VALUE字段。PARTITION_PARAMS表存储分区级别的参数和值,包含分区注释。调整字符集为utf8使得分区注释可以正确存储中文。

1
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;

此命令修改了PARTITION_KEYS表的PKEY_COMMENT字段,这个字段存储分区键的注释。通过将字符集改为utf8,分区键的注释也能够支持中文字符。

修改索引注释

1
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

这个命令用于修改INDEX_PARAMS表中的PARAM_VALUE字段。在hive中,INDEX_PARAMS表存储与索引相关的参数和值,其中PARAM_VALUE字段可能包含注释或其他字符串值,通过更改为utf8字符集,可以保持中文注释的准确性。

修改hive-site.xml配置文件

1
2
3
4
5
6
      <property>
          <!-- 配置元数据存储位置,本例使用MySQL数据库 -->
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://172.16.77.206:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&characterEncoding=UTF-8</value>
          <description>JDBC connect string for a JDBC metastore</description>
      </property>
Buy me a coffee
支付宝
微信
0%