開發(fā)ODPS MR任務(wù)
MaxCompute提供MapReduce編程接口。您可以通過創(chuàng)建ODPS MR類型節(jié)點并提交任務(wù)調(diào)度,使用MapReduce Java API編寫MapReduce程序來處理MaxCompute中的數(shù)據(jù)。
前提條件
上傳并提交、發(fā)布使用的資源,詳情請參見創(chuàng)建并使用MaxCompute資源。
創(chuàng)建ODPS MR節(jié)點,詳情請參見創(chuàng)建并管理MaxCompute節(jié)點。
您需要上傳并提交、發(fā)布使用的資源后,再創(chuàng)建ODPS MR節(jié)點。
背景信息
MapReduce是一個分布式運算程序的編程框架,核心功能是將用戶編寫的業(yè)務(wù)邏輯代碼和自帶默認(rèn)組件整合成一個完整的分布式運算程序,并發(fā)運行在一個Hadoop集群上。MaxCompute提供兩版本的MapReduce編程接口:詳情請參見MapReduce。
MaxCompute MapReduce:MaxCompute的原生接口,執(zhí)行速度快、開發(fā)快捷、不暴露文件系統(tǒng)。
MaxCompute擴展MapReduce(MR2):對MaxCompute MapReduce的擴展,支持更復(fù)雜的作業(yè)調(diào)度邏輯。MapReduce的實現(xiàn)方式與MaxCompute原生接口一致。
在DataWorks中,您可以通過ODPS MR節(jié)點實現(xiàn)MaxCompute MapReduce任務(wù)的調(diào)度運行,以及與其他作業(yè)的集成操作。
使用限制
ODPS MR節(jié)點的使用限制請參見使用限制。
編輯代碼:簡單示例
以下以一個簡單示例為您介紹ODPS MR節(jié)點的使用:統(tǒng)計wc_in表中各字符串出現(xiàn)的次數(shù),并將結(jié)果寫入wc_out表。
上傳并提交、發(fā)布資源mapreduce example.jar,操作詳情請參見創(chuàng)建并使用MaxCompute資源。
說明關(guān)于mapreduce example.jar包內(nèi)部的實現(xiàn)邏輯請參見WordCount示例。
在ODPS MR節(jié)點輸入以下代碼后運行。
--創(chuàng)建輸入表。 CREATE TABLE if not exists wc_in (key STRING, value STRING); --創(chuàng)建輸出表。 CREATE TABLE if not exists wc_out (key STRING, cnt BIGINT); ---創(chuàng)建系統(tǒng)dual。 drop table if exists dual; create table dual(id bigint); --如果工作空間不存在該偽表,則需要創(chuàng)建并初始化數(shù)據(jù)。 ---向系統(tǒng)偽表初始化數(shù)據(jù)。 insert overwrite table dual select count(*)from dual; ---向輸入表wc_in插入示例數(shù)據(jù)。 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
:您可以右鍵單擊資源名稱,選擇引用資源,即可自動產(chǎn)生該條語句。-resources
:引用到的JAR資源文件名。-classpath
:JAR包的路徑。由于已經(jīng)引用了資源,此處路徑統(tǒng)一為./下的JAR包。com.aliyun.odps.mapred.open.example.WordCount
:執(zhí)行過程調(diào)用JAR中的主類,需要和JAR中的主類名稱保持一致。wc_in
:MR的輸入表名稱,已在上述代碼中提前創(chuàng)建。wc_out
:MR的輸出表名稱,已在上述代碼中提前創(chuàng)建。一個MR調(diào)用多個JAR資源時,classpath寫法為
-classpath ./xxxx1.jar,./xxxx2.jar
,即兩個路徑之間用英文逗號(,)分隔。
返回結(jié)果:OK
在ODPS SQL節(jié)點中查詢輸出表wc_out的數(shù)據(jù)。
select * from wc_out;
返回結(jié)果:
+------------+------------+ | key | cnt | +------------+------------+ | package | 1 | | pad | 1 | | problem | 1 | | project | 1 | | val_a | 2 | | val_pro | 2 | +------------+------------+
編輯代碼:進階示例
更多場景的ODPS MR任務(wù)開發(fā),請參見:
后續(xù)步驟
當(dāng)您完成當(dāng)前節(jié)點的任務(wù)開發(fā)后,通常您可進行以下操作。
調(diào)度配置:配置節(jié)點的周期性調(diào)度屬性。任務(wù)需要周期性調(diào)度運行時,您需要設(shè)置節(jié)點后續(xù)實際運行過程中的重跑屬性、調(diào)度依賴關(guān)系等,操作詳情請參見任務(wù)調(diào)度屬性配置概述。
任務(wù)調(diào)試:對當(dāng)前節(jié)點的代碼進行測試運行,確認(rèn)代碼邏輯符合預(yù)期,操作詳情請參見任務(wù)調(diào)試流程。
任務(wù)發(fā)布:完成所有開發(fā)相關(guān)操作后,您需要將所有任務(wù)節(jié)點進行發(fā)布,發(fā)布后節(jié)點即會根據(jù)調(diào)度配置結(jié)果進行周期性運行,操作詳情請參見發(fā)布任務(wù)。
MapReduce常見問題:您可了解MR任務(wù)執(zhí)行過程中的常見問題,便于出現(xiàn)異常時快速排查解決。