您的位置:首页 > 其它

Hive查询在MapReduce上的执行过程

2014-02-27 18:46 387 查看
Hive查询首先被转换成物理查询计划,物理查询计划通常包含多个MapReduce作业,而一个MapReduce作业的输出可以作为另一个MapReduce作业的输入。Hive为Hive查询设计的MapReduce作业有固定的模式:Mapper类为org.apache.hadoop.hive.ql.exec.ExecMapper,Reducer类为org.apache.hadoop.hive.ql.exec.ExecReducer。

Map过程

不同的MapReduce作业可能有不同的InputFormat,具体使用哪个InputFormat在生成物理查询计划时已经确定。在ExecMapper的初始化方法中生成一棵Operator树,树根是一个MapOperator对象。 在ExecMapper的map方法中,来自InputFormat的Key-Value对的Value被分发到Operator树的根结点,即MapOperator对象。MapOperator将接收的Value转换成记录(Row),然后将其沿树向下传递到各个下级Operator处理,记录(Row)在传递过程中可能被过滤、转换或附上Key(记录本身被串行化为Value)后输出给后面的Reduce过程。

Reduce过程

从Map过程输出的Key-Value对经过MapReduce框架按Key分组后传递给ExecReducer的reduce方法。在ExecReducer的初始化方法中同样会生成一棵Operator树,传递给reduce方法的各组Key-Value对被按序传递给Operator树处理,传递每组Key-Value对开始和结束时Operator树中的各个Operator会得到通知。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: