解决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步就能解决乱码问题

相关推荐
大数据CLUB7 小时前
基于spark的奥运会奖牌变化数据分析
大数据·hadoop·数据分析·spark
Edingbrugh.南空7 小时前
Hadoop高可用集群搭建
大数据·hadoop·分布式
无级程序员1 天前
hive2服务启动报错:/tmp/hive on HDFS should be writable(不是chmod 777能解决的)
hive·hadoop·hdfs
rui锐rui1 天前
大数据学习2:HIve
大数据·hive·学习
凌辰揽月1 天前
Servlet学习
hive·学习·servlet
weixin_307779132 天前
Hive集群之间迁移的Linux Shell脚本
大数据·linux·hive·bash·迁移学习
王小王-1232 天前
基于Hadoop的公共自行车数据分布式存储和计算平台的设计与实现
大数据·hive·hadoop·分布式·hadoop公共自行车·共享单车大数据分析·hadoop共享单车
王小王-1232 天前
基于Hadoop的大规模文本词频统计分析系统设计与实现
hadoop·mapreduce·hadoop词频统计·hadoop文本统计·mapreduce词频统计
陈敬雷-充电了么-CEO兼CTO2 天前
推荐算法系统系列>推荐数据仓库集市的ETL数据处理
大数据·数据库·数据仓库·数据挖掘·数据分析·etl·推荐算法
桂成林2 天前
Hive UDF 开发实战:MD5 哈希函数实现
hive·hadoop·哈希算法