函数regex\u在hive中提取

r1zk6ea1  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(420)

我用以下句子从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是否可以提取多个字段?

elcex8rz

elcex8rz1#

也许不完全是你要找的,但如果你真的想有一个提取,将给你多个领域,而不是一个,这是我发现:
http://dev.bizo.com/2012/01/using-genericudfs-to-return-multiple.html
请注意,对于这个解决方案,您需要编写一个带有对象检查器的udf,但请自己查看。

相关问题