【问题标题】:apache nifi total execution timeapache nifi 总执行时间
【发布时间】:2016-05-24 11:05:40
【问题描述】:

我想知道如何找出/捕获 Apache Nifi 中任何流的总执行时间。有没有办法做到这一点并将其添加到属性列表中,以便可以通过 PutEmail 共享相同的内容?

【问题讨论】:

    标签: time execution apache-nifi


    【解决方案1】:

    我相信您必须在收到流文件时添加自定义时间戳属性,完成大部分处理,然后计算经过时间属性以包含在电子邮件中。您可以使用两个 UpdateAttribute 处理器来执行此操作。

    1. UpdateAttribute,已收到 = ${now():toNumber()}

    2. (进行处理)

    3. UpdateAttribute, elapsed = ${now():toNumber():minus(${received}):format("HH:mm:ss")}

    这会将经过的时间格式化为“00:04:16”(4 分 16 秒)。您可以在您的 PutEmail 消息内容中将其用作 ${elapsed}

    但这有点难看,只给出了处理时间的近似值。 NiFi 出处系统维护“Lineage Duration”,它描述了自文件进入 NiFi 以来经过的时间。这是一个更权威的数字。但我不相信你可以从表达语言中查询谱系持续时间。您必须单独查询和分析出处数据。

    【讨论】:

    • 谢谢。我尝试了这种方法,它奏效了。我能够用它捕获执行时间。
    【解决方案2】:

    詹姆斯在上面提供了一个很好的解释。不过,还有一点需要注意的是,您可以简单地引用lineageStartDate 属性,而不是为接收数据的时间戳添加属性:

    ${now():toNumber():minus(${lineageStartDate}):format("HH:mm:‌​ss")}
    

    这与用于确定来源中的血统持续时间的值相同。

    【讨论】:

    • 为了清楚起见,你的意思是说,我可以直接使用 LineageStartDate 属性,而不是像上面@James 所建议的那样做:(当前时间 - 开始时间),这会给我持续时间过程?
    • 应该是${now():toNumber():minus(${lineageStartDate}):format("HH:mm:ss")}?太棒了,我不知道这是可以访问的,+1!
    • 哇,抱歉 - 是的,应该是 ${now():toNumber():minus(${lineageStartDate}):format("HH:mm:ss")}。很好地抓住了我的错字:)
    • 我必须这样做 ${now():toNumber():minus(${lineageStartDate}):format("HH:mm:‌​ss", "GMT")} 以便它将考虑 GMT 偏移量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    相关资源
    最近更新 更多