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

时间:2016-08-25 12:57:47

标签: shell hadoop oozie cloudera-cdh oozie-coordinator

我想在给定的HDFS位置检查文件是否存在。

我们可以在fs:exists ie。

的帮助下检查文件是否存在于给定的HDFS位置

如果在协调作业的帮助下文件名为test_25082016,我们可以获取日期值,即在我们的示例中作为参数today

job.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?

请提前帮助我。

1 个答案:

答案 0 :(得分:1)

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

<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>