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千年,源远流长,为什么编码不待见中文。。。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM