如何在oozie工作流任务之间传递数据

bkkx9g8r  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(482)

oozie有一组丰富的指令来描述任务之间所需的控制流。它是否有助于在这些任务之间传递数据?或者说,传递数据完全是留给用户的一种练习?
更新:我使用shell操作来调用spark,所以我需要一个足够通用的解决方案来包含这个用例。

7gs2gvoe

7gs2gvoe1#

为了在oozie工作流任务之间传递数据,您需要将workflow2的输入定义为workflow1的输出。例如:

  1. <workflow-app xmlns='uri:oozie:workflow:0.1' name='demo-wf'>
  2. <start to="workflow1" />
  3. <action name="workflow1">
  4. <map-reduce>
  5. <job-tracker>${jobTracker}</job-tracker>
  6. <name-node>${nameNode}</name-node>
  7. <configuration>
  8. <property>
  9. <name>mapred.input.dir</name>
  10. <value>${workflow1_Input}</value>
  11. </property>
  12. <property>
  13. <name>mapred.output.dir</name>
  14. <value>${workflow1_Output}</value>
  15. </property>
  16. </configuration>
  17. </map-reduce>
  18. <ok to="workflow2" />
  19. <error to="fail" />
  20. </action>
  21. <action name="workflow2">
  22. <map-reduce>
  23. <job-tracker>${jobTracker}</job-tracker>
  24. <name-node>${nameNode}</name-node>
  25. <configuration>
  26. <property>
  27. <name>mapred.input.dir</name>
  28. <value>${workflow1_Output}</value>
  29. </property>
  30. <property>
  31. <name>mapred.output.dir</name>
  32. <value>${workflow2_Output}</value>
  33. </property>
  34. </configuration>
  35. </map-reduce>
  36. <ok to="done" />
  37. <error to="fail" />
  38. </action>
  39. </workflow-app>

注意,我为map reduce作业留下了一堆细节,只显示了输入和输出。设置属性文件时,可以定义输入和输出参数。另一件需要注意的事情是mapreduce将忽略任何带有下划线的内容 _ 作为输入。因此,当第一个mapreduce作业完成时,它将有一个\u成功文件和一个\u日志目录,作为第二个操作的输入,该目录将被忽略。

展开查看全部

相关问题