1. 程式人生 > >從CSV檔案匯入Hive出現中文亂碼問題解決

從CSV檔案匯入Hive出現中文亂碼問題解決

關於HIVE中文亂碼問題的解決辦法,網上有很多帖子,然而很多都是基於LINUX終端顯示字元的修改,其實上對於一些條件下的HIVE中文亂碼問題是無法解決的,如從CSV檔案匯入到HIVE中出現的中文亂碼問題。

大家都知道,HIVE原生的字元編碼是採用UTF-8方式的,這是支援中文的。然而在從ORACLE匯出CSV檔案,注入到HIVE表中的時候,就發現輸入時出現中文亂碼。按照HIVE中文亂碼的解決思路(基於系統字元編碼的修改方式)總是沒有成功。

後來考慮到HIVE將資料是存放在HDFS上的,並以序列化的方式存在,因此應該考慮HDFS中文亂碼的問題,這一查,資料還不少。也看到了核心的問題所在:hadoop涉及輸出文字的預設輸出編碼統一用沒有BOM的UTF-8的形式

但是對於中文的輸出window系統預設的是GBK,有些格式檔案例如CSV格式的檔案用excel開啟輸出編碼為沒有BOM的UTF-8檔案時,輸出的結果為亂碼,只能由UE或者記事本開啟才能正常顯示。因此將hadoop預設輸出編碼更改為GBK成為非常常見的需求。 

考慮到這個問題,於是想著在HIVE中序列化的時候需要指定一下字元編碼,終於找到相關的解決思路,這是HIVE issue解決辦法中找到的。https://issues.apache.org/jira/browse/HIVE-7142。

依照這個文件的說明,對指定的表進行設定,即設定序列化編碼為GBK,以WINDOW拷貝匯入的資料編碼相匹配。

ALTER TABLE ** SET SERDEPROPERTIES ('serialization.encoding'='GBK'); 
通過這樣設定,果然實現一直困擾多時的HIVE中文亂碼問題。

相關推薦

CSV檔案匯入Hive出現中文亂碼問題解決

關於HIVE中文亂碼問題的解決辦法,網上有很多帖子,然而很多都是基於LINUX終端顯示字元的修改,其實上對於一些條件下的HIVE中文亂碼問題是無法解決的,如從CSV檔案匯入到HIVE中出現的中文亂碼問題。 大家都知道,HIVE原生的字元編碼是採用UTF-8方式的,這是支援

logstashcsv檔案匯入資料到elasticsearch

