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.在新建脚本文件弹出框中填写各配置项,单击提交 ;

阿里云openMR的 使用

3.在 MaxCompute 代码编辑器中编写 MaxCompute SQL 并运行代码 。更多 SQL 语法请参见:SQL 概要 。

阿里云openMR的 使用

提供 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;

可以写查询语句来查看已经插入的示例数据,如下图:

阿里云openMR的 使用

编写 MapReduce 程序

用户在使用 OPEN_MR 节点之前需在本地基于 MaxCompute MapReduce 编程框架的 WordCount 示例的代码,然后编译打成 jar 包,以资源的方式添加到大数据平台 。涉及到 MR 的开发,可以参考官网 MaxCompute 的帮助,链接:大数据计算服务 MaxCompute 帮助文档。本例代码详见WordCount.java附件。

添加资源

无论是在 MaxCompute console 还是阿里云大数据平台中运行,都需要在执行 jar 命令运行。因此,先打包生成 WordCount.jar(可以通过 Eclipse 的 Export 功能打包,也可以通过 ant 或其他工具生成),再上传至 MaxCompute 资源 。

具体操作如下:

1.左侧目录选择资源管理在目录上右键单击上传资源 ;

2.在资源上传弹出框中填写各配置项,注意需要勾选上传为ODPS资源;

阿里云openMR的 使用

3.单击提交 。

创建 OPEN_MR 节点

新建的 MaxCompute MapReduce 程序以资源方式上传至 MaxCompute,现需新建 OPEN_MR 节点来调用执行,具体如下:

1.工作区的工具栏新建>新建任务 ;

2.在新建任务弹出框中填写各配置项 ;

阿里云openMR的 使用

新建任务弹出框中配置项如下:

■ 任务名称:wordcount 示例 。

■ 描述:wordcount 示例 。

3.单击创建 。

4.在OPEN_MR 配置页面进行配置 。

阿里云openMR的 使用

  • MRJar 包:必选项,即本节点需要运行的主 jar 资源包 。
  • 资源:必填项,本节点需要运行的主 jar 资源以及调用到的其他资源列表 。
  • 输入/输出表:本示例中用到的是本项目的分区表,且分区值为每日自动调度的业务日期,因此分区用变量(系统调度参数)表示 。

参数配置,由于本示例分区用系统参数表示,没有用自定义变量,所以此处无需而外配置:

阿里云openMR的 使用

注意:更多参数变量使用请参考系统调度参数 。

5.单击保存提交,切到工作流的流程面板中,单击测试运行,注意测试运行时由于示例表只有分区 pt=20170101 有数据,所以业务时间选择 2017-01-01,这样系统参数才会把输入/输出表的分区替换成 20170101 。

阿里云openMR的 使用

阿里云openMR的 使用

生成测试任务后,等待运行成功 。

查看结果

查看测试运行结果的步骤如下:

1.打开wc_in插入示例数据脚本文件 ;

2.编写查询 MaxCompute SQL 代码 ;

3.单击运行

阿里云openMR的 使用

查看测试结果和预期是否一致 。

相关文章:

  • 2022-01-03
  • 2021-05-17
  • 2021-10-31
  • 2022-02-12
  • 2021-12-26
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
猜你喜欢
  • 2021-05-14
  • 2021-12-09
  • 2021-11-20
  • 2021-11-21
  • 2021-06-30
  • 2021-04-15
相关资源
相似解决方案