我在使用Oozie工作流定义中的变量检查是否创建了特定文件时遇到了以下问题.它使用绝对路径,如下所示,但我不能使用绝对路径:
${fs:exists('/mypath/file.hql')}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,必须替换nameNode和工作流ID,但在决策节点中,这不起作用.变量没有被替换,执行此操作的正确语法是什么?
<decision name="check-hql-file-created">
<switch>
<case to="hive-exec-il2rl-hql4baseentity">
${fs:exists(${nameNode}'/tmp/oozie_tmp/'${wf:id()}'.hql')}
</case>
<default to="il2rl-loop"/>
</switch>
</decision>
Run Code Online (Sandbox Code Playgroud)
它正在使用如下的连接:
<switch>
<case to="hive-exec-il2rl-hql4baseentity">
${fs:exists(concat(concat(concat(concat(concat(nameNode, '/tmp/oozie_tmp/'), wf:id()), '_'), replaceAll(asJson, "\\{\"|,.+$", "")), '.hql')) == "true"}
</case>
<default to="il2rl-loop"/>
</switch>
Run Code Online (Sandbox Code Playgroud)