通过SDK提交MapReduce作业
来源:互联网 发布:php使用curl下载文件 编辑:程序博客网 时间:2024/06/13 02:01
通过SDK提交MR作业的步骤如下:
步骤一:
编写MR程序,导出jar包,jar包可以不包含main方法(main方法是在本地执行)
步骤二:
上传jar包及所需的资源
(1) 通过console上传jar包到server端: add jar xxx.jar
(2)也可以通过SDK写程序上传,参考相关方法:com.aliyun.odps.ODPS.resources().create(xxx,xxx)
步骤三:
对main方法进行改进 ,主要包括两部分:(1)设置账户信息(accessId/accessKey/endpoint),充当console/conf/odps_conf.ini中的配置功能
(2)设置MR中使用的资源,充当jar -resources xxx1.jar,xxx2.jar的功能
通过方法job.setResources("test13.jar");设置
注:本地用户Mapper类和Reducer类方法是空的(本地并不会执行这份代码),存在的目的是保证main方法编译通过
package com.aliyun.odps.examples.mr;import com.aliyun.odps.Odps;import com.aliyun.odps.account.Account;import com.aliyun.odps.account.AliyunAccount;import com.aliyun.odps.data.TableInfo;import com.aliyun.odps.mapred.JobClient;import com.aliyun.odps.mapred.MapperBase;import com.aliyun.odps.mapred.ReducerBase;import com.aliyun.odps.mapred.RunningJob;import com.aliyun.odps.mapred.conf.JobConf;import com.aliyun.odps.mapred.conf.SessionState;import com.aliyun.odps.mapred.utils.InputUtils;import com.aliyun.odps.mapred.utils.OutputUtils;import com.aliyun.odps.mapred.utils.SchemaUtils;/* * 该示例展示了MapReduce程序中的基本结构 * */public class WordCount { public static class TokenizerMapper extends MapperBase { } /** * A combiner class that combines map output by sum them. */ public static class SumCombiner extends ReducerBase { } /** * A reducer class that just emits the sum of the input values. */ public static class SumReducer extends ReducerBase { } public static void main(String[] args) throws Exception { // /////////////额外添加的代码////////// String endpoint = "your_endpoint"; String accessId = "your_access_id"; String accessKey = "your_access_key"; String project = "your_project"; Account account = new AliyunAccount(accessId, accessKey); Odps odps = new Odps(account); odps.setDefaultProject(project); odps.setEndpoint(endpoint); SessionState.get().setOdps(odps); SessionState.get().setLocalRun(false); // /////////////////////////////// JobConf job = new JobConf(); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(SumCombiner.class); job.setReducerClass(SumReducer.class); // /////////////额外添加的代码////////// // 资源名称列表,多个资源用逗号分隔 job.setResources("test13.jar"); // ////////////////////////////////// job.setMapOutputKeySchema(SchemaUtils.fromString("word:string")); job.setMapOutputValueSchema(SchemaUtils.fromString("count:bigint")); InputUtils.addTable(TableInfo.builder().tableName("wc_in").build(), job); OutputUtils.addTable(TableInfo.builder().tableName("wc_out").build(), job); RunningJob rj = JobClient.runJob(job); rj.waitForCompletion(); }}
原文链接:
http://click.aliyun.com/m/14033/
0 0
- 通过SDK提交MapReduce作业
- MapReduce 提交作业常见问题
- MapReduce作业提交过程
- MapReduce提交作业常见问题
- MapReduce提交作业常见问题
- MapReduce作业提交流程
- MapReduce作业提交源码分析
- mapreduce(一):eclipse直接提交mapreduce作业
- Hadoop MapReduce之作业提交(客户端)
- Hadoop MapReduce之作业提交(服务端)
- hadoop作业提交和MapReduce基础分析
- Hadoop:MapReduce作业配置与提交
- 通过java api提交自定义hadoop 作业
- MapReduce调度与执行原理之作业提交
- (大数据之MapReduce) Hadoop作业提交分析(四)
- 基于Oozie实现MapReduce作业的自动提交功能
- Hadoop MapReduce作业提交与初始化过程分析
- Intellij IDEA远程向hadoop集群提交mapreduce作业
- EL表达式 与ONGL表达式
- 平摊分析(Amortized analysis)
- WebApi初学(一)
- 配置管理之PackageProvider接口
- Linux 北大网关断网重连
- 通过SDK提交MapReduce作业
- Xilinx SDK 初学之--API函数笔记(timer相关函数)
- 深入浅出MyBatis技术原理和实战(四)
- yii2项目实战-restful api之授权验证
- Java时间处理(...年前、...天前、...小时前)
- logback配置详解
- struts的那些事儿
- caffe中各个层解析
- Jersey用户指南(1)