hive regex serde不承认我的正则表达式

时间:2015-02-11 23:59:43

标签: regex hive

我使用Rubular来验证我的正则表达式:

(\d+)\:+(\d+)+\:+(\d+)+\:+(\d+)

它可以完美地用于跟随字符串

1::594::5::838984679

但同样在蜂巢中不起作用:

create external table ratings8 (userid string, movieid string, rating string, timestamp string) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "(\d+)\:+(\d+)+\:+(\d+)+\:+(\d+)", "output.format.string" = "%1$s %2$s %3$s %4$s" ) LOCATION '/ratings';

有人可以帮助我吗?我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要转义字符串(\\)中的反斜杠。冒号不需要逃脱,但

(\\d+):+(\\d+)+:+(\\d+)+:+(\\d+)

也没有必要(\\d+)+,因为这相当于\\d+