我使用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';
有人可以帮助我吗?我做错了什么?
答案 0 :(得分:1)
您需要转义字符串(\\
)中的反斜杠。冒号不需要逃脱,但
(\\d+):+(\\d+)+:+(\\d+)+:+(\\d+)
也没有必要(\\d+)+
,因为这相当于\\d+
。