我使用配置单元将日志加载到配置单元,但它没有删除“时间”字段中的括号
CREATE TABLE citrix_combined_log(
source STRING,
dest1 STRING,
dest2 STRING,
time STRING,
method STRING,
status STRING,
size STRING,
url STRING,
version STRING,
cookie STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "(.*) - \"(.*)\" \"(.*)\" - [^[].*[^]] \"(.*?)\" (-|[0-9]*) (-|[0-9]*) \"(.*?)\" \"(.*?)\" \"(.*?)\"",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s %10$s"
)
其错误:
失败:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。 java.util.regex.PatternSyntaxException:索引86附近的未封闭字符类 (。)-“(。)”“(。)”-[^ []。 [^]]“(。?)”(-| [0-9] )(-| [0-9] )“(。?)”“(。?)”“(。?) “
日志文件如下所示:
172.16.8.3 - "192.168.1.3" "192.168.1.5" - [15/Jul/2019:00:00:02 +0700] "POST "/clos/BatchEventMonitorServlet" "-" HTTP/1.1" 200 115 "-" "Java/1.6.0" "-"
我使用[^[].*[^]]
在regex101.com中测试正常
它将删除方括号[]
15 /七月/ 2019:00:00:02 +0700
请帮助我为什么不起作用?