如何在oozie工作流中获取当前name的action?
例:
<action name="hello_action">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<exec>/user/nz/printActionName.sh</exec>
<argument><!-- PASS current action name i.e. hello_action --></argument>
<file>/user/nz/printActionName.sh#printActionName.sh</file>
<capture-output/>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>发布于 2015-12-07 15:15:47
目前,Oozie中没有获取当前操作节点名称的方法。然而,解决办法是:
发布于 2015-12-07 20:55:55
当Oozie向纱线提交Shell Action时,它会传递一个XML文件,其中包含有关当前工作流和操作的一些信息,并设置一个env。变量指向该文件。只需使用、sed、和voila解析XML即可。
if [[ "$CONTAINER_ID" != "" && "$OOZIE_ACTION_CONF_XML" != "" ]]
then
RawDump=$(/bin/sed -n '/<name>mapreduce.job.name<\/name>/ { N ; s/^.*<value>oozie:action:/:/ ; s/<\/value>.*$/:/ ; p}' "$OOZIE_ACTION_CONF_XML")
MyOozieWorkflow=$(/bin/echo "$RawDump" | /bin/sed -n '/:W=[^:]*:/ { s/^.*W=// ; s/:.*$// ; p }')
MyOozieJobId=$( /bin/echo "$RawDump" | /bin/sed -n '/:ID=[^:]*:/ { s/^.*ID=// ; s/:.*$// ; p }')
MyOozieAction=$( /bin/echo "$RawDump" | /bin/sed -n '/:A=[^:]*:/ { s/^.*A=// ; s/:.*$// ; p }')
else
MyOozieWorkflow='None'
MyOozieJobId='None'
MyOozieAction='None'
fihttps://stackoverflow.com/questions/30222476
复制相似问题