大數據平台中如何實現IP位址歸屬地轉換

大數據平臺中如何實現IP地址歸屬地轉換

摘要

大數據平臺的成熟使得更多種類的非結構化、半結構化的數據分析成為可能,其中應用非常廣泛的一種場景就是日誌分析。在日誌類型數據的清洗轉換過程中把IP地址轉換為歸屬地又是極為常見的一種場景。那麼利用MaxCompute如何實現IP地址向歸屬地的轉換呢?

閱讀字數:2972 | 8分鐘閱讀

正文

俗話說:巧婦難為無米之炊,要實現IP地址與歸屬地的轉換必須要有IP地址庫,不過好在互聯網上已經有一些資源,而且還提供免費版本的IP數據庫下載詳見:www.ipip.net(請叫我雷鋒^_^)。沒錯,我們首先要把它下載到本地,命名為ip.dat

大數據平臺中如何實現IP地址歸屬地轉換

米已經有了,接下來就考慮怎麼下廚了。想要在MaxCompute中實現用戶自定義邏輯的代碼處理,最常用的就是MRSQL UDF。考慮到大部分用戶使用偏好以及工作成果的可重用性,此處我們給大家介紹通過UDF的實現方式。如果客官還對MaxCompute如何實現UDF不熟悉,請自行腦補:https://help.aliyun.com/document_detail/27866.html,文檔中都有代碼示例。UDF分為三種,分別是UDF、UDAF、UDTF,此處不過多介紹,毫無疑問這種需求場景需要採用第一種實現。

實現用戶自定義函數要繼承com.aliyun.odps.udf.UDF,具體實現分兩個步驟:

1、實現setup方法加載IP地址庫數據,並做初始化,代碼片段如下圖:

大數據平臺中如何實現IP地址歸屬地轉換

2、實現evaluate方法,完成用戶數據IP地址到歸屬地的轉換邏輯,代碼片段如下圖:

大數據平臺中如何實現IP地址歸屬地轉換

此處需要注意的是,MaxCompute中是採用UTF-8編碼的,為了避免出現中文亂碼,我們在輸出是可以指定編碼方式為UTF-8

Coding完成後編譯打包,命名為

getaddr.jar。而後我們需要把ip.dat以及getaddr.jar作為資源上傳到MaxCompute項目空間。上傳資源可以通過數加DataIDE中嚮導的方式,也可以通過Console中執行命令的方式。兩種方式截圖如下:

方式一

大數據平臺中如何實現IP地址歸屬地轉換

方式二

大數據平臺中如何實現IP地址歸屬地轉換

資源上傳完畢後需要創建Function,在控制檯或者數加DataIDE窗口中執行命令,如圖:

大數據平臺中如何實現IP地址歸屬地轉換

至此,UDF已經實現完成,我們需要做個驗證,比如我們可以通過UDF查詢116.11.34.15這個IP地址的所屬地,如下圖:

大數據平臺中如何實現IP地址歸屬地轉換

準確性驗證,如下圖:

大數據平臺中如何實現IP地址歸屬地轉換

當然準確性一方面是我們解析匹配的邏輯,更重要的也取決於IP地址庫本身是否準確。

以上為今天的分享內容,謝謝大家!


分享到:


相關文章: