如何修复input.regex删除Hive中的括号

时间:2019-07-18 14:50:03

标签: regex hive

我使用配置单元将日志加载到配置单元,但它没有删除“时间”字段中的括号

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

请帮助我为什么不起作用?

0 个答案:

没有答案