开发者社区> 问答> 正文

MaxCompute用户指南:MapReduce:功能介绍:作业提交



MaxCompute 客户端提供一个 Jar 命令用于运行 MapReduce 作业,具体语法如下所示:

  1.     Usage: jar [<GENERIC_OPTIONS>] <MAIN_CLASS> [ARGS]
  2.         -conf <configuration_file>         Specify an application configuration file
  3.         -resources <resource_name_list>    file\table resources used in mapper or reducer, seperate by comma
  4.         -classpath <local_file_list>       classpaths used to run mainClass
  5.         -D <name>=<value>                  Property value pair, which will be used to run mainClass
  6.         -l                                 Run job in local mode
  7. For example:
  8.     jar -conf \home\admin\myconf -resources a.txt,example.jar -classpath ..\lib\example.jar:.\other_lib.jar -D java.library.path=.\native -Xmx512M mycompany.WordCount -m 10 -r 10 in out;

其中 <GENERIC_OPTIONS> 包括(均为可选参数):

  • -conf < configuration file >:指定 JobConf 配置文件。

  • -resources < resource_name_list >:MapReduce 作业运行时使用的资源声明。一般情况下,resource_name_list 中需要指定 Map/Reduce 函数所在的资源名称。

    注意
    如果您在 Map/Reduce 函数中读取了其他 MaxCompute 资源,那么,这些资源名称也需要被添加到 resource_name_list 中。
    资源之间使用逗号分隔,使用跨项目空间使用资源时,需要前面加上PROJECT/resources/,例如:-resources otherproject/resources/resfile。
    有关如何在 Map/Reduce 函数中读取资源的示例,请参见 资源使用示例

  • -classpath < local_file_list >:本地执行时的 classpath,主要用于指定 main 函数所在的 Jar 包的本地路径(包含相对路径和绝对路径)。
      包名之间使用系统默认的文件分割符作分割。通常情况下:Windows 系统是分号,Linux 系统是逗号,如果您是在云端使用 MR 任务,Jar 包之间的分隔是逗号。

    大多数情况下,您更习惯于将 main 函数与 Map/Reduce 函数编写在一个包中,例如: WordCount 代码示例,因此,在执行示例程序时,-resources及 -classpath 的参数中都出现了 mapreduce-examples.jar。但二者意义不同:-resources 引用的是Map/Reduce 函数,运行于分布式环境中。而 -classpath 引用的是 main 函数,运行于本地,指定的 Jar包路径也是本地文件路径。

  • -D  < prop_name >=< prop_value >:本地执行时,< mainClass > 的 Java 属性,可以定义多个。

  • -l:以本地模式执行 MapReduce 作业,主要用于程序调试。

您可以通过 -conf 选项指定 JobConf 配置文件,该文件可以影响 SDK 中 JobConf 的设置。
JobConf 配置文件的示例如下:
  1.     <configuration>
  2.        <property>
  3.           <name>import.filename</name>
  4.           <value>resource.txt</value>
  5.        </property>
  6.     </configuration>

在上述示例中,通过 JobConf 配置文件定义一个名为 import.filename 的变量,该变量的值为 resource.txt。
您可以在 MapReduce 程序中通过 JobConf 接口获取该变量的值。您通过 SDK 中 JobConf 接口可以达到相同的目的,详情请参见 资源使用示例
示例如下:
  1.     add jar data\mapreduce-examples.jar;
  2.     jar -resources mapreduce-examples.jar -classpath data\mapreduce-examples.jar
  3.         org.alidata.odps.mr.examples.WordCount wc_in wc_out;
  4.     add file data\src.txt;
  5.     add jar data\mapreduce-examples.jar;
  6.     jar -resources src.txt,mapreduce-examples.jar -classpath data\mapreduce-examples.jar
  7.         org.alidata.odps.mr.examples.WordCount wc_in wc_out;
  8.     add file data\a.txt;
  9.     add table wc_in as test_table;
  10.     add jar data\work.jar;
  11.     jar -conf odps-mapred.xml -resources a.txt,test_table,work.jar
  12.         -classpath data\work.jar:otherlib.jar
  13.         -D import.filename=resource.txt org.alidata.odps.mr.examples.WordCount args;

展开
收起
行者武松 2017-10-23 17:39:22 2023 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
Data+AI时代大数据平台应该如何建设 立即下载
大数据AI一体化的解读 立即下载
极氪大数据 Serverless 应用实践 立即下载