logstash的安裝部署自行百度 注意:要和es的版本一致,這裡使用的都是5.5.1版本 一、在logstash的bin目錄下建立logstash.conf檔案: input { file { path => ["C:\Users\Deskt

idea軟體編碼已經設定好了為utf-8,但是svn中down下來的檔案格式本身不是utf-8的,此時開啟後會出現中文亂碼解決方法

我是個idea的忠實使用者,新公司的專案都是用eclipse做的,通過svn拉下程式碼後發現,註釋的內容裡,中文內容都是亂碼。問過專案負責人,說可能是GBK編碼。 但是,我通過idea的setting設定了編碼,試了5種編碼都沒用,中文內容還是亂碼。最後還是自己試出來解決方案。 詳細的原因請參考

用java程式碼寫xml檔案時,出現中文亂碼解決方法

phoneElement.addAttribute("name", "家庭電話");emailElement.setText("[email protected]");try {/*** 特別注意:* * java中有Writer類繼承下來的子類沒有提供編碼格式處理,所以dom4j也無法歲輸出的

Oracle使用sqlldr load匯入txt出現中文亂碼

Oracle使用load操作出現中文亂碼問題 Oracle經常會出現中文亂碼問題,首先確定Oracle伺服器端的字符集看這個字符集是否與你客戶端的字符集相同。查詢Oracle伺服器端字符集的命令是select * from nls_database_parameters,

Navicat for MySQL 匯出來的資料再用SQLyog匯入出現中文亂碼的原因

Navicat for Mysql 工具匯出來的資料如下: (一個簡單例子) 而從SQLyog工具匯出來如下: 如果要想將Navicat for MySQL匯出來的資料,導到SQLyog工具,則需要加上  /*!40101 SET NAMES utf8 */;

遠端上傳檔案到Linux伺服器中文亂碼解決

之前從Windows上傳檔案到Linux伺服器中,文字檔案中出現了中文亂碼 Linux伺服器檔案內容亂碼如下: 使用下面的方法解決: 1.首先是否安裝convmv: rpm -qa |grep convmv 2.如果沒有安裝則進行安裝: yum -y inst

Sqoop 把表匯入 hive 出現的問題解決彙總

以下解決方案都是親測可用的, 但不保證相同但處理方案 錯誤1. Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly. 18/10/12

微信模板訊息詳情頁,檢視附件時出現中文亂碼解決

模板訊息大家都知道 ,推送給你有的有詳情字樣,點進去可以到你伺服器一個頁面。 詳情頁面我有一個xxx.sql的檔案,點開後直接就能顯示內容。 不應該啊!因為上傳檔案時,我的編碼 是UTF-8,反而出現了亂碼??? 可能我的微信版本低吧?不過在pc瀏覽器開啟,就會自動分析

mysql在Windows7下出現中文亂碼解決的方法(原來是編碼的問題)

因為win7的命令視窗是預設編碼格式gbk(不建議改成utf8格式麻煩),一般mysql預設編碼格式utf8所以在命令視窗中文會出現亂碼。解決的方法如下:在mysql安裝路徑下的檔案my.ini將裡面的編碼格式改成如下的格式(修改之前一定要將mysql服務停止):

xshell中出現中文亂碼解決方法

        作為一個IT程式設計師,經常需要遠端登入Linux系統的伺服器,使用工具Xshell工具,但是很多時候出現中文問題。根本原因為遠端伺服器Linux系統和本地系統的編碼不一致導致的 。此處的資訊雖然是“總共76”兩個中文漢字,但還是顯示亂碼。一、問題原因:1、遠

cmd出現中文亂碼解決方法

1.檢視 chcp 的值是多少 936 為 GBK編碼  65001為 UTF-8編碼2.永久切換為UTF-8編碼方法,開啟登錄檔 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor3.新建字串鍵值 autorun 

sublime text3 中 python3編譯出現中文亂碼解決方法

一、亂碼現象利用sublime自帶編譯快捷方式ctrl+B會出現中文亂碼的情況print("沒有迴圈資料!") print("完成迴圈!")二、尋找原因1、由於之前我已經安裝了外掛ConvertToUTF8,排除文字編碼錯誤問題2、相同的程式碼在外掛sublimerepl搭建

Linux 下 zip 檔案解壓產生中文亂碼解決方案

unar方法 1.安裝unar yum install unar 這個最簡單省力,預設debian已經安裝了額unar,這個工具會自動檢測檔案的編碼,也可以通過-e來指定 2.用unar解

android http post請求,設定utf-8編碼,服務端還是出現中文亂碼 解決

 HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost(url);List<NameValuePair> params = new ArrayList&

資料mysql中匯入hive表中異常解決

將資料從mysql中匯入hive表中,出現異常ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf.

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

往hive中匯入.txt或者.csv檔案,匯入沒有報錯,匯入後通過探查發現,中文欄位出現亂碼的情況。因為Hive預設是所有檔案都是UTF-8的(utf-8本身支援中文沒有問題的。hadoop涉及輸出文字

在mac下,用excel開啟csv檔案出現中文亂碼的情況

解決,在mac下,用excel開啟csv檔案出現中文亂碼的情況 方法就是用python轉換檔案編碼方式 在python命令列下: 首先,讀取檔案: with open('dianying.csv', 'r') as f: dy=f.read() print f.read() 其

關於Mysql在匯入.sql檔案出現中文亂碼解決方法

1.首先在服務裡面關閉mysql服務; 2.在安裝目錄下找到my.ini檔案; 3.修改一下配置 [mysql]default-character-set=utf8,(這個改成default-char

匯入js檔案出現中文亂碼

      今天從eclispe複製了一個js檔案到idea中,出現了中文亂碼,具體如下圖 下面說解決的辦法: 1.點選idea頁面右下角的,然後選擇GBk 2.之後會彈出下面的一個視窗,這個地方一定選擇Reload(不要選擇錯了) 現在已經能夠看到中文可以正常顯示了,