摘要: 在MaxCompute上分析IP来源和供应商php
淘宝IP地址库官网地址http://ip.taobao.com/,其查询接口[http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]](http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]),以下所示:html
可是在MaxCompute中禁止使用http请求,那么如何实如今MaxCompute中进行IP的查询?
目前有三种方式:函数
① IP地址库下载,http://ip.taobao.org:9999/ipdata_download.html 下载须要的格式数据。本文以[基本数据格式]为例。lua
②下载UTF-8数据,打开看看数据格式。spa
前四个数据是IP地址的起始地址与结束地址,前两个是十进制整数形式,后两个是点分形式。这里咱们使用整数形式,以便计算IP是否属于这个网段。3d
①建立表DDL:code
DROP TABLE IF EXISTS ipresource ; CREATE TABLE IF NOT EXISTS ipresource ( start_ip BIGINT ,end_ip BIGINT ,start_ip_arg string ,end_ip_arg string ,country STRING ,area STRING ,city STRING ,county STRING ,isp STRING ) ;
②使用Tunnel上传文件(文件>10MB须要使用Tunnel upload命令)htm
odps@ workshop_demo>tunnel upload ipdata.txt.utf8 ipresource;
能够经过SQL查看到表中共计上传2369306条数据。blog
③查看ipresource表样本数据。接口
经过编写Python UDF将点号分割的IP地址转化为int类型的IP。详细以下:
①添加Python 资源。
②编写Python资源代码。
from odps.udf import annotate @annotate("string->bigint") class ipint(object): def evaluate(self, ip): try: return reduce(lambda x, y: (x << 8) + y, map(int, ip.split('.'))) except: return 0
点击提交并解锁。
③新建自定义函数:
提交并解锁:
④验证ipint函数是否生效并知足预期值。
以具体IP地址为例,在正常状况会以具体表的字段来读进来。
保证数据准确性能够按期从淘宝IP库获取数据来维护ipresource这个表。