首页 > 解决方案 > 在 NiFi 中,如何存储从数据库中检索到的不经常更改的属性?

问题描述

我已经安排了从数据库中检索速度限制的 ExecuteSQL 处理器。这个速度限制不会经常变化,所以我创建了 24 小时的时间间隔。但我注意到下一个处理器,例如 RouteAttribute 不存储这个速度限制值。对于来自 Kafka 的每个 FlowFile,我想检查 FlowFile 中的 speedlimit 值是否超过从 DB 检索到的 speedlimit 值。但是来自 DB 的值会在 24 小时内作为 FlowFile 处理一次,并且不可用于比较。

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

标签: apache-nifi

解决方案


根据您的描述,我认为这篇关于 HCC 的文章非常相关: https ://community.hortonworks.com/questions/140060/nifi-how-to-load-a-value-in-memory-one-time-来自-c.html

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


还有一个替代解决方案,如果您可以在拉入更新的参考值后重新启动 nifi,这称为变量注册表,它简化了一些事情: https ://docs.hortonworks.com/HDPDocuments/HDF3 /HDF-3.1.1/bk_administration/content/custom_properties.html


推荐阅读