日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用MaxCompute分析IP來(lái)源最佳實(shí)踐

更新時(shí)間:

本文為您介紹如何使用MaxCompute分析IP來(lái)源,包括下載、上傳IP地址庫(kù)數(shù)據(jù)、編寫(xiě)UDF函數(shù)和編寫(xiě)SQL四個(gè)步驟。

前提條件

背景信息

淘寶IP地址庫(kù)的查詢接口為IP地址字符串,使用示例如下。查詢接口

在MaxCompute中禁止使用HTTP請(qǐng)求,因此目前可以通過(guò)如下三種方式實(shí)現(xiàn)在MaxCompute中查詢IP:

  • 用SQL將數(shù)據(jù)下載至本地,再發(fā)起HTTP請(qǐng)求查詢。

    說(shuō)明

    效率低下,且淘寶IP庫(kù)查詢頻率需要小于10 QPS,否則拒絕請(qǐng)求。

  • 下載IP地址庫(kù)至本地,再進(jìn)行查詢。

    說(shuō)明

    效率低下,且不利于數(shù)據(jù)倉(cāng)庫(kù)等產(chǎn)品分析使用。

  • 將IP地址庫(kù)定期維護(hù)上傳至MaxCompute,進(jìn)行連接查詢。

    說(shuō)明

    比較高效,但是IP地址庫(kù)需要自己定期維護(hù)。

下載IP地址庫(kù)數(shù)據(jù)

  1. 獲取地址庫(kù)數(shù)據(jù)。本文提供示例IP地址庫(kù)數(shù)據(jù)UTF-8格式的不完整的地址庫(kù)demo

  2. 下載示例地址庫(kù)數(shù)據(jù)至本地,示例如下。

    image

    示例數(shù)據(jù)說(shuō)明如下:

    • 數(shù)據(jù)格式為UTF-8。

    • 前四個(gè)數(shù)據(jù)是IP地址的起始地址與結(jié)束地址。前兩個(gè)是十進(jìn)制整數(shù)形式,后兩個(gè)是點(diǎn)分形式。IP地址段為整數(shù)形式,以便計(jì)算IP是否屬于這個(gè)網(wǎng)段。

    說(shuō)明

    如果您需要使用自己的IP地址,請(qǐng)自行下載IP地址庫(kù),具體的下載地址和使用方式請(qǐng)參見(jiàn)MaxCompute中實(shí)現(xiàn)IP地址歸屬地轉(zhuǎn)換

上傳IP地址庫(kù)數(shù)據(jù)

  1. 在MaxCompute客戶端執(zhí)行如下語(yǔ)句,創(chuàng)建表ipresource存放IP地址庫(kù)數(shù)據(jù)。

    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
    );
  2. 執(zhí)行如下Tunnel命令,上傳本地示例IP地址庫(kù)數(shù)據(jù)至表ipresource

    odps@ workshop_demo>tunnel upload D:/ipdata.txt.utf8 ipresource;

    上述命令中,D:/ipdata.txt.utf8為IP地址庫(kù)數(shù)據(jù)本地存放路徑。更多命令說(shuō)明請(qǐng)參見(jiàn)Tunnel命令

    您可以執(zhí)行如下語(yǔ)句驗(yàn)證數(shù)據(jù)是否上傳成功。

    --查詢表中數(shù)據(jù)條數(shù)。
    select count(*) from ipresource;
  3. 執(zhí)行如下SQL語(yǔ)句,查看表ipresource前10條的樣本數(shù)據(jù)。

    select * from ipresource limit 10;

    返回結(jié)果如下。

    image

編寫(xiě)UDF函數(shù)

