在尽我所能找到以前的问题和与此问题相关的示例后,仍然没有找到我正在寻找的答案,我想我会自己提交一个问题。
由于以下原因,ExecuteStreamCommand 对我来说似乎是完美的处理器:
- 我能够执行任何 Python 脚本并避免使用 Jython(与 ExecuteScript 类似)。 Jython 不适合我。
- 我可以接受 FlowFiles。这是必要的,因为我的脚本是为了消耗先前处理器的输出而制作的。此外,我喜欢将数据保存在“NiFi 管理”之下的想法。
- 它写入对路由有用的“执行状态”。
简而言之,我试图用 ExecuteStreamCommand 做的是:
- 摄取前一个处理器的输出(准确地说,Scrapy 蜘蛛输出包含 JSON 行的文本文件)
- 调用 python 脚本(例如
python3 my_script.py
)
- 加载在我的 python 脚本中摄取的 FlowFile。
- 选择流文件的内容。
- 在 python 中对 FlowFile 的内容进行操作。
- 输出原始 FlowFile 的更新版本或创建新版本。
- 使用更新/新的 FlowFile 继续我的 NiFi 流程。
为了清楚起见,我目前不明白:
- 如何调用 python 脚本(从 ExecuteStreamCommand 处理器)
- 如何从 Python 中加载 FlowFile
- 如何从 Python 中更新或创建新的 FlowFile
- 如何将更新后的 FlowFile 从 Python 输出回 NiFi。
我遇到过 ExecuteScript 的各种示例,但不幸的是,这些示例并不能完全转化为 ExecuteStreamCommand 的使用。
先感谢您。任何建议表示赞赏。
从你的问题来看,你说你需要调用Python脚本而不使用InvokeScriptedProcessor
or ExecuteScript
处理器,因为您无法使用 Jython。考虑到这一要求,您仍然应该能够实现您的目标。虽然需要对框架有一定的了解,但所有这些信息都来自ExecuteStreamCommand文档 https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-standard-nar/1.5.0/org.apache.nifi.processors.standard.ExecuteStreamCommand/index.html.
您的“我目前不明白”部分:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)