apache-nifi - 在 NiFi 中,如何存储从数据库中检索到的不经常更改的属性?
问题描述
我已经安排了从数据库中检索速度限制的 ExecuteSQL 处理器。这个速度限制不会经常变化,所以我创建了 24 小时的时间间隔。但我注意到下一个处理器,例如 RouteAttribute 不存储这个速度限制值。对于来自 Kafka 的每个 FlowFile,我想检查 FlowFile 中的 speedlimit 值是否超过从 DB 检索到的 speedlimit 值。但是来自 DB 的值会在 24 小时内作为 FlowFile 处理一次,并且不可用于比较。
我有以下流程:1)ExecuteSQL->ConvertAvroToJson->EvaluateJsonPath-> 从这里我将速度限制的值传递给以下流程到处理器 RoutesAttribute。2)ConsumeKafka->EvaluateJsonPath->RouteAttributes(RouteAtrribute从上面的流中获取速度限制,但它只在24小时内获取一次这个值。如何将这个值永久存储在内存中??)
解决方案
根据您的描述,我认为这篇关于 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
推荐阅读
- uwsgi - 普罗米修斯无法抓取 uwsgi
- azure - 使用 Azure B2C 保护 BLOB 存储中的资产
- javascript - 有没有办法覆盖对象属性以将其变成特殊的东西
- java - 在 Windows 上使用 Groovy 模板引擎时编写 Unix 行结束符
- reactjs - 为什么我的块只保存前一个状态而不是当前状态?
- python - Selenium driver.find_elements_by_xpath;为什么没有返回数据
- encryption - 尝试加密 EKS 中的现有 PV
- java - 如何在不违反 SonarQube 的情况下抛出已检查异常?
- java - try 和 catch 是否被认为是 if 之后的一个语句?
- javascript - 如何反转这个命令?