我需要为管道分隔数据构建一个Hive SerDe RegEx。
示例数据:
CEF:0 |微软|微软 Windows || Microsoft-Windows-Security-Auditing:434 |已记录帐户 关|。低| eventId = 260 externalId = 44 msg =网络:用户或计算机 从网络登录到此计算机。 categorySignificance = / Informational categoryBehavior = / Access / Stop categoryDeviceGroup = / Operating System catdt =操作系统 categoryOutcome = / Success categoryObject = / Host / Operating | Vista ad.EventIndex = -972 ad.WindowsParserFamily = Windows 2008 R2 | 2008 | 7 | Vista ad.WindowsVersion = Windows Server
为此,我们需要通过管道将前七列分开,并将其后的所有内容视为一列。
DDL :( CEF STRING,供应商STRING,产品STRING,版本STRING,签名STRING,名称STRING,严重性STRING,扩展STRING)
因此,Sample数据输出应映射到列,如下所示: Col1:CEF:0 Col2:微软 Col3:Microsoft Windows COL4: Col5:Microsoft-Windows-Security-Auditing:434 Col6:帐户已注销。 Col7:低 Col8:eventId = 260 externalId = 44 msg =网络:从网络登录到此计算机的用户或计算机。 categorySignificance = / Informational categoryBehavior = / Access / Stop categoryDeviceGroup = / Operating System catdt = Operating System categoryOutcome = / Success categoryObject = / Host / Operating | Vista ad.EventIndex = -972 ad.WindowsParserFamily = Windows 2008 R2 | 2008 | 7 | Vista ad.WindowsVersion = Windows Server
input.regex应该是什么?
还可以使用此正则表达式以(key = value)格式为列提供地图数据类型吗?
答案 0 :(得分:0)
我对hive没有任何考虑,但是看一些例子input.regex
的工作有以下价值:
([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|(.*)
您可能需要配置output.format.string
。也许以下链接有帮助: