全部产品
大数据开发套件

OPEN MR

更新时间:2017-08-21 13:41:06   分享:   

OPEN MR 可以帮助您更加安全、便捷地使用 MaxCompute 的 MR 功能,实现更复杂的计算逻辑。

本文档主要讲述 OPEN MR 的开发方法,帮您更好地开发复杂的 MR 模型,您只需关注 Mapper/Reducer 部分的逻辑,作业提交部分逻辑会由平台统一完成。一些日常调度涉及到的变量可以在创建 OPEN MR 节点时,在配置中通过参数的方式来指定。ODPS_MR 任务类型已经开放,建议优先使用 ODPS_MR

注意

OPEN_MR 不支持引用资源表,不支持多个 Reduce 等。

应用场景和数据说明

本示例将以经典的 WordCount 示例来介绍如何在阿里云大数据平台使用 MaxCompute MapReduce。 WordCount 示例的详细内容请参见 WordCount 示例

本示例涉及的数据表说明如下:

  • 输入数据表:wc_in 用于存储 word 列表。

  • 输出数据表: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 概要

    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;
  4. 编写查询语句查看已插入的示例数据,如下图所示:

    SQL日志

编写 MapReduce 程序

您在使用 OPEN_MR 节点前,需在本地基于 MaxCompute MapReduce 编程框架的 WordCount 示例代码,根据自身需求进行编写,然后打成 Jar 包,以资源的方式添加到大数据平台。MR 开发的相关内容请参见 大数据计算服务 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. 单击 运行

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

本文导读目录
本文导读目录
以上内容是否对您有帮助?