我有一个shell脚本 sqoop job
. 脚本如下。
!#/bin/bash
table=$1
sqoop job --exec ${table}
现在,当我在工作流中传递表名时,我成功地执行了sqoop作业。
工作流程如下。
<workflow-app name="Shell_script" xmlns="uri:oozie:workflow:0.5">
<start to="shell"/>
<kill name="Kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="shell_script">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>sqoopjob.sh</exec>
<argument>test123</argument>
<file>/user/oozie/sqoop/lib/sqoopjob.sh#sqoopjob.sh</file>
</shell>
<ok to="End"/>
<error to="Kill"/>
</action>
<end name="End"/>
</workflow-app>
表的作业已成功执行 test123
.
现在我有300个像上面一样的工作。我想并行执行10个sqoop作业。所有表名都在一个文件中。
现在我想循环到文件并对前10个表执行10个sqoop作业,以此类推。
我该怎么做?我应该准备10个工作流程吗?我真的很困惑。
1条答案
按热度按时间fhg3lkii1#
作为@
Samson Scharfrichter
您可以在shell脚本中启动并行作业。制作函数runJob()
在shell中并行运行。使用此模板: