如何使用Java为Hive编写UDAF函数



我有一个Hive表"log_data",其中包含列:

"User_Agent">(示例 User_Agent:"Mozilla/5.0(兼容;谷歌机器人/2.1;+http://www.google.com/bot.html("(和列城市

我应该编写 UDAF 函数parsed_user_agent

,如下所示 -
SELECT city, parsed_user_agent(User_Agent) group by city

在结果中,我应该从每个城市的User_Agent(操作系统,浏览器和设备(中获取信息。

具体来说,我应该使用由AbstractGenericUDAFResolver.class扩展的类。

  • 问题。我不知道如何实现这个逻辑,但我知道如何解析用户代理,我不知道如何处理输入(字符串User_Agent(和输出(操作系统,浏览器和设备的结构(。

当我是对的并且user_agent总是具有相同的结构时,您为什么不使用regexp_extract?

例如

select regexp_extract('Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', '(\S*).*', 1)

最新更新