实现hive udf

dgjrabp2  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(446)

我有一个带有ip地址列的配置单元表。如何从ip地址栏中查找国家、城市和邮政编码?
我看到一个自定义项写着:
https://github.com/edwardcapriolo/hive-geoip
如何在Hive中使用自定义项?我可以自己创建函数名吗?
udf说我们需要单独的数据库:
http://geolite.maxmind.com/download/geoip/database/geolitecountry/geoip.dat.gz
如何在hive上实现该数据库?
任何反馈都将不胜感激。
谢谢,
里约

esbemjvw

esbemjvw1#

您可以通过添加jar和创建第一个链接所描述的临时函数来利用hive中的udf。

add file GeoIP.dat;
add jar geo-ip-java.jar;
add jar hive-udf-geo-ip-jtg.jar;
create temporary function geoip as 'com.jointhegrid.hive.udf.GenericUDFGeoIP';

您可以将函数名更改为您喜欢的名称,只需将“temporary function”后面的单词从“geoip”替换为您想要的名称。
添加链接到的数据库只需将其下载到unix服务器,然后使用gzip解压缩即可。一旦它是geoip.dat格式,将它和下载的jar移动到/your/users/(your username)/目录中,然后按照上面的说明运行代码。这些文件必须位于顶层目录中,或者在add file和add jar语句中明确指向它们。我的意思是 add file GeoIP.dat; 一定是的 add file /users/wertz/downloads/GeoIP.dat; 例如。
最后,通过查看代码,udf需要三个参数。第一个参数是ip地址,第二个参数是您要查找的内容(选项可能是country\u name、country\u code、area\u code、city、dma\u code、latitude、longitude、metro\u code、postal\u code、region、org或id),最后的值是geoip数据库的文件名,希望您没有从geoip.dat更改它

相关问题