开发者社区 问答 正文

MaxCompute用户指南:MapReduce:示例程序:Sleep示例



测试准备


  1. 准备好测试程序的 Jar 包,假设名字为 mapreduce-examples.jar,本地存放路径为 data\resources。

  2. 准备好 SleepJob 的测试资源。add jar data\resources\mapreduce-examples.jar -f;


测试步骤


在 odpscmd 中执行 Sleep,如下所示:
  1.   jar -resources mapreduce-examples.jar -classpath data\resources\mapreduce-examples.jar
  2.   com.aliyun.odps.mapred.open.example.Sleep 10;
  3.   jar -resources mapreduce-examples.jar -classpath data\resources\mapreduce-examples.jar
  4.   com.aliyun.odps.mapred.open.example.Sleep 100;


预期结果


作业成功结束后,对比不同 Sleep 时长的运行时间,可以看到效果。

代码示例

  1. package com.aliyun.odps.mapred.open.example;
  2. import java.io.IOException;
  3. import com.aliyun.odps.mapred.JobClient;
  4. import com.aliyun.odps.mapred.MapperBase;
  5. import com.aliyun.odps.mapred.conf.JobConf;
  6. public class Sleep {
  7.   private static final String SLEEP_SECS = "sleep.secs";
  8.   public static class MapperClass extends MapperBase {
  9.     @Override
  10.     public void setup(TaskContext context) throws IOException {
  11.       try {
  12.         Thread.sleep(context.getJobConf().getInt(SLEEP_SECS, 1) * 1000);
  13.       } catch (InterruptedException e) {
  14.         throw new RuntimeException(e);
  15.       }
  16.     }
  17.   }
  18.   public static void main(String[] args) throws Exception {
  19.     if (args.length != 1) {
  20.       System.err.println("Usage: Sleep <sleep_secs>");
  21.       System.exit(-1);
  22.     }
  23.     JobConf job = new JobConf();
  24.     job.setMapperClass(MapperClass.class);
  25.     job.setNumReduceTasks(0);
  26.     job.setNumMapTasks(1);
  27.     job.set(SLEEP_SECS, args[0]);
  28.     JobClient.runJob(job);
  29.   }
  30. }

展开
收起
行者武松 2017-10-23 17:47:26 2190 分享
分享
版权
举报
阿里云 AI 助理回答

这段描述和代码示例是关于如何在阿里云MaxCompute(原名ODPS)上使用自定义的MapReduce程序进行测试的。MaxCompute是一个大规模数据处理平台,支持SQL查询以及MapReduce编程模型等。

测试准备

  1. 准备测试程序的Jar包:你需要有一个包含自定义MapReduce任务的Java程序,并将其打包成jar文件。在这个例子中,这个jar包名为mapreduce-examples.jar,存储在本地路径data\resources下。
  2. 资源上传:在执行MapReduce作业前,需要确保你的jar包和任何依赖资源已经上传到MaxCompute项目空间中。虽然示例命令使用了add jar,但实际操作中,你可能需要通过MaxCompute客户端工具、DataWorks或者API将这些资源上传至指定的项目空间内。

测试步骤

  • 使用odpscmd进入MaxCompute的命令行交互环境。
  • 执行SleepJob,通过jar命令指定资源和类路径来运行MapReduce作业。这里指定了两次不同的睡眠时长(10秒和100秒),用于观察不同配置下的作业运行时间差异。

预期结果

  • 作业成功执行后,你可以查看每个作业的完成时间,对比不同Sleep时长对作业总运行时间的影响。

代码示例解析

  • Sleep类中定义了一个Mapper类MapperClass,该Mapper在每次任务启动时会根据配置的参数sleep.secs休眠相应秒数。
  • main方法是作业的入口点,它设置了作业的配置,包括Mapper类、不使用Reducer(设置setNumReduceTasks(0))、只启动一个Map任务(setNumMapTasks(1)),并从命令行参数读取休眠时间。

注意事项

  • 在实际操作中,直接在odpscmd中使用jar命令可能并不适用,因为通常你需要先上传jar包到MaxCompute项目空间,然后通过创建和提交Job的方式运行,而不是直接在命令行里用jar命令执行。
  • 确保你的MaxCompute账户有足够的权限执行上述操作,包括上传资源、创建和运行作业。
  • 对于资源上传和作业提交,可以参考MaxCompute的官方文档或使用DataWorks这样的集成开发环境,以获得更直观和便捷的操作体验。
有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答