OPEN MR 基本概念
爲了幫助用戶更加安全、便捷的使用 MaxCompute 的 MR 功能,實現更復雜的計算邏輯 。本文檔主要講述 OPEN MR 的開發方法,幫忙用戶更好的開發複雜的 MR 模型 。OPEN MR 用戶只需要關注 Mapper/Reducer 部分的邏輯,作業提交部分邏輯會由平臺統一來完成 。涉及到一些日常調度涉及到的變量可以在創建 OPEN MR 節點時,在配置中通過參數的方式來指定 。ODPS_MR任務類型已經開放,建議優先使用ODPS_MR。
注意:OPEN_MR不支持引用資源表,不支持多個Reduce等
場景和數據說明
本示例將以經典的 WordCount 示例來介紹如何在阿里雲大數據平臺使用 MaxCompute MapReduce 。 WordCount 示例的詳細內容請參見:WordCount 示例 。
本文檔中所涉及的數據表說明如下:
1) 輸入數據表:wc_in 用於存儲 word 列表;
2) 輸出數據表:wc_out 用於存放通過 MR 程序處理後的結果集 。
數據表準備
創建數據表
參考快速開始-創建表 章節新建表 wc_in、wc_out.
CREATE TABLE wc_in (key STRING, value STRING) partitioned by (pt string );
CREATE TABLE wc_out (key STRING, cnt BIGINT) partitioned by (pt string );
插入示例數據
爲感知 OPEN MR 程序在大數據平臺上運行的結果,需向輸入表(wc_in的分區 pt=20170101)中插入示例數據,具體步驟如下:
1.導航至數據開發 單擊 新建>新建腳本文件 ;
2.在新建腳本文件彈出框中填寫各配置項,單擊提交 ;
3.在 MaxCompute 代碼編輯器中編寫 MaxCompute SQL 並運行代碼 。更多 SQL 語法請參見:SQL 概要 。
提供 MaxCompute SQL 腳本如下:
---創建系統dual
drop table if exists dual;
create table dual(id bigint); --如project中不存在此僞表,則需創建並初始化數據
---向系統僞表初始化數據
insert overwrite table dual select count(*)from dual;
---向輸入表 wc_in 的分區 pt=20170101 插入示例數據
insert overwrite table wc_in partition(pt=20170101) 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;
可以寫查詢語句來查看已經插入的示例數據,如下圖:
編寫 MapReduce 程序
用戶在使用 OPEN_MR 節點之前需在本地基於 MaxCompute MapReduce 編程框架的 WordCount 示例的代碼,然後編譯打成 jar 包,以資源的方式添加到大數據平臺 。涉及到 MR 的開發,可以參考官網 MaxCompute 的幫助,鏈接:大數據計算服務 MaxCompute 幫助文檔。本例代碼詳見WordCount.java附件。
添加資源
無論是在 MaxCompute console 還是阿里雲大數據平臺中運行,都需要在執行 jar 命令運行。因此,先打包生成 WordCount.jar(可以通過 Eclipse 的 Export 功能打包,也可以通過 ant 或其他工具生成),再上傳至 MaxCompute 資源 。
具體操作如下:
1.左側目錄選擇資源管理在目錄上右鍵單擊上傳資源 ;
2.在資源上傳彈出框中填寫各配置項,注意需要勾選上傳爲ODPS資源;
3.單擊提交 。
創建 OPEN_MR 節點
新建的 MaxCompute MapReduce 程序以資源方式上傳至 MaxCompute,現需新建 OPEN_MR 節點來調用執行,具體如下:
1.工作區的工具欄新建>新建任務 ;
2.在新建任務彈出框中填寫各配置項 ;
新建任務彈出框中配置項如下:
■ 任務名稱:wordcount 示例 。
■ 描述:wordcount 示例 。
3.單擊創建 。
4.在OPEN_MR 配置頁面進行配置 。
- MRJar 包:必選項,即本節點需要運行的主 jar 資源包 。
- 資源:必填項,本節點需要運行的主 jar 資源以及調用到的其他資源列表 。
- 輸入/輸出表:本示例中用到的是本項目的分區表,且分區值爲每日自動調度的業務日期,因此分區用變量(系統調度參數)表示 。
參數配置,由於本示例分區用系統參數表示,沒有用自定義變量,所以此處無需而外配置:
注意:更多參數變量使用請參考系統調度參數 。
5.單擊保存、提交,切到工作流的流程面板中,單擊測試運行,注意測試運行時由於示例表只有分區 pt=20170101 有數據,所以業務時間選擇 2017-01-01,這樣系統參數纔會把輸入/輸出表的分區替換成 20170101 。
生成測試任務後,等待運行成功 。
查看結果
查看測試運行結果的步驟如下:
1.打開wc_in插入示例數據腳本文件 ;
2.編寫查詢 MaxCompute SQL 代碼 ;
3.單擊運行。
查看測試結果和預期是否一致 。