1. 程式人生 > >往hive中匯入檔案後查看出現中文亂碼

往hive中匯入檔案後查看出現中文亂碼

往hive中匯入.txt或者.csv檔案,匯入沒有報錯,匯入後通過探查發現,中文欄位出現亂碼的情況。

因為Hive預設是所有檔案都是UTF-8的(utf-8本身支援中文沒有問題的。hadoop涉及輸出文字的預設輸出編碼統一用沒有BOM的UTF-8的形式,但是一般我們匯入的檔案都是在windows下編輯的,而windows預設的中文文字輸出編碼格式為GBK.)

Hive將按照UTF8編碼格式對資料檔案進行解析和查詢。如果資料檔案不是UTF8,則需要SerDe支援指定編碼格式。對於常用的LazySimpleSerDe是支援指定字符集對的。

對於這種hive匯入中文出現亂碼的情況有兩種解決方式:

1.直接用editplus等軟體,將文字檔案修改utf-8的編碼格式(符合hive,即底層hdfs的編碼格式),儲存後重新load進hive中,一般不會中文亂碼了。

2.直接將hive,底層的編碼格式改成gbk,和windows一致也可以(不推薦)

 ALTER TABLE  AAA  SET SERDEPROPERTIES ('serialization.encoding'='GBK'); 

兩種方法都可以使匯入的中文文字不會出現亂碼情況