HIVE SerDeproperties输入正则表达式

时间:2016-04-04 01:30:44

标签: regex hive

我的问题是如何正确使用SerDeProperties来解析下面的行。我尝试了多种变体,并继续用空值填充我的表。下面我有SerDe和样本数据。在([^\s]*)空白^匹配0个或更多字符\s之前,*应保持原状。同样,下一个正则表达式应该在下一列

中将所有内容放在行返回之前

我的意图是将数字分成一列,将其他所有内容分成另一列。我对塞尔德的解释有什么问题?

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  

1 个答案:

答案 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.