我用这句话从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吗?
答案 0 :(得分:0)
也许不完全是你想要的,但是如果你的真的希望有一个提取会给你多个字段而不是一个,那么这就是我发现的:
http://dev.bizo.com/2012/01/using-genericudfs-to-return-multiple.html
请注意,对于此解决方案,您需要使用对象检查器编写UDF,但请亲自查看。