通過(guò)編寫(xiě)Python UDF,將點(diǎn)號(hào)分割的IP地址轉(zhuǎn)化為整數(shù)類型的IP地址,本示例使用DataWorks的PyODPS完成。詳情請(qǐng)參見(jiàn)開(kāi)發(fā)PyODPS 2任務(wù)

  1. 登錄DataWorks控制臺(tái),切換至目標(biāo)地域后,單擊左側(cè)導(dǎo)航欄的數(shù)據(jù)開(kāi)發(fā)與治理 > 數(shù)據(jù)服務(wù),在下拉框中選擇對(duì)應(yīng)工作空間后單擊進(jìn)入數(shù)據(jù)服務(wù)

  2. 新建Python資源。

    1. 右鍵單擊目標(biāo)業(yè)務(wù)流程,選擇新建資源 > MaxCompute > Python

    2. 新建資源對(duì)話框中,填寫(xiě)資源名稱,并勾選上傳為ODPS資源,單擊新建

    3. 在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
    4. 單擊image.png圖標(biāo),提交資源。

  3. 新建函數(shù)。

    1. 右鍵單擊目標(biāo)業(yè)務(wù)流程,選擇新建函數(shù) > MaxCompute > 函數(shù)

    2. 新建函數(shù)對(duì)話框中,輸入名稱,單擊新建

      說(shuō)明

      如果數(shù)據(jù)開(kāi)發(fā)中綁定了多個(gè)MaxCompute引擎,則選擇本次需要?jiǎng)?chuàng)建函數(shù)的MaxCompute引擎實(shí)例

    3. 在函數(shù)的編輯頁(yè)面,配置各項(xiàng)參數(shù)。

      **

      參數(shù)

      描述

      函數(shù)類型

      選擇函數(shù)類型,包括數(shù)學(xué)運(yùn)算函數(shù)聚合函數(shù)字符串處理函數(shù)日期函數(shù)窗口函數(shù)其他函數(shù)

      MaxCompute引擎實(shí)例

      默認(rèn)不可以修改。

      函數(shù)名

      UDF函數(shù)名,即SQL中引用該函數(shù)所使用的名稱。需要全局唯一,且注冊(cè)函數(shù)后不支持修改。

      責(zé)任人

      默認(rèn)顯示。

      類名

      實(shí)現(xiàn)UDF的主類名,必填。

      說(shuō)明

      當(dāng)資源類型為Python時(shí),類名格式為Python資源名稱.類名(資源名稱中的.py無(wú)需填寫(xiě))。

      資源列表

      完整的文件名稱,支持模糊匹配查找本工作空間中已添加的資源,必填。

      多個(gè)文件之間,使用英文逗號(hào)(,)分隔。

      描述

      針對(duì)當(dāng)前UDF作用的簡(jiǎn)單描述。

      命令格式

      該UDF的具體使用方法示例,例如test

      參數(shù)說(shuō)明

      支持輸入的參數(shù)類型以及返回參數(shù)類型的具體說(shuō)明。

      返回值

      返回值,例如1,非必填項(xiàng)。

      示例

      函數(shù)中的示例,非必填項(xiàng)。

  4. 單擊工具欄中的保存圖標(biāo),保存函數(shù)。

  5. 提交函數(shù)。

    1. 單擊工具欄中的提交圖標(biāo)。

    2. 提交新版本對(duì)話框中,輸入備注

    3. 單擊確認(rèn)

在SQL中使用UDF函數(shù)分析IP來(lái)源

  1. 右鍵單擊業(yè)務(wù)流程,選擇新建 > MaxCompute > ODPS SQL

  2. 新建節(jié)點(diǎn)對(duì)話框中輸入節(jié)點(diǎn)名稱,并單擊確認(rèn)

  3. 在ODPS SQL節(jié)點(diǎn)編輯頁(yè)面,輸入如下語(yǔ)句。

    select * from ipresource
    WHERE ipint('192.0.2.0') >= start_ip
    AND ipint('192.0.2.0') <= end_ip
  4. 單擊**圖標(biāo)運(yùn)行代碼。

  5. 您可以在運(yùn)行日志查看運(yùn)行結(jié)果。