隨著大數(shù)據(jù)平臺(tái)發(fā)展,現(xiàn)已可以處理多類型的非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù),其中將IP地址轉(zhuǎn)換為歸屬地是常見(jiàn)的一種場(chǎng)景。本文為您介紹如何通過(guò)MaxCompute UDF實(shí)現(xiàn)將IPv4或IPv6地址轉(zhuǎn)換為歸屬地。
前提條件
請(qǐng)確認(rèn)已滿足如下條件:- 已安裝MaxCompute客戶端。
更多安裝并配置MaxCompute客戶端信息,請(qǐng)參見(jiàn)安裝并配置MaxCompute客戶端。
- 已安裝MaxCompute Studio,操作詳情請(qǐng)參見(jiàn)安裝MaxCompute Studio。
背景信息
要實(shí)現(xiàn)將IPv4或IPv6地址轉(zhuǎn)換為歸屬地,必須要有IP地址庫(kù),您需要下載IP地址庫(kù)文件并以資源形式上傳至MaxCompute項(xiàng)目。開(kāi)發(fā)MaxCompute UDF,并基于IP地址庫(kù)文件注冊(cè)函數(shù),從而在SQL語(yǔ)句中調(diào)用函數(shù)將IP地址轉(zhuǎn)換為歸屬地。
注意事項(xiàng)
本文提供的IP地址庫(kù)文件,僅供驗(yàn)證該最佳實(shí)踐使用,請(qǐng)您結(jié)合實(shí)際業(yè)務(wù)情況,自行維護(hù)IP地址庫(kù)文件。
操作流程
基于MaxCompute UDF將IPv4或IPv6地址轉(zhuǎn)換為歸屬地的操作流程如下:
- 步驟一:上傳IP地址庫(kù)文件將IP地址庫(kù)文件作為資源上傳至MaxCompute項(xiàng)目,后續(xù)創(chuàng)建的MaxCompute UDF會(huì)依賴此資源。
- 步驟二:建立項(xiàng)目連接連接MaxCompute項(xiàng)目,并創(chuàng)建MaxCompute Java Module。
- 步驟三:編寫(xiě)MaxCompute UDF在IntelliJ IDEA上編寫(xiě)MaxCompute UDF代碼。
- 步驟四:注冊(cè)MaxCompute UDF將MaxCompute UDF注冊(cè)為函數(shù)。
- 步驟五:調(diào)用MaxCompute UDF轉(zhuǎn)換IP地址為歸屬地在SQL語(yǔ)句中調(diào)用注冊(cè)好的函數(shù)將IP地址轉(zhuǎn)換為歸屬地。
步驟一:上傳IP地址庫(kù)文件
- 下載IP地址庫(kù)文件至本地,解壓得到ipv4.txt和ipv6.txt,并放置于MaxCompute客戶端的安裝目錄
...\odpscmd_public\bin
下。本文提供的IP地址庫(kù)文件,僅供驗(yàn)證該最佳實(shí)踐使用,請(qǐng)您結(jié)合實(shí)際業(yè)務(wù)情況,自行維護(hù)IP地址庫(kù)文件。
- 登錄MaxCompute客戶端,進(jìn)入目標(biāo)MaxCompute項(xiàng)目。
- 執(zhí)行
add file
命令,將ipv4.txt和ipv6.txt以File類型資源上傳至MaxCompute項(xiàng)目。命令示例如下。
更多添加資源信息,請(qǐng)參見(jiàn)添加資源。add file ipv4.txt -f; add file ipv6.txt -f;
- (用于本地調(diào)試)將ipv4.txt和ipv6.txt復(fù)制到本地項(xiàng)目的
warehouse/example_project/_resources_
目錄下。
步驟二:建立項(xiàng)目連接
- 連接MaxCompute項(xiàng)目。操作詳情請(qǐng)參見(jiàn)管理項(xiàng)目連接。
- 創(chuàng)建MaxCompute Java Module。操作詳情請(qǐng)參見(jiàn)創(chuàng)建MaxCompute Java Module。
步驟三:編寫(xiě)MaxCompute UDF
- 創(chuàng)建Java Class對(duì)象。后續(xù)步驟中編寫(xiě)的MaxCompute UDF代碼會(huì)用到此處創(chuàng)建的Java Class。
- 編寫(xiě)MaxCompute UDF代碼。
- 準(zhǔn)備本地調(diào)試數(shù)據(jù)。
- 在本地項(xiàng)目的
warehouse/example_project/__tables__/wc_in2/p1=2/p2=1/
目錄下,打開(kāi)data文件。 - 將data文件的最后一列數(shù)據(jù)修改為ipv4.txt中的IP地址(可在ipv4.txt中任選3個(gè)IP地址填入),并保存。
- 在本地項(xiàng)目的
- 調(diào)試MaxCompute UDF,確保代碼可以運(yùn)行成功。更多調(diào)試操作,請(qǐng)參見(jiàn)通過(guò)本地運(yùn)行調(diào)試UDF。
步驟四:注冊(cè)MaxCompute UDF
- 右鍵單擊已經(jīng)編譯成功的MaxCompute UDF腳本,選擇Deploy to server…。
- 在Package a jar, submit resource and register function對(duì)話框中,配置參數(shù)信息。更多參數(shù)解釋,請(qǐng)參見(jiàn)打包、上傳及注冊(cè)。Extra resources必須選中步驟一中上傳的IP地址庫(kù)文件ipv4.txt和ipv6.txt。假設(shè)注冊(cè)好的函數(shù)名稱為ipv4_ipv6_aton。
步驟五:調(diào)用MaxCompute UDF轉(zhuǎn)換IP地址為歸屬地
- 登錄MaxCompute客戶端。
- 執(zhí)行SQL SELECT語(yǔ)句調(diào)用MaxCompute UDF將IPv4或IPv6地址轉(zhuǎn)換為歸屬地。命令示例如下。
- 轉(zhuǎn)換IPv4地址為歸屬地
返回結(jié)果如下。select ipv4_ipv6_aton('116.11.XX.XX');
北海市,廣西壯族自治區(qū)
- 轉(zhuǎn)換IPv6地址為歸屬地
返回結(jié)果如下。select ipv4_ipv6_aton('2001:0250:080b:0:0:0:0:0');
保定市,河北省
- 轉(zhuǎn)換IPv4地址為歸屬地