我正在尝试创建一个 Hive 外部表,以便将系统日志消息分为四列:时间戳、主机、程序名+pid 和消息。我想在不使用 Regex serde 的情况下执行此操作,因为我还希望 Impala 可以使用该表(不支持 Regex Serde)。
麻烦的是,如果我用四个字段定义架构并指定“\040”作为字段分隔符,我最终只会得到消息的第一个字符串。例如,此日志行:
2014-01-01T04:00:00 myhost sshd[9008]: joe logged in from 192.168.1.1 with password ....
被映射为:
timestamp: 2014-01-01T04:00:00
host: myhost
prog: sshd[9008]:
msg: joe
“从...登录”被砍掉了。
鉴于有四列,有没有办法告诉 Hive 将其余字段放在最后一列而不是将它们排除在外?一个贪婪的选择?
谢谢