[ https://issues.apache.org/jira/browse/PIG-3898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13971950#comment-13971950 ]
Rohini Palaniswamy commented on PIG-3898: ----------------------------------------- +1 on first approach. Ambrose and Lipstick are the ones affected. Twitter folks already gave their ok in PIG-3419 for incompatibility w.r.t Ambrose. https://issues.apache.org/jira/browse/PIG-3419?focusedCommentId=13753863&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13753863 https://issues.apache.org/jira/browse/PIG-3419?focusedCommentId=13753912&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13753912 Are there any other known usages of PPNL by others? > Refactor PPNL for non-MR execution engine > ----------------------------------------- > > Key: PIG-3898 > URL: https://issues.apache.org/jira/browse/PIG-3898 > Project: Pig > Issue Type: Task > Reporter: Cheolsoo Park > Assignee: Cheolsoo Park > Fix For: 0.13.0 > > > Currently, PPNL assumes the MR plan, and thus, it's not compatible with > non-MR execution engine. To support non-MR execution engines, I propose we > changed initialPlanNotification() method as follows- > {code:title=from} > public void initialPlanNotification(String scriptId, MROperPlan plan); > {code} > {code:title=to} > public void initialPlanNotification(String scriptId, OperatorPlan<?> plan); > {code} > Since MROperPlan and TezOperPlan are a subclass of OperatorPlan, this method > can take both plans. In addition, if we add a new execution engine in the > future, it won't break the interface again as long as we build the operator > plan as a subclass of OperatorPlan. > With this approach, applications such as Ambrose / Lipstick should be able to > dynamically cast OperatorPlan to a concrete subclass depending on the > ExecType. > One disadvantage is that this isn't backward compatible with Pig 0.12 and > older. But it only requires minor changes, and backward compatibility will be > broken one time only. > I also considered an alternative approach, for example, adding a new PPNL for > Tez. But this approach has two problems. > # Pig registers PPNL via the Main function, and right now, only one PPNL can > be registered. So having more than one PPNLs requires quite a few code > changes in Main, ScriptState, and so on. > # Multiple PPNL interfaces mean multiple PPNL implementations. This results > in more (duplicate) code in applications such as Ambrose / Lipstick. -- This message was sent by Atlassian JIRA (v6.2#6252)