2016-04-04 136 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.