快速入门

本文以开发WordCount MapReduce作业为例,为您介绍如何通过MaxCompute Studio编写MapReduce程序及生成JAR包,并在MaxCompute客户端上运行MapReduce作业。

前提条件

请确认您已满足如下条件:

  • 已安装并配置MaxCompute客户端。

    更多安装并配置MaxCompute客户端操作,请参见安装并配置MaxCompute客户端

  • 已安装MaxCompute Studio并连接MaxCompute项目。

    更多安装MaxCompute Studio及连接MaxCompute项目操作,请参见安装MaxCompute Studio管理项目连接

  • 请确保您购买的产品规格非按量计费开发者版

    按量计费开发者版不支持处理MapReduce作业。

  • 已准备好源数据文件并保存至本地。

    本文的示例数据文件名称为data.txt,内容为hello,odps,保存位置为MaxCompute客户端的bin目录。

注意事项

如果您使用Maven开发MapReduce程序,可以从Maven库中搜索odps-sdk-mapredodps-sdk-commonsodps-sdk-core获取不同版本的Java SDK,pom.xml文件需要配置的依赖信息如下。

<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-mapred</artifactId>
    <version>0.36.4-public</version>
</dependency>
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-commons</artifactId>
    <version>0.36.4-public</version>
</dependency>
<dependency>
    <groupId>com.aliyun.odps</groupId>
    <artifactId>odps-sdk-core</artifactId>
    <version>0.36.4-public</version>
</dependency>

操作流程

  1. 步骤一:开发MapReduce程序

    通过MaxCompute Studio编写、运行调试MapReduce程序。

  2. 步骤二:生成并上传MapReduce JAR包

    将编译成功的WordCount.java脚本打包为JAR包并上传至MaxCompute项目中。

  3. 步骤三:运行MapReduce作业

    基于上传至MaxCompute项目的JAR包,使用jar命令运行MapReduce作业。

步骤一:开发MapReduce程序

  1. 创建MaxCompute Java Module。

    1. 启动IntelliJ IDEA,在顶部菜单栏,单击File > New > Module...

    2. New Module对话框的左侧导航栏,单击MaxCompute Java

    3. 配置Module SDK,单击Next

    4. 填写Module name,例如mapreduce,单击Finish

  2. 编写并运行调试WordCount MapReduce程序。

    1. Project区域,右键单击Module的源码目录src > main > java,选择new > MaxCompute Java

    2. Create new MaxCompute java class对话框,单击Driver,并填写Name,例如WordCount,按Enter键。

      新建Java class
    3. 在新建的WordCount.java脚本界面,编写WordCount MapReduce程序,实现统计单词个数功能。

      WordCount完整代码示例,请参见代码示例

    4. 在左侧导航栏的WordCount.java脚本上,单击右键,选择Run

    5. Run/Debug Configurations对话框,配置MaxCompute project为目标MaxCompute项目。

      配置项目信息
    6. 单击OK,运行并调试WordCount.java脚本,确保脚本编译成功。

步骤二:生成并上传MapReduce JAR包

  1. 在IntelliJ IDEA左侧导航栏的WordCount.java脚本上,单击右键,选择Deploy to server...

  2. Package a jar and submit resource对话框,配置打包参数并单击OK,完成打包及上传操作。

    打包

    详细参数说明,请参见操作步骤

    说明

    如果您使用Maven开发MapReduce程序,打包为JAR包后,需要通过MaxCompute客户端手动将JAR包上传至MaxCompute项目。更多上传JAR包操作,请参见添加资源。命令示例如下。

    add jar mapreduce-1.0-SNAPSHOT.jar;

步骤三:运行MapReduce作业

  1. 登录MaxCompute客户端或在MaxCompute Studio中打开MaxCompute客户端。

    MaxCompute Studio中集成了MaxCompute客户端,您可以在MaxCompute Studio中直接运行MaxCompute客户端。更多信息,请参见集成MaxCompute客户端

  2. 创建输入表和输出表。

    输入表中的数据为MapReduce作业的源数据,输出表中存储MapReduce作业对输入表中的数据进行处理后的结果。命令示例如下。

    --创建输入表wc_in。
    create table wc_in (key STRING, value STRING);
    --创建输出表wc_out。
    create table wc_out (key STRING, cnt BIGINT);

    更多建表语法信息,请参见创建表

  3. 使用Tunnel Upload命令向表wc_in中插入数据。

    命令示例如下。

    tunnel upload data.txt wc_in;

    更多Tunnel信息,请参见Tunnel

  4. 使用jar命令调用生成的JAR包,运行MapReduce作业。

    命令示例如下。

    jar -resources mapreduce-1.0-SNAPSHOT.jar -classpath mapreduce-1.0-SNAPSHOT.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out;
    • -resources mapreduce-1.0-SNAPSHOT.jar-resources指定MapReduce作业调用的资源名称,即步骤二中上传的JAR包mapreduce-1.0-SNAPSHOT.jar。

    • -classpath mapreduce-1.0-SNAPSHOT.jar -classpath指定MainClass所在JAR包的本地路径。

    • com.aliyun.odps.mapred.open.example.WordCount:MapReduce程序中定义的MainClass。

    • wc_in wc_out:输入表和输出表。

    更多jar命令信息,请参见语法介绍

  5. 执行如下命令查看wc_out表的写入结果。

    select * from wc_out;

    返回结果如下。

    +------------+------------+
    | key        | cnt        |
    +------------+------------+
    | hello      | 1          |
    | odps       | 1          |
    +------------+------------+