Hive中管道分隔数据的正则表达式

时间:2014-04-16 12:07:22

标签: regex hive

我需要为管道分隔数据构建一个Hive SerDe RegEx。

示例数据:

  

CEF:0 |微软|微软   Windows || Microsoft-Windows-Security-Auditing:434 |已记录帐户   关|。低| eventId = 260 externalId = 44 msg =网络:用户或计算机   从网络登录到此计算机。   categorySignificance = / Informational categoryBehavior = / Access / Stop   categoryDe​​viceGroup = / 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 categoryDe​​viceGroup = / 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)格式为列提供地图数据类型吗?

1 个答案:

答案 0 :(得分:0)

我对hive没有任何考虑,但是看一些例子input.regex的工作有以下价值:

([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)\\|(.*)

您可能需要配置output.format.string。也许以下链接有帮助: