在尽最大努力寻找相关问题和示例之后,仍然没有找到我所需要的答案,所以我决定提交一个问题。
由于以下原因,ExecuteStreamCommand 对我来说似乎是完美的处理器:
- 我可以执行任何 Python 脚本并避免使用 Jython(类似于 ExecuteScript)。对我来说,Jython 不是一个选项。
- 我可以接收 FlowFiles。这是必要的,因为我的脚本是用来消费先前处理器的输出的。此外,我喜欢将数据保留在“NiFi 管理”下的想法。
- 它会写入“执行状态”,这将有助于路由。
简而言之,我想要使用 ExecuteStreamCommand 做的事情是:
- 摄取先前处理器的输出(确切地说是 Scrapy 爬虫输出的带有 JSON 行的文本文件)
- 调用一个 Python 脚本(例如
python3 my_script.py
) - 在我的 Python 脚本中加载被摄取的 FlowFile。
- 选择 FlowFile 的内容。
- 在 Python 中操作 FlowFile 的内容。
- 输出原始 FlowFile 的更新版本或创建一个新的 FlowFile。
- 使用更新/新的 FlowFile 继续我的 NiFi 流程。
为了清晰起见,我目前不理解以下问题:
- 如何从 ExecuteStreamCommand 处理器中调用 Python 脚本
- 如何从 Python 中加载 FlowFile
- 如何在 Python 中更新或创建新的 FlowFile
- 如何将更新后的 FlowFile 从 Python 输出回 NiFi。
我已经看到过各种 ExecuteScript 的示例,但不幸的是这些示例并不能完全翻译成使用 ExecuteStreamCommand 的方式。
提前感谢您的帮助。任何建议都会受到赞赏。