如何使用oozie检查文件是不是存在于HDFS位置?
Posted
技术标签:
【中文标题】如何使用oozie检查文件是不是存在于HDFS位置?【英文标题】:How to check whether the file exist in HDFS location, using oozie?如何使用oozie检查文件是否存在于HDFS位置? 【发布时间】:2016-12-26 07:10:42 【问题描述】:如何使用 Oozie 检查 HDFS 位置的文件是否存在?
在我的 HDFS 位置,我每天晚上 11 点都会收到类似 test_08_01_2016.csv
的文件。
我想在晚上 11.15 之后检查此文件是否存在。我可以使用 Oozie 协调器作业来安排批处理。
但是如何验证文件是否存在于 HDFS 中?
【问题讨论】:
【参考方案1】:您可以在 oozie 中使用 EL 表达式,例如:
<decision name="CheckFile">
<switch>
<case to="nextOozieTask">
$fs:exists('/path/test_08_01_2016.csv') <!--do note the path which should be in ''-->
</case>
<default to="MailActionFileMissing" />
</switch>
</decision>
您还可以使用简单的 shell 脚本使用捕获输出来构建文件的名称。
【讨论】:
嗨 Abhiieor,感谢您的回复。它按预期工作:),我想将今天的日期值动态获取到文件名,即 test_08_22_2016。我已经尝试协调工作来获取日期值,但它不起作用..请建议我如何获取并附加文件中的日期值。 使用 ***.com/questions/1401482/…,将 - 转换为 _(比如 date1)然后export path='/path/test_'$date1'.csv'
谢谢,我已经尝试过上面的日期格式,它将在今天的日期按预期工作。但在我的情况下,如果今天的文件不存在意味着即(test_08_22_2016),我必须验证最后一周的文件( test_08_21_2016、test_08_20_2016...等)。在那种情况下我该如何使用这个
生成最后一周的日期并创建文件名并签入 oozie 决策。
对不起,请您详细解答。我试图从 oozie 协调作业生成日期,我能够从协调作业中获取日期值,但我无法在 oozie 作业的文件名中添加/附加日期值。以上是关于如何使用oozie检查文件是不是存在于HDFS位置?的主要内容,如果未能解决你的问题,请参考以下文章