MaxCompute提供MapReduce编程接口。您可以通过创建ODPS MR类型节点并提交任务调度,使用MapReduce Java API编写MapReduce程序来处理MaxCompute中的数据。

前提条件

您需要上传并提交、发布使用的资源后,再创建ODPS MR节点。

ODPS MR类型节点的编辑和使用方法,请参见WordCount示例

操作步骤

  1. 进入数据开发页面。
    1. 登录DataWorks控制台
    2. 在左侧导航栏,单击工作空间列表
    3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
  2. 创建JAR资源。
    1. 鼠标悬停至新建图标,单击MaxCompute > 资源 > JAR
      您也可以找到相应的业务流程,右键单击MaxCompute,选择新建 > 资源 > JAR
    2. 新建资源对话框中,输入资源名称,并选择目标文件夹
      说明
      • 如果绑定多个实例,则需要选择MaxCompute引擎实例
      • 如果该JAR包已经在MaxCompute(ODPS)客户端上传过,则需要取消勾选上传为ODPS资源,否则上传会报错。
      • 资源名称无需与上传的文件名保持一致。
      • 资源名称命名规范:1~128个字符,字母、数字、下划线、小数点,大小写不敏感,JAR资源的后缀为.jar,Python资源的后缀为.py
    3. 单击点击上传,在本地选择相应文件后,单击打开
      本文以mapreduce_example.jar为例。
    4. 新建资源对话框中,单击确定
    5. 单击工具栏中的保存提交图标,保存并提交资源至调度开发服务器端。
  3. 创建ODPS MR节点。
    1. 鼠标悬停至新建图标,单击MaxCompute > ODPS MR
      您也可以找到相应的业务流程,右键单击MaxCompute,选择新建 > ODPS MR
    2. 新建节点对话框中,输入节点名称,并选择目标文件夹
      说明 节点名称必须是大小写字母、中文、数字、下划线(_)和小数点(.),且不能超过128个字符。
    3. 单击提交
  4. 在节点的编辑页面输入代码,示例如下。
    --创建输入表。
    CREATE TABLE if not exists jingyan_wc_in (key STRING, value STRING);
    --创建输出表。
    CREATE TABLE if not exists jingyan_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 jingyan_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 jingyan_wc_in jingyan_wc_out
    代码说明如下:
    • --@resource_reference:您可以右键单击资源名称,选择引用资源,即可自动产生该条语句。
    • -resources:引用到的JAR资源文件名。
    • -classpath:JAR包的路径。由于已经引用了资源,此处路径统一为./下的JAR包。
    • com.aliyun.odps.mapred.open.example.WordCount:执行过程调用JAR中的主类,需要和JAR中的主类名称保持一致。
    • jingyan_wc_in:MR的输入表名称,已在上述代码中提前创建。
    • jingyan_wc_out:MR的输出表名称,已在上述代码中提前创建。
    • 一个MR调用多个JAR资源时,classpath写法为-classpath ./xxxx1.jar,./xxxx2.jar,即两个路径之间用英文逗号(,)分隔。
  5. 单击节点编辑区域右侧的调度配置,配置节点的调度属性,详情请参见基础属性
  6. 保存并提交节点。
    注意 您需要设置节点的重跑属性依赖的上游节点,才可以提交节点。
    1. 单击工具栏中的保存图标,保存节点。
    2. 单击工具栏中的提交图标。
    3. 提交新版本对话框中,输入变更描述
    4. 单击确认
    如果您使用的是标准模式的工作空间,提交成功后,请单击右上角的发布。具体操作请参见发布任务
  7. 测试节点,详情请参见周期任务