我想在给定的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?
请提前帮助我。
答案 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>