2014-12-04 95 views

回答

0

我不认为这样的变量是可用的。但是如果需要的话,你可以使用shell动作来完成。在您的工作流程中,开始执行一个shell脚本以启动时间并将其保存在一个变量中。在工作流程刚刚完成之前,您的电子邮件操作有另一个shell脚本来计算当前时间 - 开始时间并在您的电子邮件中使用它。但这会让你的工作流程变得很脏

+0

我想过这个,但希望能有一个更清洁的解决方案。有趣的是,Hue界面能够显示持续时间;因此,我假设它应该在日志中的某处。 – Pasha 2014-12-09 17:33:57

0

这是Oozie的一个显着缺点。我们的每个工作流都以一个shell动作开始,该动作调用一个简单的bash脚本来获取时间戳。

<action name="start-time"> 
    <shell xmlns="uri:oozie:shell-action:0.1"> 
    <job-tracker>${jobTracker}</job-tracker> 
    <name-node>${nameNode}</name-node> 
    <exec>utc-time.sh</exec> 
    <file>../common/utc-time.sh#utc-time.sh</file> 
    <capture-output/> 
    </shell> 
    <ok to="the-first-actual-action"/> 
    <error to="fail"/> 
</action> 

这是可测试与Java EL在我们对完成发送电子邮件,错误,像这样:

<action name="email"> 
    <email xmlns="uri:oozie:email-action:0.1"> 
    <to>${emailsToAlert}</to> 
    <subject>COMPLETED: ${wf:name()}</subject> 
    <body> 
     Workflow ID: ${wf:id()} 
     Workflow Name: ${wf:name()} 
     Workflow app path: ${wf:appPath()} 
     Start Time: ${wf:actionData('start-time')['time']} 
     End Time: ${timestamp()} 
    </body> 
    </email> 
    <ok to="end"/> 
    <error to="fail"/> 
</action> 

获取持续时间是另一个涉及传递的起点和终点跳穿圈运动时间到一个bash脚本。

我正在调查Oozie SLA functionality,但我还没有找到提取数据的方法。

相关问题