我有一个处理器,生成JSON格式的时间序列数据。根据接收到的数据,我需要在python上使用机器学习算法进行预测。然后将新的预测值写入另一个流文件。
问题是:当你运行这样的python脚本时,它必须执行许多大规模的预处理操作:查询数据库、创建复杂的数据结构、初始化预测模型等。
如果您使用ExecuteStreamCommand,那么对于每个流文件,脚本每次都会运行。这是真的吗?
我可以在NIFI中创建一个python脚本,该脚本一次启动并多次接收流文件,存储以前接收数据的历史记录。或者我需要创建一个HTTP服务来接收来自NIFI的数据吗?
你有几个选择:
做一个可以做到这一点的自定义处理器。Java更合适。我相信你几乎可以用Java你只需要找到库。是的,一些初始化和预处理可能会有一些问题,这些问题可以由nifi的init函数处理,它允许你保留某些组件的状态。
在我的用例中,我必须构建一个可以接收图像并应用计算图像中人数的自定义处理器。为此,我必须在init方法中加载一次深度学习模型,然后通过触发器方法,它可以在每次处理图像时引用该模型。