2016-03-18 166 views
0

當我嘗試在創建表中使用它時,我擁有的數據由'¬'分隔,因此我將錯誤視爲無效字符。我試圖使用它的unicode版本'\ U00AC',但沒有使用所有記錄在第一個字段中攝取。在unix中,這個字符'¬'顯示爲''。 任何人都可以指導我關於在該部分終止的字段中使用什麼。蜂巢表字段由'¬'分隔蜂巢不接受此字符

CREATE TABLE IF NOT EXISTS test 
(
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 '¬'; 
+0

在任何顯示器中,您都需要更改文本編碼設置。 –

+1

在Linux上,'file xyz.txt'命令顯示什麼?即哪個編碼? Hadoop默認使用UTF-8。 –

+0

是對其編碼爲ISO-8859文本的任何解決方案的朋友:) –

回答

0

你可以試試這個DDL。

CREATE TABLE IF NOT EXISTS test 
(
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 SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ('empty.string.null'='true','field.delim'='\0AC','serialization.format'='\0AC','serialization.null.format'='') 
STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'; 
+0

ty嘗試過,但沒有解決問題。第一列 –

+0

輸出中的所有數據都是這樣的1�0000000000000010792�0000000000000549223ï¿HFBlHgUUmGrCd�HaNlzg0tE�4Gï¿HFN�H�X��￿½93a�HFNBd2ht�QB3aï¿HFNBughjkL4�uNULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL –

+0

您可以驗證文件是否包含¬作爲分隔符。請使用「cat | grep¬」 – donut