ODPS MapReduce基础
执行MapReduce Job(jar)命令
jar -libjars [resoucre_name] -classpath [local_package_path] [MainClass] [arguments1] [arguments2]...;
resoucre_name
指发布到odps上的资源文件,即MapReduce任务jar包名称,如wordCount.jar
local_package_path
指MapReduce任务jar包本地路径,如~/demos/deploy/wordCount/wordCount.jar
MainClass
指MapReduce任务main函数所在的类名,如study.odps.demo.mapreduce.WordCount
[arguments1] [arguments2]...
即传入main函数参数,无参数可不填
e.g 本地启动MR Job命令
jar -libjars wordCount.jar -classpath ~/demos/deploy/wordCount/wordCount.jar study.odps.demo.mapreduce.WordCount
需要注意:
- 与MR Job相关的资源必须上传至ODPS,如与MR任务相关只有wordCount.jar
这个文件,未引用其他自定义jar
或者第三方jar
,那么将wordCount.jar
这个文件添加至ODPS资源中即可。添加资源文件可以使用IDE插件添加,或者使用add
命令添加,如:
add jar ~/demos/deploy/wordCount/wordCount.jar -f;
- 如果构建Map task或Reduce task引用了其他自定义jar
或者第三方jar
,依赖的资源需添加至ODPS,并且需以-resources
方式指定依赖的资源可参考ODPS MR、ODPS MapReduce WordCount、作业提交
e.g 线上(Dataworks)启动MR Job
jar -resources argparse4j.jar,mapreduce-examples.jar,common.jar -classpath mapreduce-examples.jar,argparse4j.jar
study.odps.mapreduce.demos.WordCount wc_in wc_out
上述例子引用了三个资源包:argparse4j.jar
、mapreduce-examples.jar
、common.jar,主类位于
mapreduce-examples.jar,但主类的入口函数使用了
argparse4j.jar解析参数,所以
classpath需要引用
mapreduce-examples.jar,
argparse4j.jar两个jar包,而
common.jar在MapReduce Task里使用到,但在主类并未使用,因此
classpath无需引入
common.jar`。
- 注意每个资源文件以
,
符号分割