阿里雲openMR的 使用

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.

  1. CREATE TABLE wc_in (key STRING, value STRING) partitioned by (pt string );
  2. 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 概要 。

SQL編碼

提供 MaxCompute SQL 腳本如下:

  1. ---創建系統dual
  2. drop table if exists dual;
  3. create table dual(id bigint); --如project中不存在此僞表,則需創建並初始化數據
  4. ---向系統僞表初始化數據
  5. insert overwrite table dual select count(*)from dual;
  6. ---向輸入表 wc_in 的分區 pt=20170101 插入示例數據
  7. insert overwrite table wc_in partition(pt=20170101) select * from (
  8. select 'project','val_pro' from dual
  9. union all
  10. select 'problem','val_pro' from dual
  11. union all
  12. select 'package','val_a' from dual
  13. union all
  14. select 'pad','val_a' from dual
  15. ) b;

可以寫查詢語句來查看已經插入的示例數據,如下圖:

SQL日誌

編寫 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.單擊運行

查看測試結果和預期是否一致 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章