2016-03-29 85 views
3

您好,其實問題如下,我想插入蜂巢表中的數據有拉丁文字和它的utf-8編碼格式。但仍然配置單元不能正確顯示它。Hive Utf-8編碼支持的字符數量?

實際數據: - Actual Data

數據在蜂房

Hive Data

插入我改變表的編碼爲UTF-8,以及仍然相同的問題下面是蜂巢DDL和命令

CREATE TABLE IF NOT EXISTS test6 
(
CONTACT_RECORD_ID string, 
ACCOUNT string, 
CUST string, 
NUMBER string, 
NUMBER1 string, 
NUMBER2 string, 
NUMBER3 string, 
NUMBER4 string, 
NUMBER5 string, 
NUMBER6 string, 
NUMBER7 string, 
LIST string 
) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '|'; 
ALTER TABLE test6 SET serdeproperties ('serialization.encoding'='UTF-8'); 

配置單元是否只支持UTF-8的前128個字符? 請確認。

+0

_「配置單元無法正確顯示它」_ - 您確定它不是*顯示器嗎?你是否強制執行'export LANG = en_US.UTF-8',並檢查你的終端應用是否期望UTF-8(例如PuTTY,_Window> Translation> Remote charset = UTF-8_)? –

+0

另外,您是否下載了一個HDFS文件並在其上運行'file'命令,以確保它實際檢測到UTF-8內容? –

回答

0

這可能不是理想的解決方案,但是這個工作。不知何故,Hive似乎並未將它們視爲UTF8。請嘗試使用以下參數創建表格:

CREATE TABLE testjoins.yt_sample_mapping_1(
    `col1` string, 
    `col2` string, 
    `col3` string) 
    ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe" 
    WITH SERDEPROPERTIES ("separatorChar" = ",", 
    "quoteChar" = "\"", 
    "escapeChar" = "\\", 
    "serialization.encoding"='ISO-8859-1') 
    TBLPROPERTIES ('store.charset'='ISO-8859-1', 
    'retrieve.charset'='ISO-8859-1');