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 [关闭]