如何在oozie中使用正则表达式?

slmsl1lt  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(628)

我想检查文件是否存在于给定的hdfs位置。
我们可以在fs:exists的帮助下检查文件是否存在于给定的hdfs位置。
如果文件名为 test_25082016 在协调工作的帮助下,我们可以得到日期值,即作为一个参数 today 在我们的例子中。
作业.prop

path=/user/cloudera/file/input/test_

在workflow.xml中

<decision name="CheckFile">
 <switch>
    <case to="nextOozieTask">
      ${fs:exists(concat(concat(nameNode, path),today))}
    </case>
     <case to="nextOozieTask1">
      ${fs:exists(concat(concat(nameNode, path),yesterday))}
    </case>
    <default to="MailActionFileMissing" />
 </switch>  </decision>

它正在按预期工作。
但在我的情况下,我的hdfs位置中有文件名,如下所示。
例子: test_25082016_08.10.06.681.csv ,test_24082016_08.13.16.681.csv 如何检查此类型的文件名,即在日期值之后,即。 _08.10.06.681.csv , _08.13.16.681.csv …等等。
是否可以在oozie工作流中使用正则表达式来检查这些值,即 _08.10.06.681.csv 在这种情况下,如何通过oozie验证文件是否存在?
请帮我提前谢谢。

ubof19bj

ubof19bj1#

在这种情况下,我们可以使用下面的代码检查文件是否存在

<decision name="CheckFile">
 <switch>
    <case to="nextOozieTask">
      ${fs:exists(concat(concat(concat(concat(nameNode, path),today),'*"),'.csv'))}
    </case>
     <case to="nextOozieTask1">
      ${fs:exists(concat(concat(nameNode, path),yesterday))}
    </case>
    <default to="MailActionFileMissing" />
 </switch>  </decision>

相关问题