首页 > 代码库 > Pig系统分析(6)-从Physical Plan到MR Plan再到Hadoop Job
Pig系统分析(6)-从Physical Plan到MR Plan再到Hadoop Job
从Physical Plan到Map-Reduce Plan
注:因为我们重点关注的是Pig On Spark针对RDD的执行计划,所以Pig物理执行计划之后的后端参考意义不大,这些部分主要分析流程,忽略实现细节。
入口类MRCompiler,MRCompilier按照拓扑顺序遍历物理执行计划中的节点,将其转换为MROperator,每个MROperator都代表一个map-reduce job,整个完整的计划存储在MROperPlan类中。其中针对Load和Store操作会做以下特殊处理:
- Store必须是叶子节点,否则抛出异常
- Load新建一MROperator,加入到MROperPlan中。
以下是MROperPlan示意图:
从Map-Reduce Plan到Hadoop Job
JobControlCompiler将Map-Reduce Plan编译成Hadoop Job。
入口方法是:
public JobControl compile(MROperPlan plan, String grpName) throwsJobCreationException
compile方法针对每个MROperator又会调用getJob方法,生成Hadoop Job:
private Job getJob(MROperPlan plan, MapReduceOper mro, Configuration config,PigContext pigContext) throws JobCreationException。Pig实现的Mapper&Reducer继承结构如下:
其中:
- XXXWithPartitionIndex用于SkewedJoin。
- XXXWithComparator用于需要排序的udf函数。
- XXXCounter给数据计数,用于Rank操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。