[ 
https://issues.apache.org/jira/browse/OOZIE-2992?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16091434#comment-16091434
 ] 

Daniel Becker commented on OOZIE-2992:
--------------------------------------

In Luigi, you build workflow nodes by inheriting from the Python class 
*luigi.Task* and overriding some methods.

Dependencies are specified by returning other *Task* instances from the 
*requires()* method, and then the current task will depend on those, and wait 
for those to run before it runs.
This way, this works "the other way" than Oozie: Oozie defines an action and 
what other action to transition to _after_ it has completed, Luigi defines what 
should run _before_ the action.

It is possible to create subworkflows by creating a node that depends on the 
actions that we would like to include in the subworkflow.

----

I think that defining the dependencies (the edges of the workflow graph) in the 
various class methods that may be spread across the code is not as clear as 
defining all of them at a central place as in Oozie configuration files or 
Airflow (though it is possible to spread it across the code in Airflow, too).
Also, in Oozie we can specify a success and a failure transition, which we 
should include in the new API.

> Investigate Luigi API
> ---------------------
>
>                 Key: OOZIE-2992
>                 URL: https://issues.apache.org/jira/browse/OOZIE-2992
>             Project: Oozie
>          Issue Type: Sub-task
>          Components: client
>            Reporter: Andras Piros
>            Assignee: Daniel Becker
>   Original Estimate: 8h
>  Remaining Estimate: 8h
>
> Please investigate [*Luigi API*|https://github.com/spotify/luigi] whether 
> it's usable to us.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to