public class Pipeline extends Object
在传统的MapReduce计算模型上做了扩展,可以在一轮Map/Reduce运算之后再加上一个或多个Reduce,
即Map-Reduce-Reduce-Reduce...。一个Pipeline由多个节点顺序组成,每个节点是Mapper或Reducer
和普通的MapReduce一样,使用Job
定义并提交作业,包括输入输入表的设置等。
除此之外,还需要定义一个Pipeline对象(使用Pipeline.builder()方法),添加一个Mapper以及一个
或多个Reducer。
任何一个Mapper或处于中间状态的Reducer都需要显式定义输出结果的Key和Value的Schema定义
(定义方式类似于JobConf.setMapOutputKeySchema(Column[])
)。同时还可以设置
OutputKeySortColumns、PartitionColumns等。
代码示例如下:
Job job = new Job(); Pipeline pipeline = Pipeline.builder() .addMapper(TokenizerMapper.class) .setOutputKeySchema( new Column[] { new Column("word", OdpsType.STRING) }) .setOutputValueSchema( new Column[] { new Column("count", OdpsType.BIGINT) }) .addReducer(SumReducer.class) .setOutputKeySchema( new Column[] { new Column("count", OdpsType.BIGINT) }) .setOutputValueSchema( new Column[] { new Column("word", OdpsType.STRING), new Column("count", OdpsType.BIGINT) }) .addReducer(IdentityReducer.class).createPipeline(); job.setPipeline(pipeline); job.addInput(...) job.addOutput(...) job.submit();
Modifier and Type | Class and Description |
---|---|
static class |
Pipeline.Builder
Pipeline Builder对象,可以用它来创建一个Pipeline
|
static class |
Pipeline.MapNode
Mapper节点
|
static class |
Pipeline.ReduceNode
Reducer节点
|
static class |
Pipeline.TransformNode
Pipeline的节点,是一个Mapper或者Reducer
|
Constructor and Description |
---|
Pipeline(List<Pipeline.TransformNode> nodes)
定义一个Pipeline对象
|
Modifier and Type | Method and Description |
---|---|
static Pipeline.Builder |
builder()
创建一个Pipeline Builder
|
static Pipeline |
fromJobConf(JobConf conf)
从JobConf中获得Pipeline对象。如果JobConf中没有相应的配置,返回null
|
Pipeline.TransformNode |
getFirstNode()
获取Pipeline的第一个节点
|
Pipeline.TransformNode |
getLastNode()
获取Pipeline的最后一个节点
|
Pipeline.TransformNode |
getNode(int index)
获取Pipeline中的指定节点
|
int |
getNodeNum()
获取Pipeline的节点数
|
List<Pipeline.TransformNode> |
getNodes()
获取Pipeline的节点列表
|
static void |
toJobConf(JobConf conf,
Pipeline pipeline)
将Pipeline对象序列化到JobConf中:
|
public Pipeline(List<Pipeline.TransformNode> nodes)
nodes
- Pipeline节点列表public Pipeline.TransformNode getNode(int index)
index
- 节点序号(从0开始)public Pipeline.TransformNode getFirstNode()
public Pipeline.TransformNode getLastNode()
public int getNodeNum()
public List<Pipeline.TransformNode> getNodes()
public static Pipeline.Builder builder()
public static void toJobConf(JobConf conf, Pipeline pipeline)
odps.pipeline.list=map:com.example.Map1,reduce:com.example.Reduce1 odps.pipeline.0.output.key.schema=count:int odps.pipeline.0.output.value.schema=word:string ... odps.pipeline.n.partitioner.class=com.example.Partitioner
job
- JobConf对象Copyright © 2017 Alibaba Cloud Computing. All rights reserved.