hive udf ip解析

2019/02/14 swaiter

ip_parse

支持ipv4 v6解析

文件格式为geoip.mmdb

创建自定义函数的步骤

  • 1.创建java类 extends org.apache.hadoop.hive.sql.exec.UDF

  • 2.需要实现evalute函数,evalute函数支持重载

  • 3.把程序打包放在机器上

  • 4.进入hive客户端,上传jar包到hdfs

  • 5.创建duf函数

hive (default)> add jar /home/datacenter/ip_parse-1.0-jar-with-dependencies.jar;
hive (default)> create temporary function get_location_ip as 'com.yoozoo.dc.IPParse';
hive (default)> select get_location_ip('61.174.15.215');
OK
亚洲|CN|1814991|中国|浙江省|null|null|120.1614|30.2936|null
Time taken: 0.115 seconds, Fetched: 1 row(s)
hive (default)> select get_location_ip('61.174.15.215','en');
OK
Asia|CN|1814991|China|Zhejiang|null|null|120.1614|30.2936|null
select get_location_ip('2404:6800:8005::68','en');
OK
Oceania|AU|2077456|Australia|null|null|null|133.0|-27.0|null

注意事项:

java程序打成jar包后,经常碰到一些资源文件找不到等问题

可以如下方式解决

InputStream is= IPParse.class.getResourceAsStream("/"+Constants.geoIPFile);
            reader = new DatabaseReader.Builder(is).build();
            

Search

    Table of Contents