apache nifi总执行时间

时间:2016-05-24 11:05:40

标签: time execution apache-nifi

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

2 个答案:

答案 0 :(得分:6)

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

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

  2. (做处理)

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

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

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

    enter image description here

答案 1 :(得分:6)

詹姆斯在上面提供了一个很好的解释。但另外需要注意的是,不是为收到数据的时间戳添加属性,而是简单地引用lineageStartDate属性:

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

这与用于确定原产地中的谱系持续时间的值相同。