山东大学软件工程应用与实践——PIG代码分析(六)

山东大学软件工程应用与实践——PIG代码分析(六),第1张

山东大学软件工程应用与实践——PIG代码分析(六) 2021SC@SDUSC

目录

2021SC@SDUSC

PlanWalker

子类


PlanWalker
    

package org.apache.pig.newplan;

import org.apache.pig.impl.logicalLayer.FrontendException;

public abstract class PlanWalker {

    protected OperatorPlan plan;

    
    public PlanWalker(OperatorPlan plan) {
        this.plan = plan;
    }

    
    public abstract void walk(PlanVisitor visitor) throws FrontendException;

    
    public abstract PlanWalker spawnChildWalker(OperatorPlan plan);

    public OperatorPlan getPlan() {
        return plan ;
    }
    
    
    public void setPlan(OperatorPlan plan) {
        this.plan = plan;
    }

}

PlanWalker提供的是遍历访问一个plan的能力。

子类

PlanWalker的子类主要实现两个方法:

public abstract void walk(PlanVisitor visitor) throws FrontendException;
 
public abstract PlanWalker spawnChildWalker(OperatorPlan plan);

walk()方法在子类的实现中,会以不同的顺序遍历plan,最后的结果是遍历到的节点Operator会调op.accept(visitor)接受本Visitor。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5656373.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存