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