首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:如何获得当前操作节点的名称?

:如何获得当前操作节点的名称?
EN

Stack Overflow用户
提问于 2015-05-13 18:20:20
回答 2查看 937关注 0票数 0

如何在oozie工作流中获取当前nameaction

例:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

发布于 2015-12-07 15:15:47

目前,Oozie中没有获取当前操作节点名称的方法。然而,解决办法是:

  1. 利用EL函数得到workflowId;
  2. 使用Oozie API查询工作流状态;
  3. 获取正在运行的ID的名称;
  4. 按“@”分隔,这是您的步名
票数 0
EN

Stack Overflow用户

发布于 2015-12-07 20:55:55

当Oozie向纱线提交Shell Action时,它会传递一个XML文件,其中包含有关当前工作流和操作的一些信息,并设置一个env。变量指向该文件。只需使用、sed、和voila解析XML即可。

代码语言:javascript
复制
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'
fi
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30222476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档