oozie worflow中的多个hive2操作接收相同的时间戳
我构建了一个包含两个hive2操作的工作流,并使用色调运行它。我需要在工作流启动时从系统获取当前时间,并将其传递给两个操作。 这是工作流的结构:oozie worflow中的多个hive2操作接收相同的时间戳,hive,workflow,oozie,Hive,Workflow,Oozie,我构建了一个包含两个hive2操作的工作流,并使用色调运行它。我需要在工作流启动时从系统获取当前时间,并将其传递给两个操作。 这是工作流的结构: <?xml version="1.0" encoding="UTF-8"?> <workflow-app xmlns="uri:oozie:workflow:0.5" name="workflow.xml"> <global> <job-tracker>host1:1234<
<?xml version="1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.5" name="workflow.xml">
<global>
<job-tracker>host1:1234</job-tracker>
<name-node>hdfs://myhost:4312</name-node>
<configuration>
<property>
<name>execution_start</name>
<value>${timestamp()}</value>
</property>
</configuration>
</global>
<start to="script1" />
<action name="script1">
<hive2 xmlns="uri:oozie:hive2-action:0.2">
<jdbc-url>jdbc:hive2://myhost:10/default</jdbc-url>
<script>script1.hql</script>
<param>execution_start=${execution_start}</param>
</hive2>
<ok to="script2" />
<error to="fail" />
</action>
<action name="script2">
<hive2 xmlns="uri:oozie:hive2-action:0.2">
<jdbc-url>jdbc:hive2://myhost:10/default</jdbc-url>
<script>script2.hql</script>
<param>execution_start=${execution_start}</param>
</hive2>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Sub workflow failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end" />
</workflow-app>
host1:1234
hdfs://myhost:4312
开始执行
${timestamp()}
jdbc:hive2://myhost:10/default
脚本1.hql
执行\u开始=${execution\u开始}
jdbc:hive2://myhost:10/default
脚本2.hql
执行\u开始=${execution\u开始}
子工作流失败,错误消息[${wf:errorMessage(wf:lastErrorNode())}]
我需要在两个配置单元操作中具有相同的时间戳。到目前为止,Hue要求输入名为execution\u start
的参数
我还尝试了:execution\u start=${wf:conf('execution\u start')}>
。我没有被提示输入参数,但是我在脚本中得到一个空值
请注意,
execution\u start=${timestamp()}>
起作用,但它不适合我,因为每个操作的时间戳都不同。您可以首先调用一个只返回时间戳的Oozie Shell操作,捕获第一个操作的输出,然后使用execution\u start=${wf:actionData将其传递给Hive2操作('TimestampShell')}
请参阅我对关于
的回答,该回答不适用于所有动作类型…也不是定义“参数”的地方…无论如何都无法从EL表达式初始化。我看到了很多答案,但不是你的答案,谢谢你的内部消息。我知道它不起作用,为什么不起作用,但我仍在寻找解决方案。编写代码是解释我希望实现什么的一种简单方法。如果工作流由协调员安排,你可以使用“工作流理论开始时间”,参见。