我用以下句子从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\u extract调用中使用相同的正则表达式来提取两个字段。只执行一次regex\u extract是否可以提取多个字段?
1条答案
按热度按时间elcex8rz1#
也许不完全是你要找的,但如果你真的想有一个提取,将给你多个领域,而不是一个,这是我发现:
http://dev.bizo.com/2012/01/using-genericudfs-to-return-multiple.html
请注意,对于这个解决方案,您需要编写一个带有对象检查器的udf,但请自己查看。