在MaxCompute上分析IP来源的方法
淘寶IP庫
淘寶IP地址庫官網地址http://ip.taobao.com/,其查詢接口[http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]](http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]),如下所示:
但是在MaxCompute中禁止使用http請求,那么如何實現在MaxCompute中進行IP的查詢?
目前有三種方式:
下載IP地址庫
① IP地址庫下載,http://ip.taobao.org:9999/ipdata_download.html?下載需要的格式數據。本文以[基本數據格式]為例。
②下載UTF-8數據,打開看看數據格式。
前四個數據是IP地址的起始地址與結束地址,前兩個是十進制整數形式,后兩個是點分形式。這里我們使用整數形式,以便計算IP是否屬于這個網段。
上傳IP地址庫數據
①創建表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查看到表中共計上傳2369306條數據。
③查看ipresource表樣本數據。
編寫UDF函數
通過編寫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函數是否生效并滿足預期值。
在SQL中使用
以具體IP地址為例,在正常情況會以具體表的字段來讀進來。
保證數據準確性可以定期從淘寶IP庫獲取數據來維護ipresource這個表。
?
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的在MaxCompute上分析IP来源的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习:从入门到晋级
- 下一篇: 函数计算搭建 Serverless We