3

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

4

2 回答 2

12

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

  1. 更新属性,收到=${now():toNumber()}

  2. (做处理)

  3. 更新属性,经过=${now():toNumber():minus(${received}):format("HH:mm:ss")}

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

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

在此处输入图像描述

于 2016-05-24T20:53:25.433 回答
9

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

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

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

于 2016-05-25T15:00:04.860 回答