我想知道如何找出/捕获Apache Nifi中任何流的总执行时间。有没有办法做到这一点,并将其添加到属性列表,以便可以通过PutEmail共享它?
答案 0 :(得分:6)
我相信您必须在收到流文件时添加自定义时间戳属性,执行大部分处理,然后计算要包含在电子邮件中的已用时间属性。您可以使用两个UpdateAttribute处理器执行此操作。
UpdateAttribute,已收到 = ${now():toNumber()}
(做处理)
UpdateAttribute,已过去 = ${now():toNumber():minus(${received}):format("HH:mm:ss")}
这将格式化经过的时间,如“00:04:16”(4分16秒)。您可以在PutEmail邮件内容中将其用作${elapsed}
。
但这有点难看,只能给出处理时间的近似值。 NiFi起源系统保持“Lineage Duration”,描述自文件进入NiFi后经过的时间。这是一个更权威的数字。但我不相信你可以从表达语言中查询谱系持续时间。您必须单独查询和分析出处数据。
答案 1 :(得分:6)
lineageStartDate
属性:
${now():toNumber():minus(${lineageStartDate}):format("HH:mm:ss")}
这与用于确定原产地中的谱系持续时间的值相同。