心猿益码

忙碌是一种幸福,让我们没时间体会痛苦; 奔波是一种快乐,让我们真实地感受生活; 疲惫是一种享受,让我们无暇空虚。
csv文件load数据到hive出现乱码

出现了这个问题,困扰了好半天,终于明白问题不在我这里。为了以后不再踩坑,决定记录一下。
1.查看很多博主基本上是这些步骤1》查看mysql编码格式 2》查看hive元数据库编码格式3》修改终端的编码格式。根据这些个步骤走了一编,结果还是乱码。
1》查看mysql编码格式
show variables like 'char%';

2》查看hive库编码格式及修改
show create database hive;

mysql > use hive;

# 然后修改部分配置
mysql > alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
Query OK, 91 rows affected (0.05 sec)
Records: 91  Duplicates: 0  Warnings: 0

mysql> alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
Query OK, 35 rows affected (0.05 sec)
Records: 35  Duplicates: 0  Warnings: 0

mysql> alter table PARTITION_PARAMS  modify column PARAM_VALUE varchar(4000) character set utf8;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table PARTITION_KEYS  modify column PKEY_COMMENT varchar(4000) character set utf8;
Query OK, 1 row affected (0.04 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> alter table  INDEX_PARAMS  modify column PARAM_VALUE  varchar(4000) character set utf8;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql > commit;

然而没有什么用
3》查看终端编码格式,不是UTF-8,修改成UTF-8

如要修改编码格式:
export LANG=en_US.UTF-8
2.最终想了一下,如果数据源头与终端的编码格式一致,是不可能的出现乱码的。上面的操作起码知道了,环境的编码格式是UTF-8。
那么,只要csv文件也是这个编码格式,还出现这个问题,那就有鬼了。于是乎:
file sourcedata.csv

看到了吗,编码格式为ISO-8859-1,问题就出现在这里
修改编码格式:

>> :setlocal buftype=
>> :set fileencoding=utf-8
>> :wq!

然后再查看编码格式:

但首先得保证,设置编码格式后数据不乱码,如果乱码了,那就直接导出csv数据的时候以utf-8编码格式。
格式统一之后,再load数据到hive中,果然没有出现乱码。
最后吐下槽,我中华5千年,源远流长,为什么编码不待见中文。。。

posted on 2021-11-12 10:36  心猿益码  阅读(843)  评论(0编辑  收藏  举报