2016-04-04 110 views
0

我的問題是如何正確使用SerDeProperties來解析下面的行。我嘗試了多種變體,並繼續用空值填充表格。下面我有SerDe和樣本數據。從我的標準位置([^\s]*)應該在^之間空格\s匹配0個或更多字符*。同樣,下一個正則表達式應該把所有行都放在下一列的行返回之前HIVE SerDeproperties輸入正則表達式

我的意圖是將數字分成一列,其他所有數據分成另一列。我對塞爾德的解釋有什麼問題?

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' 
WITH SERDEPROPERTIES ("input.regex" = "([^\s]*) ([^\n]*)"); 

1134999 06Crazy Life 
6821360 Pang Nakarin 
10113088 Terfel, Bartoli- Mozart: Don 
10151459 The Flaming Sidebur 
6826647 Bodenstandig 3000 
10186265 Jota Quest e Ivete Sangalo 
6828986 Toto_XX (1977 
+0

正則表達式是確定的,但'(\ d +)([^ \ n] *)'會更好。配置單元代碼有問題。 – Laurel

+0

我在運行代碼時仍然看到相同的問題。一切都加載爲空。 –

回答

0

試試這個(或類似的東西):

ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH SERDEPROPERTIES (
    "input.regex" = "(\\d+) ([^\\n]*)", 
    "output.format.string" = "%1$s %2$s" 
) 
STORED AS TEXTFILE; 

Modified from here.