【发布时间】:2014-05-31 07:13:25
【问题描述】:
我需要为管道分隔的数据构造一个 Hive SerDe RegEx。
样本数据:
CEF:0|微软|微软 Windows||Microsoft-Windows-Security-Auditing:434|帐户已记录 关闭。|低| eventId=260 externalId=44 msg=网络:用户或计算机 从网络登录到这台计算机。 categorySignificance=/信息类别行为=/访问/停止 categoryDeviceGroup=/操作系统 catdt=操作系统 categoryOutcome=/成功 categoryObject=/Host/Operating|Vista ad.EventIndex=-972 ad.WindowsParserFamily=Windows 2008 R2|2008|7|Vista ad.WindowsVersion=Windows 服务器
为此,我们需要通过管道将前七列分开,并将之后的所有内容视为一列。
DDL:(CEF STRING、供应商 STRING、产品 STRING、版本 STRING、签名 STRING、名称 STRING、严重性 STRING、扩展 STRING)
因此,样本数据输出应映射到列,如下所示: Col1:CEF:0 Col2:微软 Col3:微软视窗 Col4: Col5:Microsoft-Windows-安全-审计:434 Col6:帐户已注销。 Col7:低 Col8: eventId=260 externalId=44 msg=Network: 用户或计算机从网络登录到这台计算机。 categorySignificance=/信息 categoryBehavior=/访问/停止 categoryDeviceGroup=/操作系统 catdt=操作系统 categoryOutcome=/成功 categoryObject=/Host/Operating|Vista ad.EventIndex=-972 ad.WindowsParserFamily=Windows 2008 R2|2008|7|Vista ad.WindowsVersion=Windows 服务器
input.regex 应该是什么?
还可以使用此 Regex 为 (key=value) 格式的列提供 Map 数据类型吗?
【问题讨论】:
-
请先生输出样本!
-
你的代码哪里出错了?
-
@aelor 添加了示例数据的预期输出。