函数regex_extract在hive中

时间:2015-02-13 11:14:19

标签: regex hadoop hive extract

我用这句话从hive中的日志中提取信息:

regexp_extract(values, "^(\\w{3} \\s?\\d+ \\d\\d:\\d\\d:\\d\\d \\w+-\\w+ \\w+:) (\\[)(\\d{2})(\\/)(\\w{3})(\\/)(\\d{4})(.*\\])",3)day, 
regexp_extract(values, "^(\\w{3} \\s?\\d+ \\d\\d:\\d\\d:\\d\\d \\w+-\\w+ \\w+:) (\\[)(\\d{2})(\\/)(\\w{3})(\\/)(\\d{4})(.*\\])",5)month

我使用相同的正则表达式在两个不同的regex_extract调用中提取两个字段。可以提取多个字段只执行一次regex_extract吗?

1 个答案:

答案 0 :(得分:0)

也许不完全是你想要的,但是如果你的真的希望有一个提取会给你多个字段而不是一个,那么这就是我发现的:

http://dev.bizo.com/2012/01/using-genericudfs-to-return-multiple.html

请注意,对于此解决方案,您需要使用对象检查器编写UDF,但请亲自查看。