apache nifi总执行时间

Swa*_*ood 2 time execution apache-nifi

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

Jam*_*mes 7

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

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

  2. (做处理)

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

这将格式化经过的时间,如"00:04:16"(4分16秒).您可以${elapsed}在PutEmail邮件内容中使用此功能.

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

在此输入图像描述


小智 7

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

${now():toNumber():minus(${lineageStartDate}):format("HH:mm:??ss")}
Run Code Online (Sandbox Code Playgroud)

这与用于确定物种中的谱系持续时间的值相同.