本文以开发WordCount MapReduce作业为例,为您介绍如何通过MaxCompute Studio编写MapReduce程序及生成JAR包,并在MaxCompute客户端上运行MapReduce作业。
前提条件
请确认您已满足如下条件:
- 已安装并配置MaxCompute客户端。详情请参见安装并配置MaxCompute客户端。 
- 已安装MaxCompute Studio并连接MaxCompute项目。详情请参见安装MaxCompute Studio和管理项目连接。 
- 请确保您购买的产品规格非按量计费开发者版。 - 按量计费开发者版不支持处理MapReduce作业。 
- 已准备好源数据文件并保存至本地。 - 本文的示例数据文件名称为data.txt,内容为 - hello,odps,保存位置为MaxCompute客户端的- bin目录。
注意事项
如果您使用Maven开发MapReduce程序,可以从Maven库中搜索odps-sdk-mapred、odps-sdk-commons和odps-sdk-core获取所需版本的Java SDK(本文以0.36.4-public版本为例),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>操作流程
- 通过MaxCompute Studio编写、运行调试MapReduce程序。 
- 将编译成功的WordCount.java脚本打包为JAR包并上传至MaxCompute项目中。 
- 基于上传至MaxCompute项目的JAR包,使用 - jar命令运行MapReduce作业。
步骤一:开发MapReduce程序
- 创建MaxCompute Java Module。 - 启动IntelliJ IDEA,在顶部菜单栏,单击。 
- 在New Module对话框的左侧导航栏,选择MaxCompute Java。 
- 配置Module SDK,单击Next。 
- 填写Module name,例如mapreduce,单击Finish。 
 
- 编写并运行调试WordCount MapReduce程序。 - 在Project区域,右键单击Module的源码目录,选择。 
- 在Create new MaxCompute java class对话框,单击Driver,并填写Name,例如WordCount,按Enter键。  
- 在新建的WordCount.java脚本界面,编写WordCount MapReduce程序,实现统计单词个数功能。 - WordCount完整代码示例,请参见代码示例。 
- 在左侧导航栏的WordCount.java脚本上,单击右键,选择Run。 
- 在Run/Debug Configurations对话框,配置MaxCompute project为目标MaxCompute项目。  
- 单击OK,运行并调试WordCount.java脚本,确保脚本编译成功。 
 
步骤二:生成并上传MapReduce JAR包
- 在IntelliJ IDEA左侧导航栏的WordCount.java脚本上,单击右键,选择Deploy to server...。 
- 在Package a jar and submit resource对话框,配置打包参数并单击OK,完成打包及上传操作。 
步骤三:运行MapReduce作业
- 登录MaxCompute客户端或在MaxCompute Studio中打开MaxCompute客户端。 - MaxCompute Studio中集成了MaxCompute客户端,您可以在MaxCompute Studio中直接运行MaxCompute客户端。更多信息,请参见集成MaxCompute客户端。 
- 创建输入表和输出表。 - 输入表中的数据为MapReduce作业的源数据,输出表中存储MapReduce作业对输入表中的数据进行处理后的结果。命令示例如下。 - --创建输入表wc_in。 create table wc_in (key STRING, value STRING); --创建输出表wc_out。 create table wc_out (key STRING, cnt BIGINT);- 更多建表语法信息,请参见创建表。 
- 使用Tunnel Upload命令向表wc_in中插入数据。 
- 使用 - 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命令信息,请参见语法介绍。
- 执行如下命令查看wc_out表的写入结果。 - select * from wc_out;- 返回结果如下。 - +------------+------------+ | key | cnt | +------------+------------+ | hello | 1 | | odps | 1 | +------------+------------+
