2017-08-17 102 views
2

我有數據集是選項卡分隔和行由新行終止。每行包含5個製表符分隔的數據。 例如數據集,蜂巢數據加載

XXXX1 XXXX2 XXXX3 XXXX4 XXXX5 

現在我要創建與3列的第一兩列的表將分別存儲值XXXX1XXXX2用於第一行和第三列應包含剩餘值XXXX3 XXXX4 XXXX5

我使用下面的查詢創建了表,但在第三列中僅保留了XXXX3,剩下兩個數據未加載到表中。

create table x( 
id string, name string,country string, emails string 
) row format delimited fields terminated by '\t'; 

請建議。

+0

我建議你創建一個表有5列,並創建視圖在這個桌子上。您可以在視圖中執行'concat'或'concat_ws'來獲得所需的輸出。 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions – Ambrish

+0

嗨@Ambrish感謝您的快速回復。最後三個值是電子郵件ID,所以人可以有超過3封電子郵件。這就是爲什麼我想以逗號分隔的方式將剩餘值存儲在第三列中的原因。有沒有什麼辦法可以在創建表時定義這個? –

回答

4

tblproperties(「serialization.last.column.takes.rest」 =「真」)

create table x 
(
    id string, name string,country string, emails string 
) 
row format delimited 
fields terminated by '\t' 
stored as textfile 
tblproperties ('serialization.last.column.takes.rest'='true') 
; 
+0

感謝@Dudu Markovitz,這是一個很好的幫助。 –