Oozie Workflow:如何获取当前操作节点名称?

时间:2015-05-13 18:20:20

标签: hadoop oozie

如何在oozie工作流程中获取当前DB::table->pluck的{​​{1}}?

例如:

name

2 个答案:

答案 0 :(得分:0)

目前Oozie无法获取当前的操作节点名称。但是,解决方法是:

  1. 使用EL功能获取workflowId;
  2. 使用Oozie API查询工作流程状态;
  3. 获取正在运行的ID的名称;
  4. 按' @'。分割,这是您的步骤名称

答案 1 :(得分:0)

当Oozie向YARN提交Shell Action时,它会发送一个XML文件,其中包含有关当前Workflow和Action的一些信息,并设置一个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'
fi