apache nifi 总执行时间

Posted

技术标签:

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

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

【问题讨论】:

【参考方案1】:

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

    UpdateAttribute,已收到 = $now():toNumber()

    (进行处理)

    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 偏移量

以上是关于apache nifi 总执行时间的主要内容,如果未能解决你的问题,请参考以下文章

Airbnb Airflow vs Apache Nifi [关闭]

NIFI 中的列值检查

带有物联网传感器的 Apache Nifi

如何在Apache NIFI中应用机器学习来处理流数据?

Nifi 1.10.0-使用新的Stateless NiFi执行引擎和命令行

是否可以使用 Apache NiFi 作为 MS SQL Server 数据库内计算的数据流引擎?