配置单元正则表达式 serde 无法识别我的正则表达式

hive regex serde doesnt recognize my regex

我使用 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';

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

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

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

也没有必要 (\d+)+ 因为这等同于 \d+.