【问题标题】: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 中?

【问题讨论】:

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


    【解决方案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。我已经尝试协调工作来获取日期值,但它不起作用..请建议我如何获取并附加文件中的日期值。
    • 使用 stackoverflow.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 作业的文件名中添加/附加日期值。
    猜你喜欢
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    相关资源
    最近更新 更多