Hi Zoraida,

Oozie workflows are supposed to be Directed Acyclic
Graphs<http://en.wikipedia.org/wiki/Directed_acyclic_graph>(DAGs), so
you can't have any loops and it must be a graph.  The error says
that your action named "calculateGlobalMoviesUse" has multiple "ok to"
transitions.  Looking at your workflow, I see that "checkGlobalMoviesUse"
and "checkGlobalCustomersUse" both transition to "calculateGlobalMoviesUse",
hence the problem.

I don't know what your use case is, but based on the names, I think you may
have meant to have "checkGlobalCustomersUse" transition to
"calculateGlobalCustomersUse"
and not "calculateGlobalMoviesUse" (plus, no other actions have a
transition to "calculateGlobalCustomersUse").

- Robert


On Thu, May 30, 2013 at 10:10 AM, ZORAIDA HIDALGO SANCHEZ <[email protected]>wrote:

> Dear all,
>
>
> We are building a workflow with forks and joins and we get this exception:
>
>
> Caused by: org.apache.oozie.workflow.WorkflowException: E0743: Multiple
> "ok to" transitions to the same node, [calculateGlobalMoviesUse], are not
> allowed
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:206)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:227)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:234)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:265)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:227)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:234)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:219)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:214)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateForkJoin(LiteWorkflowAppParser.java:174)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowAppParser.validateAndParse(LiteWorkflowAppParser.java:141)
>
> at
> org.apache.oozie.workflow.lite.LiteWorkflowLib.parseDef(LiteWorkflowLib.java:54)
>
> at
> org.apache.oozie.service.LiteWorkflowAppService.parseDef(LiteWorkflowAppService.java:47)
>
> at
> org.apache.oozie.service.LiteWorkflowAppService.parseDef(LiteWorkflowAppService.java:42)
>
> at org.apache.oozie.command.wf.SubmitXCommand.execute
>
>
> My workflow.xml is os big, sorry for the inconvenience(thanks in advance):
>
>
> <workflow-app xmlns='uri:oozie:workflow:0.2' name='koios-$service-export'>
>
>   <start to='eventTimeConsumer' />
>
>   <!-- INCREMENTAL LOAD FIRST STEP -->
>
>   <action name='eventTimeConsumer'>
>
>     <java>
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <main-class>com.pdi.koios.orchestrator.ConsumerMain</main-class>
>
>       <arg>${mysql_url}</arg>
>
>       <arg>${mysql_user}</arg>
>
>       <arg>${mysql_pass}</arg>
>
>       <arg>${workflowId}</arg>
>
>       <capture-output />
>
>     </java>
>
>     <ok to="setupFork" />
>
>     <error to="fail" />
>
>   </action>
>
>
>
>   <fork name="setupFork">
>
>     <path start="checkDailyLoad"/>
>
>     <path start="checkWeeklyLoad"/>
>
>     <path start="checkMonthlyLoad"/>
>
>   </fork>
>
>
>
>   <join name="setupJoin" to="calculateGlobalFork"/>
>
>
>
>   <!-- MONTHLY LOAD -->
>
>   <decision name="checkMonthlyLoad">
>
>     <switch>
>
>       <case to="setupMonthlyFork">
>
>         ${wf:actionData('eventTimeConsumer')['continue_monthly']}
>
>       </case>
>
>       <default to="setupJoin" />
>
>     </switch>
>
>   </decision>
>
>
>
>   <fork name="setupMonthlyFork">
>
>     <path start="setupMonthlyTmpHistogramCustomers"/>
>
>     <path start="setupMonthlyTmpHistogramMovies"/>
>
>   </fork>
>
>
>   <join name="setupMonthlyJoin" to="calculateMonthlyFork"/>
>
>
>
>   <action name='setupMonthlyTmpHistogramCustomers'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/monthlyCustomerHistTemporal.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_month=${wf:actionData('eventTimeConsumer')['initial.timestamp.monthly']}</param>
>
>
> <param>end_month=${wf:actionData('eventTimeConsumer')['end.timestamp.monthly']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="setupMonthlyJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <action name='setupMonthlyTmpHistogramMovies'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/monthlyMovieHistTemporal.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_month=${wf:actionData('eventTimeConsumer')['initial.timestamp.monthly']}</param>
>
>
> <param>end_month=${wf:actionData('eventTimeConsumer')['end.timestamp.monthly']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="setupMonthlyJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>    <fork name="calculateMonthlyFork">
>
>     <path start="calculateMonthlyTops"/>
>
>     <path start="calculateMonthlyHistograms"/>
>
>   </fork>
>
>
>   <join name="calculateMonthlyJoin" to="setupJoin"/>
>
>
>
>   <action name='calculateMonthlyTops'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/monthlyTops.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_month=${wf:actionData('eventTimeConsumer')['initial.timestamp.monthly']}</param>
>
>
> <param>end_month=${wf:actionData('eventTimeConsumer')['end.timestamp.monthly']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="loadMonthlyTops"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <action name='loadMonthlyTops'>
>
>     <sqoop xmlns="uri:oozie:sqoop-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <arg>export</arg>
>
>       <arg>--username</arg>
>
>       <arg>${mysql_user}</arg>
>
>       <arg>--password</arg>
>
>       <arg>${mysql_pass}</arg>
>
>       <arg>--connect</arg>
>
>       <arg>${mysql_url}</arg>
>
>       <arg>--table</arg>
>
>       <arg>TOPS</arg>
>
>       <arg>--export-dir</arg>
>
>       <arg>/user/hive/warehouse/${service}.db/tops</arg>
>
>       <arg>--input-fields-terminated-by</arg>
>
>       <arg>\001</arg>
>
>     </sqoop>
>
>     <ok to="calculateMonthlyJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>  <action name='calculateMonthlyHistograms'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/monthlyHistograms.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_month=${wf:actionData('eventTimeConsumer')['initial.timestamp.monthly']}</param>
>
>
> <param>end_month=${wf:actionData('eventTimeConsumer')['end.timestamp.monthly']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="loadMonthlyHistograms"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <action name='loadMonthlyHistograms'>
>
>     <sqoop xmlns="uri:oozie:sqoop-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <arg>export</arg>
>
>       <arg>--username</arg>
>
>       <arg>${mysql_user}</arg>
>
>       <arg>--password</arg>
>
>       <arg>${mysql_pass}</arg>
>
>       <arg>--connect</arg>
>
>       <arg>${mysql_url}</arg>
>
>       <arg>--table</arg>
>
>       <arg>HISTOGRAMS</arg>
>
>       <arg>--export-dir</arg>
>
>       <arg>/user/hive/warehouse/${service}.db/histograms</arg>
>
>       <arg>--input-fields-terminated-by</arg>
>
>       <arg>\001</arg>
>
>     </sqoop>
>
>     <ok to="calculateMonthlyJoin"/>
>
>     <error to="fail"/>
>
>    </action>
>
>
>
>    <!-- WEEKLY LOAD -->
>
>    <decision name="checkWeeklyLoad">
>
>     <switch>
>
>       <!-- empty or doesn't exist -->
>
>       <case to="setupWeeklyFork">
>
>         ${wf:actionData('eventTimeConsumer')['continue_weekly']}
>
>       </case>
>
>       <default to="setupJoin" />
>
>     </switch>
>
>   </decision>
>
>
>
>   <fork name="setupWeeklyFork">
>
>     <path start="setupWeeklyTmpHistogramCustomers"/>
>
>     <path start="setupWeeklyTmpHistogramMovies"/>
>
>   </fork>
>
>
>   <join name="setupWeeklyJoin" to="setupJoin"/>
>
>
>
>   <action name='setupWeeklyTmpHistogramCustomers'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/weeklyCustomerHistTemporal.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_week=${wf:actionData('eventTimeConsumer')['initial.timestamp.weekly']}</param>
>
>
> <param>end_week=${wf:actionData('eventTimeConsumer')['end.timestamp.weekly']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="setupWeeklyJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <action name='setupWeeklyTmpHistogramMovies'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/weeklyMovieHistTemporal.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_week=${wf:actionData('eventTimeConsumer')['initial.timestamp.weekly']}</param>
>
>
> <param>end_week=${wf:actionData('eventTimeConsumer')['end.timestamp.weekly']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="setupWeeklyJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <action name='calculateWeeklyResults'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/weeklyActivityIndexes.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="setupJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>
>
>   <!-- DAILY LOAD -->
>
>   <decision name="checkDailyLoad">
>
>     <switch>
>
>       <case to="setupDailyFork">
>
>         ${wf:actionData('eventTimeConsumer')['continue_daily']}
>
>       </case>
>
>       <default to="setupJoin" />
>
>     </switch>
>
>   </decision>
>
>   <!-- ALL TIME LOAD -->
>
>   <fork name="setupDailyFork">
>
>     <path start="setupSummarizeAllFields"/>
>
>     <path start="setupSummarizeNoGenres"/>
>
>     <path start="setupSummarizeOnlyGenres"/>
>
>   </fork>
>
>
>   <join name="setupDailyJoin" to="calculateDailyResults"/>
>
>
>
>   <action name='setupSummarizeAllFields'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/dailySummarizeAllFields.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_day=${wf:actionData('eventTimeConsumer')['initial.timestamp.daily']}</param>
>
>
> <param>end_day=${wf:actionData('eventTimeConsumer')['end.timestamp.daily']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="setupDailyJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>   <action name='setupSummarizeNoGenres'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/dailySummarizeNoGenres.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_day=${wf:actionData('eventTimeConsumer')['initial.timestamp.daily']}</param>
>
>
> <param>end_day=${wf:actionData('eventTimeConsumer')['end.timestamp.daily']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="setupDailyJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>   <action name='setupSummarizeOnlyGenres'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/dailySummarizeOnlyGenres.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>
> <param>init_day=${wf:actionData('eventTimeConsumer')['initial.timestamp.daily']}</param>
>
>
> <param>end_day=${wf:actionData('eventTimeConsumer')['end.timestamp.daily']}</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="setupDailyJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <action name='calculateDailyResults'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/dailySummarizes.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="loadDailySummarizes"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <action name='loadDailySummarizes'>
>
>     <sqoop xmlns="uri:oozie:sqoop-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <arg>export</arg>
>
>       <arg>--username</arg>
>
>       <arg>${mysql_user}</arg>
>
>       <arg>--password</arg>
>
>       <arg>${mysql_pass}</arg>
>
>       <arg>--connect</arg>
>
>       <arg>${mysql_url}</arg>
>
>       <arg>--table</arg>
>
>       <arg>CONSUMPTION_SUMMARIZE</arg>
>
>       <arg>--export-dir</arg>
>
>       <arg>/user/hive/warehouse/${service}.db/consumption_summarize</arg>
>
>       <arg>--input-fields-terminated-by</arg>
>
>       <arg>\001</arg>
>
>     </sqoop>
>
>     <ok to="setupJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>
>
>   <!-- Common aggregates for different periods -->
>
>   <fork name="calculateGlobalFork">
>
>     <path start="checkGlobalActivityIndexes"/>
>
>     <path start="checkGlobalMoviesUse"/>
>
>     <path start="checkGlobalCustomersUse"/>
>
>   </fork>
>
>
>   <join name="calculateGlobalJoin" to="checkFinalizer"/>
>
>
>
>    <decision name="checkGlobalActivityIndexes">
>
>     <switch>
>
>       <case to="calculateGlobalActivityIndexes">
>
>         ${wf:actionData('eventTimeConsumer')['continue_monthly'] ||
>
>           wf:actionData('eventTimeConsumer')['continue_weekly']}
>
>       </case>
>
>       <default to="calculateGlobalJoin" />
>
>     </switch>
>
>   </decision>
>
>
>
>   <action name='calculateGlobalActivityIndexes'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/globalActivityIndexes.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="loadGlobalActivityIndexes"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>
>
>
>
>   <action name='loadGlobalActivityIndexes'>
>
>     <sqoop xmlns="uri:oozie:sqoop-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <arg>export</arg>
>
>       <arg>--username</arg>
>
>       <arg>${mysql_user}</arg>
>
>       <arg>--password</arg>
>
>       <arg>${mysql_pass}</arg>
>
>       <arg>--connect</arg>
>
>       <arg>${mysql_url}</arg>
>
>       <arg>--table</arg>
>
>       <arg>ACTIVITY_INDEXES</arg>
>
>       <arg>--export-dir</arg>
>
>       <arg>/user/hive/warehouse/${service}.db/activity_indexes</arg>
>
>       <arg>--input-fields-terminated-by</arg>
>
>       <arg>\001</arg>
>
>     </sqoop>
>
>     <ok to="calculateGlobalJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <decision name="checkGlobalMoviesUse">
>
>     <switch>
>
>       <case to="calculateGlobalMoviesUse">
>
>         ${wf:actionData('eventTimeConsumer')['continue_monthly'] ||
>
>           wf:actionData('eventTimeConsumer')['continue_weekly']}
>
>       </case>
>
>       <default to="calculateGlobalJoin" />
>
>     </switch>
>
>   </decision>
>
>
>
>   <action name='calculateGlobalMoviesUse'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/globalMoviesUse.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="loadGlobalMoviesUse"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <action name='loadGlobalMoviesUse'>
>
>     <sqoop xmlns="uri:oozie:sqoop-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <arg>export</arg>
>
>       <arg>--username</arg>
>
>       <arg>${mysql_user}</arg>
>
>       <arg>--password</arg>
>
>       <arg>${mysql_pass}</arg>
>
>       <arg>--connect</arg>
>
>       <arg>${mysql_url}</arg>
>
>       <arg>--table</arg>
>
>       <arg>MOVIES_USE</arg>
>
>       <arg>--export-dir</arg>
>
>       <arg>/user/hive/warehouse/${service}.db/movies_use</arg>
>
>       <arg>--input-fields-terminated-by</arg>
>
>       <arg>\001</arg>
>
>     </sqoop>
>
>     <ok to="calculateGlobalJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <decision name="checkGlobalCustomersUse">
>
>     <switch>
>
>       <case to="calculateGlobalMoviesUse">
>
>         ${wf:actionData('eventTimeConsumer')['continue_monthly'] ||
>
>           wf:actionData('eventTimeConsumer')['continue_weekly']}
>
>       </case>
>
>       <default to="calculateGlobalJoin" />
>
>     </switch>
>
>   </decision>
>
>
>
>   <action name='calculateGlobalCustomersUse'>
>
>     <hive xmlns="uri:oozie:hive-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <job-xml>resources/hive-site.xml</job-xml>
>
>       <script>resources/globalCustomersUse.hql</script>
>
>       <param>udfs_jar=${workflow_path}/lib/etl-0.0.1-SNAPSHOT.jar</param>
>
>       <param>service=${service}</param>
>
>     </hive>
>
>     <ok to="loadGlobalCustomersUse"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>
>
>
>
>   <action name='loadGlobalCustomersUse'>
>
>     <sqoop xmlns="uri:oozie:sqoop-action:0.2">
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <arg>export</arg>
>
>       <arg>--username</arg>
>
>       <arg>${mysql_user}</arg>
>
>       <arg>--password</arg>
>
>       <arg>${mysql_pass}</arg>
>
>       <arg>--connect</arg>
>
>       <arg>${mysql_url}</arg>
>
>       <arg>--table</arg>
>
>       <arg>CUSTOMERS_USE</arg>
>
>       <arg>--export-dir</arg>
>
>       <arg>/user/hive/warehouse/${service}.db/customers_use</arg>
>
>       <arg>--input-fields-terminated-by</arg>
>
>       <arg>\001</arg>
>
>     </sqoop>
>
>     <ok to="calculateGlobalJoin"/>
>
>     <error to="fail"/>
>
>   </action>
>
>
>
>   <decision name="checkFinalizer">
>
>     <switch>
>
>       <case to="eventTimeFinalizer">
>
>         ${wf:actionData('eventTimeConsumer')['continue_daily']}
>
>       </case>
>
>       <default to="end" />
>
>     </switch>
>
>   </decision>
>
>
>
>   <!-- LAST ACTION OF THE INCREMENTAL LOAD -->
>
>   <action name='eventTimeFinalizer'>
>
>     <java>
>
>       <job-tracker>${jobTracker}</job-tracker>
>
>       <name-node>${nameNode}</name-node>
>
>       <main-class>com.pdi.koios.orchestrator.FinalizerMain</main-class>
>
>       <arg>${mysql_url}</arg>
>
>       <arg>${mysql_user}</arg>
>
>       <arg>${mysql_pass}</arg>
>
>       <arg>${workflowId}</arg>
>
>       <arg>${wf:actionData('eventTimeConsumer')['end.date']}</arg>
>
>       <capture-output />
>
>     </java>
>
>     <ok to="end" />
>
>     <error to="fail" />
>
>   </action>
>
>   <kill name="fail">
>
>     <message>Map/Reduce failed, error
>
>       message[${wf:errorMessage(wf:lastErrorNode())}]
>
>     </message>
>
>   </kill>
>
>   <end name='end' />
>
> </workflow-app>
>
>
> ________________________________
>
> Este mensaje se dirige exclusivamente a su destinatario. Puede consultar
> nuestra pol?tica de env?o y recepci?n de correo electr?nico en el enlace
> situado m?s abajo.
> This message is intended exclusively for its addressee. We only send and
> receive email on the basis of the terms set out at:
> http://www.tid.es/ES/PAGINAS/disclaimer.aspx
>

Reply via email to