在MaxCompute上分析IP来源的方法
淘寶IP庫
淘寶IP地址庫官網(wǎng)地址http://ip.taobao.com/,其查詢接口[http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]](http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]),如下所示:
但是在MaxCompute中禁止使用http請求,那么如何實(shí)現(xiàn)在MaxCompute中進(jìn)行IP的查詢?
目前有三種方式:
下載IP地址庫
① IP地址庫下載,http://ip.taobao.org:9999/ipdata_download.html?下載需要的格式數(shù)據(jù)。本文以[基本數(shù)據(jù)格式]為例。
②下載UTF-8數(shù)據(jù),打開看看數(shù)據(jù)格式。
前四個(gè)數(shù)據(jù)是IP地址的起始地址與結(jié)束地址,前兩個(gè)是十進(jìn)制整數(shù)形式,后兩個(gè)是點(diǎn)分形式。這里我們使用整數(shù)形式,以便計(jì)算IP是否屬于這個(gè)網(wǎng)段。
上傳IP地址庫數(shù)據(jù)
①創(chuàng)建表DDL:
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命令)
odps@ workshop_demo>tunnel upload ipdata.txt.utf8 ipresource;可以通過SQL查看到表中共計(jì)上傳2369306條數(shù)據(jù)。
③查看ipresource表樣本數(shù)據(jù)。
編寫UDF函數(shù)
通過編寫Python UDF將點(diǎn)號分割的IP地址轉(zhuǎn)化為int類型的IP。詳細(xì)如下:
①添加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點(diǎn)擊提交并解鎖。
③新建自定義函數(shù):
提交并解鎖:
④驗(yàn)證ipint函數(shù)是否生效并滿足預(yù)期值。
在SQL中使用
以具體IP地址為例,在正常情況會(huì)以具體表的字段來讀進(jìn)來。
保證數(shù)據(jù)準(zhǔn)確性可以定期從淘寶IP庫獲取數(shù)據(jù)來維護(hù)ipresource這個(gè)表。
?
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的在MaxCompute上分析IP来源的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习:从入门到晋级
- 下一篇: 函数计算搭建 Serverless We