[ 
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)

Reply via email to