解决Hive乱码问题

在插入数据后,发现hive乱码

原因:Hive默认将存储表结构的元数据列编码设置为latin1,不支持中文

解决方法:在MySQL中修改对应Hive元数据列的编码

先查看mysql的所有字符集编码

1、先修改my.cnf

代码如下:

java 复制代码
vim /etc/my.cnf
# 在尾部加入以下内容
[client]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

2、重启mysqld

bash 复制代码
systemctl restart mysqld

3、修改字段注释字符集

sql 复制代码
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

4、修改表注释字符集

sql 复制代码
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

5、修改分区表参数,以支持分区键以及值能够用中文表示(可选)

sql 复制代码
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 PARTITIONS modify column PART_NAME varchar(767) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
alter table PARTITION_KEY_VALS modify column PART_KEY_VAL varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;

6、修改索引注解(可选)

sql 复制代码
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

7、查看mysql编码

8、进入hive,查看字符集

9、乱码解决

注意:每次修改字符集后,需要重新插入数据,从而实现修改同步,这里就能正常显示中文了

总结:三端同步

最终是实现三端同步{客户端(cli命令行),服务端(就是存在的库和表),数据(插入数据的编码)},只要这三端都是utf8,则数据一定能显示utf8格式, 一般情况完成前4步就能解决乱码问题

相关推荐
AM越.1 小时前
助睿:!!零代码解决!!订单利润分流数据加工o(* ̄▽ ̄*)ブ
数据仓库·笔记·etl·助睿
计算机毕业编程指导师4 小时前
【计算机毕设推荐】Python+Spark卵巢癌风险数据可视化系统完整实现 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
hadoop·python·计算机·数据挖掘·spark·毕业设计·卵巢癌
极光代码工作室4 小时前
基于大数据的校园消费行为分析系统
大数据·hadoop·python·数据分析·spark
二十六画生的博客1 天前
每个subtask都提交一份快照到hdfs,会把10个小的快照合并成一个大的吗?谁来合并?
大数据·hadoop·hdfs·flink
juniperhan1 天前
Flink 系列第24篇:Flink SQL 集成维度表指南:存储选型、参数调优与实战避坑
大数据·数据仓库·sql·flink
隐于花海,等待花开1 天前
41.ABS / POW / SQRT 函数深度解析
大数据·hive
千月落1 天前
HDFS数据迁移
大数据·hadoop·hdfs
RestCloud2 天前
ETL数据质量保障:如何通过优化提升数据准确性?
数据仓库·etl·数据处理·数据传输·数据同步·数据集成平台
隐于花海,等待花开2 天前
40.RAND 函数深度解析
hive·hadoop
2501_927283583 天前
荣联汇智助力天津艺虹打造“软硬一体”智慧工厂,全流程自动化引领印刷包装行业数智变革
大数据·运维·数据仓库·人工智能·低代码·自动化