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

前提条件

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

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

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

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

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

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

    本文的示例数据文件名称为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>

步骤一:开发MapReduce程序

通过MaxCompute Studio编写、运行调试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完整代码示例,请参见 WordCount示例
    4. 在左侧导航栏的WordCount.java脚本上,单击右键,选择Run
    5. Run/Debug Configurations对话框,配置MaxCompute project为目标MaxCompute项目。
      配置项目信息
    6. 单击OK,运行并调试WordCount.java脚本,确保脚本编译成功。

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

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

  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作业

基于上传至MaxCompute项目的JAR包,使用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          |
    +------------+------------+