在NiFi中,如何存储从数据库检索的属性(该属性不会经常更改)?

时间:2019-01-18 11:58:34

标签: apache-nifi

我已经安排了ExecuteSQL处理器,该处理器从DB检索速度限制。该速度限制不会经常更改,因此我创建了24小时的时间间隔。但我注意到下一个处理器(例如RouteAttribute)不会存储此速度限制值。对于每个来自Kafka的FlowFile,我想检查FlowFile中的speedlimit值是否超过从DB检索到的speedlimit值。但是,数据库中的值会在24小时内作为FlowFile处理一次,并且无法进行比较。

我有以下流程: 1)从这里我将ExecuteSQL-> ConvertAvroToJson-> EvaluateJsonPath->的速度限制值传递给处理器RoutesAttribute。 2)ConsumeKafka-> EvaluateJsonPath-> RouteAttributes(RouteAtrribute从上述流中获取速度限制,但仅在24小时内获取一次该值。如何将该值永久存储在内存中?)

1 个答案:

答案 0 :(得分:3)

根据您的描述,我认为这篇HCC入门指南非常相关: https://community.hortonworks.com/questions/140060/nifi-how-to-load-a-value-in-memory-one-time-from-c.html

总而言之,它利用了UpdateAttribute具有状态功能的事实,并确保仅当从引用表中提取数据时才更新属性。


还有另一种解决方案,如果可以在获取更新的参考值后重新启动nifi,这称为变量注册表,它可以简化一些操作: https://docs.hortonworks.com/HDPDocuments/HDF3/HDF-3.1.1/bk_administration/content/custom_properties.html