MaxCompute提供MapReduce編程介面。您可以通過建立MaxCompute MR類型節點並提交任務調度,使用MapReduce Java API編寫MapReduce程式來處理MaxCompute中的大規模資料集。
前提條件
(可選,RAM帳號需要)進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發或空間管理員(許可權較大,謹慎添加)角色許可權,新增成員的操作詳情請參見為工作空間增加空間成員。
說明如果您使用的是主帳號,則忽略該添加操作。
已開發建立專案目錄,詳情請參見專案目錄。
上傳並發布使用的資源,詳情請參見資源管理。
建立MaxCompute MR節點,詳情請參見建立周期任務。
您需要上傳並發布使用的資源後,再建立MaxCompute MR節點。
背景資訊
MapReduce是一個分散式運算架構,它將使用者編寫的商務邏輯代碼與內建群組件結合,形成一個完整的分布式程式,並發運行在一個Hadoop叢集上。MaxCompute提供兩個版本的MapReduce編程介面:詳情請參見MapReduce。
MaxCompute MapReduce:MaxCompute的原生介面,執行速度快、開發快捷、不暴露檔案系統。
MaxCompute擴充MapReduce(MR2):對MaxCompute MapReduce的擴充,支援更複雜的作業調度邏輯。MapReduce的實現方式與MaxCompute原生介面一致。
在DataWorks中,您可以通過MaxCompute MR節點實現MaxCompute MapReduce任務的調度運行,以及與其他作業的整合操作。
使用限制
MaxCompute MR節點的使用限制請參見使用限制。
操作步驟
在MaxCompute MR節點編輯頁面,執行如下開發操作。
開發MR代碼
以下以一個簡單樣本為您介紹MaxCompute MR節點的使用:
統計wc_in表中各字串出現的次數,並將結果寫入wc_out表。上傳並提交、發布資源mapreduce example.jar,操作詳情請參見資源管理。
說明關於
mapreduce example.jar包內部的實現邏輯請參見WordCount樣本。在MaxCompute 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,即兩個路徑之間用英文逗號(,)分隔。
執行MR任務
在調試配置的計算資源中,選擇配置計算資源、計算配額和DataWorks資源群組。
說明訪問公用網路或VPC網路環境的資料來源需要使用與資料來源測試連通性成功的調度資源群組。詳情請參見網路連通方案。
在工具列的參數對話方塊中選擇已建立的MaxCompute資料來源,單擊運行MR任務。
(可選)查詢結果
在MaxCompute 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任務開發,請參見:
常見問題:您可瞭解MR任務執行過程中的常見問題,便於出現異常時快速排查解決。詳情可參見MapReduce常見問題。