MaxCompute MapReduce

发布时间:2019-04-05  栏目:科技中心  评论:0 Comments

摘要:
用户在DataWorks上执行MapReduce作业的时候,文件大于10M的JAR和资源文件不能上传到Dataworks,导致无法使用调度去定期执行MapReduce作业。
解决方案: jar -resources test_mr.

安全沙箱

第一步:大于10M的resources通过MaxCompute CLI客户端上传,

详细的SDK的文档,可以在Maven里下载。这是下载地址

​本文为云栖社区原创内容,未经允许不得转载。返回搜狐,查看更多

InputUtils.addTable(TableInfo table, JobConf conf)设置了输入的表。

add jar C:\test_mr\test_mr.jar -f;//添加资源

沙箱是MaxCompute的一套安全体系,使得在MaxCompute上运行的作业无法获得其他用户的信息,也无法获得系统的一些信息。主要包括以下几点,完整的列表可以参考文档

美高梅娱乐场网站 1

Map/Reduce

责任编辑:

资源表和文件可以让一些小表/小文件可以方便被读取。鉴于读取数据的限制需要小于64次,一般是在setup里读取后缓存起来,具体的例子可以参考这里

解决方案:

输入阶段:根据工作量,生成几个Mapper,把这些表的数据分配给这些Mapper。每个Mapper分配到表里的一部分记录。

list resources;//查看资源

`jar -resources mapreduce-examples.jar -classpath
mapreduce-examples.jar

客户端下载地址:https://help.aliyun.com/document\_detail/27971.html

Map阶段:每个Mapper针对每条数据,解析里面的字符串,用空格切开字符串,得到一组单词。针对其中每个单词,写一条记录

通过上述方法,我们可以在Dataworks上跑大于10M的MR作业。

线上运行

原标题:通过简单瘦身,解决Dataworks 10M文件限制问题

setReducerClass(Class theClass)设置Reducer使用的Java类。

用户在DataWorks上执行MapReduce作业的时候,文件大于10M的JAR和资源文件不能上传到Dataworks,导致无法使用调度去定期执行MapReduce作业。

客户端发起add jar/add
file等资源操作,把在客户端的机器(比如我测试的时候是从我的笔记本)上,运行任务涉及的资源文件传到服务器上。这样后面运行任务的时候,服务器上才能有对应的代码和文件可以用。如果以前已经传过了,这一步可以省略。

作者:隐林

另外后续还需要用到客户端,可以参考文档安装。

第三步:瘦身Jar,因为Dataworks执行MR作业的时候,一定要本地执行,所以保留个main就可以;

在一个Mapper里,只会读一张表,不同的表的数据会在不同的Mapper
worker上运行,所以可以用示例里的这个方法先获得这个Mapper读的是什么表。

客户端配置AK、EndPoint:https://help.aliyun.com/document\_detail/27804.html

在JAVA代码里直接调用MapReduce作业,可以通过设置SessionState.setLocalRun(false); 实现,具体可以参考这里

第二步:目前通过MaxCompute
CLI上传的资源,在Dataworks左侧资源列表是找不到的,只能通过list
resources查看确认资源;

具体的插件的安装方法步骤可以参考文档,本文不在赘言。

如果Reduce后面还需要做进一步的Reduce计算,可以用拓展MapReduce模型(简称MRR)。MRR其实就是Reduce阶段结束后,不直接输出结果,而是再次经过Shuffle后接另外一个Reduce。

前言

美高梅娱乐场网站 2

在odpscmd里执行

add jar /JarPath/mapreduce-examples.jar -f;

无法起多线程/多进程

odpscmd
-e/-f:odpscmd的-e命令可以在shell脚本里直接运行一个odpscmd里的命令,所以可以在shell脚本里运行odpscmd
-e ‘jar -resources
xxxxxx’这样的命令,在shell脚本里调用MapReduce作业。一个完整的例子是

这里的/JarPath/mapreduce-examples.jar的路径要替换成本地实际的文件路径。这个命令能把本地的jar包传到服务器上,-f是如果已经有同名的jar包就覆盖,实际使用中对于是报错还是覆盖需要谨慎考虑。

如果在odpscmd的配置文件里已经配置好了,那只需要写-e的部分。

JobConfig

其他

数据输出

美高梅娱乐场网站,    …

Reduce阶段:Reducer拿前面已经排序好的输入,相同的单词的所有输入进入同一个Redue循环,在循环里,做个数的累加。

setOutputKeySortOrder(JobConf.SortOrder[] order)设置 Key
排序列的顺序。

说起MapReduce就少不了WordCount,我特别喜欢文档里的这个图片。

wc_in wc_out是传给main方法的参数,通过解析main方法传入参数String[]
args获得这个参数

setMapOutputValueSchema(Column[] schema)设置 Mapper 输出到 Reducer 的
Value 行属性。和上个设置一起定义了Mapper到Reducer的数据格式。

做数据准备,包括创建表和使用Tunnel命令行工具导入数据

快速开始

根据com.aliyun.odps.mapred.open.example.WordCount,找到main方法所在类的路径和名字

setSplitSize(long size)通过调整分片大小来调整Mapper个数,单位
MB,默认256。Mapper个数不通过void setNumMapTasks(int n)设置。

其他限制

}

setOutputKeySortColumns(String[] cols)设置 Mapper 输出到 Reducer 的
Key 排序列。

    map();

产品限制

setMapOutputKeySchema(Column[] schema)设置 Mapper 输出到 Reducer 的
Key 行属性。

步骤为

com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out`

无法访问外部数据源(不能当爬虫,不能读RDS等)

后续为了更加清楚地说明问题,我会尽可能地在客户端上操作,而不用IDEA里已经集成的方法。

读表

在odpscmd里执行add jar命令:

任务提交

资源表/文件

运行环境

以WordCount为例,文档可以参考这里

留下评论

网站地图xml地图