全部產品
Search
文件中心

MaxCompute:開發ODPS MR任務

更新時間:Jun 19, 2024

MaxCompute提供MapReduce編程介面。您可以通過建立ODPS MR類型節點並提交任務調度,使用MapReduce Java API編寫MapReduce程式來處理MaxCompute中的資料。

前提條件

重要

您需要上傳並提交、發布使用的資源後,再建立ODPS MR節點。

背景資訊

MapReduce是一個分布式運算程式的編程架構,核心功能是將使用者編寫的商務邏輯代碼和內建預設組件整合成一個完整的分布式運算程式,並發運行在一個Hadoop叢集上。MaxCompute提供兩版本的MapReduce編程介面:詳情請參見MapReduce

  • MaxCompute MapReduce:MaxCompute的原生介面,執行速度快、開發快捷、不暴露檔案系統。

  • MaxCompute擴充MapReduce(MR2):對MaxCompute MapReduce的擴充,支援更複雜的作業調度邏輯。MapReduce的實現方式與MaxCompute原生介面一致。

在DataWorks中,您可以通過ODPS MR節點實現MaxCompute MapReduce任務的調度運行,以及與其他作業的整合操作。

使用限制

ODPS MR節點的使用限制請參見使用限制

編輯代碼:簡單樣本

以下以一個簡單樣本為您介紹ODPS MR節點的使用:統計wc_in表中各字串出現的次數,並將結果寫入wc_out表。

  1. 上傳並提交、發布資源mapreduce example.jar,操作詳情請參見建立並使用MaxCompute資源

    說明

    關於mapreduce example.jar包內部的實現邏輯請參見WordCount樣本

  2. 在ODPS MR節點輸入以下代碼後運行。

    --建立輸入表。
    CREATE TABLE if not exists wc_in (key STRING, value STRING);
    --建立輸出表。
    CREATE TABLE if not exists wc_out (key STRING, cnt BIGINT);
        ---建立系統dual。
        drop table if exists dual;
        create table dual(id bigint); --如果工作空間不存在該偽表,則需要建立並初始化資料。
        ---向系統偽表初始化資料。
        insert overwrite table dual select count(*)from dual;
        ---向輸入表wc_in插入樣本資料。
        insert overwrite table wc_in select * from (
        select 'project','val_pro' from dual 
        union all 
        select 'problem','val_pro' from dual
        union all 
        select 'package','val_a' from dual
        union all 
        select 'pad','val_a' from dual
          ) b;
    -- 引用剛剛上傳的JAR包資源,可以在資源管理欄中找到該資源,右鍵引用資源。
    --@resource_reference{"mapreduce-examples.jar"}
    jar -resources mapreduce-examples.jar -classpath ./mapreduce-examples.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out

    代碼說明如下:

    • --@resource_reference:您可以按右鍵資源名稱,選擇引用資源,即可自動產生該條語句。

    • -resources:引用到的JAR資源檔名。

    • -classpath:JAR包的路徑。由於已經引用了資源,此處路徑統一為./下的JAR包。

    • com.aliyun.odps.mapred.open.example.WordCount:執行程序呼叫JAR中的主類,需要和JAR中的主類名稱保持一致。

    • wc_in:MR的輸入表名稱,已在上述代碼中提前建立。

    • wc_out:MR的輸出表名稱,已在上述代碼中提前建立。

    • 一個MR調用多個JAR資源時,classpath寫法為-classpath ./xxxx1.jar,./xxxx2.jar,即兩個路徑之間用英文逗號(,)分隔。

    返回結果:OK

  3. 在ODPS SQL節點中查詢輸出表wc_out的資料。

    select * from wc_out;

    返回結果:

    +------------+------------+
    | key        | cnt        |
    +------------+------------+
    | package    | 1          |
    | pad        | 1          |
    | problem    | 1          |
    | project    | 1          |
    | val_a      | 2          |
    | val_pro    | 2          |
    +------------+------------+

編輯代碼:進階樣本

更多情境的ODPS MR任務開發,請參見:

後續步驟

當您完成當前節點的任務開發後,通常您可進行以下操作。

  • 調度配置:配置節點的周期性調度屬性。任務需要周期性調度運行時,您需要設定節點後續實際運行過程中的重跑屬性、調度依賴關係等,操作詳情請參見任務調度屬性配置概述

  • 任務調試:對當前節點的代碼進行測試回合,確認代碼邏輯符合預期,操作詳情請參見任務調試流程

  • 任務發布:完成所有開發相關操作後,您需要將所有任務節點進行發布,發布後節點即會根據調度配置結果進行周期性運行,操作詳情請參見發布任務

  • MapReduce常見問題:您可瞭解MR任務執行過程中的常見問題,便於出現異常時快速排查解決。