解决hive建表出现中文乱码的问题

 更新时间:2026年04月01日 09:54:20   作者:大手你不懂  
文章详细介绍了Hive建表中文乱码问题的解决方法,包括判断存储格式和数据编码是否为UTF-8,修改MySQL元数据库的编码格式,配置Hive的字符集编码,在Hive建表语句中设置字符集编码等

解决hive建表中文乱码问题

问题:

关于中文乱码问题,我们可以从以下几个方面进行考虑:

(1)判断hive表的存储格式是否是UTF-8:

  • 如果hive表的存储格式不是UTF-8,也会导致中文乱码。

(2)判断输入的数据,其编码格式是否是中文字符集UTF-8:

  • hive默认使用UTF-8编码,如果输入的中文字符集与UTF-8不一致,就会出现乱码。
  • 比如通过JDBC的方式连接,其是否设置了编码格式为UTF-8

(3)判断hive的所依赖的mysql元数据库的编码格式是否是UTF-8

  • 因为为了提高读写速度,不用依次去读hive的HDFS文件,所以一般依赖元数据库都是mysql。
  • 所以需要判断hive元数据库mysql中是否设置了编码格式

1、修改hive元数据库的编码格式,这里以元数据库为mysql为例

1.1 进入 etc目录下打开 my.cnf 文件 ,对 my.cnf 添加以下语句:

[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci

完成之后,重启mysql,再进入到mysql查看修改是否成功

1.2 在 mysql 修改hive元数据表注释和字段注释的编码为 utf-8

(1)命令行的形式

  • 修改表字段注解和表注解
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_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8 ;
  • 修改索引注解
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;

(2)也可在数据库可视化工具(例如dbeaver)设置COLUMNS_V2 、TABLE_PARAMS 、PARTITION_PARAMS 、PARTITION_KEYS 的编码格式为utf-8

2、在 Hive 的配置文件 hive-site.xml 中

我们可以通过指定字符集编码来解决中文乱码问题。

以下是一个示例:

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=UTF-8</value>
    <description>database username for metastore</description>
</property>

在这个示例中,我们通过设置 useUnicode=truecharacterEncoding=UTF-8 来指定使用 UTF-8 字符集编码。

此外,在 hive-site.xml 配置文件中,也可以通过以下两个参数来指定字符集编码:

<property>
  <name>hive.cli.print.header</name>
  <value>true</value>
  <description>Whether to print the names of the columns in query output.</description>
</property>
<property>
  <name>hive.cli.encoding</name>
  <value>UTF-8</value>
  <description>Character-set encoding for various CLI output data such as console output, logs, reports.</description>
</property>
<property>
  <name>hive.charset</name>
  <value>utf8</value>
  <description>The character set encoding to use for data read/write operations.</description>
</property>

在这个示例中,我们通过设置 hive.cli.encoding 参数的值为 UTF-8 来指定字符集编码。这个参数可用于指定各种 CLI 输出数据的字符集编码,例如控制台输出、日志和报告等。

需要注意的是,在进行配置时,建议采用统一的字符集编码,以确保所有代码能够正常工作。

结果展示:

3、直接在建表语句中设置字符集,但这不一定能生效

当hive建表字段注释中出现中文乱码时,可能是因为字符集编码不匹配所导致的。我们可以在建表语句中指定字符集编码来解决这个问题。以下是一个示例:

CREATE TABLE mytable (
  id INT COMMENT '编号',
  name STRING COMMENT '姓名'
)
COMMENT '学生信息表'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
TBLPROPERTIES (
  'serialization.null.format' = '',
  'charset'='utf8', -- 指定字符集编码为UTF-8
  'orc.compress'='SNAPPY'
);

在这个示例中,我们在建表语句中加入了 'charset'='utf8' 参数,来指定字符集编码为 UTF-8。

这样就能确保 Hive 能够正确地解析中文字符,从而避免乱码问题。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • IndexedDB浏览器内建数据库并行更新问题详解

    IndexedDB浏览器内建数据库并行更新问题详解

    这篇文章主要为大家介绍了IndexedDB浏览器内建数据库并行更新问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Instagram提升PostgreSQL性能的五个技巧

    Instagram提升PostgreSQL性能的五个技巧

    这篇文章主要介绍了Instagram提升PostgreSQL性能的五个技巧,Instagram的数据库一直由PostgreSQL支撑,经验很具有参考性,需要的朋友可以参考下
    2015-04-04
  • 数据库 三范式最简单最易记的解释

    数据库 三范式最简单最易记的解释

    数据库 三范式最简单最易记的解释,整理一下方便大家记忆。
    2009-07-07
  • Hadoop 2.x伪分布式环境搭建详细步骤

    Hadoop 2.x伪分布式环境搭建详细步骤

    这篇文章主要为大家详细介绍了Hadoop 2.x伪分布式环境搭建详细步骤,感兴趣的朋友可以参考一下
    2016-05-05
  • SQL中过滤条件放on和where中的区别详解

    SQL中过滤条件放on和where中的区别详解

    这篇文章主要给大家介绍了关于SQL中过滤条件放on和where中的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2019-01-01
  • Navicat premium for mac 12的安装破解图文教程

    Navicat premium for mac 12的安装破解图文教程

    Navicat Premium是一款数据库管理工具,将此工具连接数据库,你可以从中看到各种数据库的详细信息,这篇文章主要介绍了Mac下Navicat premium for mac 12的安装破解过程,需要的朋友可以参考下
    2024-01-01
  • postgresql 按小时分表(含触发器)的实现方式

    postgresql 按小时分表(含触发器)的实现方式

    这篇文章主要介绍了postgresql 按小时分表(含触发器)的实现方式,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • dbeaver工具连接达梦数据库的完整步骤

    dbeaver工具连接达梦数据库的完整步骤

    DBeaver数据库连接工具是我用了这么久最好用的一个数据库连接工具,拥有的优点,支持的数据库多、快捷键很赞、导入导出数据非常方便,下面这篇文章主要给大家介绍了关于dbeaver工具连接达梦数据库的完整步骤,需要的朋友可以参考下
    2023-05-05
  • Access转换成SQL Server需要注意事项整理

    Access转换成SQL Server需要注意事项整理

    很多朋友想用SQL2000数据库的编程方法,但是却又苦于自己是学ACCESS的,对SQL只是一点点的了解而已,这里我给大家提供以下参考---将ACCESS转化成SQL2000的方法和注意事项
    2008-04-04
  • SQL注入详解(扫盲篇)

    SQL注入详解(扫盲篇)

    刚进公司的时候,研究的主要是SQL注入,因为之前没有搞过安全,所有费了好长一段时间对SQL注入基本知识进行了解。所以这篇文章并不是什么很深入的技术博客,或许应该叫它‘ SQL注入扫盲 ’有需要的朋友可以参考学习,下面来一起看看吧。
    2017-01-01

最新评论