MaxCompute提供MapReduce編程接口。您可以通過創建ODPS MR類型節點并提交任務調度,使用MapReduce Java API編寫MapReduce程序來處理MaxCompute中的數據。
前提條件
上傳并提交、發布使用的資源,詳情請參見創建并使用MaxCompute資源。
創建ODPS MR節點,詳情請參見創建并管理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表。
上傳并提交、發布資源mapreduce example.jar,操作詳情請參見創建并使用MaxCompute資源。
說明關于mapreduce example.jar包內部的實現邏輯請參見WordCount示例。
在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
在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任務執行過程中的常見問題,便于出現異常時快速排查解決。