如何在 Nifi 的虚拟环境中运行具有依赖关系的 python 脚本?

Posted

技术标签:

【中文标题】如何在 Nifi 的虚拟环境中运行具有依赖关系的 python 脚本?【英文标题】:How to run a python script with dependencies in a virtual environment in Nifi? 【发布时间】:2020-08-04 22:34:32 【问题描述】:

在 Nifi 中有没有办法运行一个 python 脚本,该脚本具有从不同文件夹导入的模块、在 pipfile 中指定的要求并有要传递的参数?

简而言之,如何使用 Nifi 执行通常在我的虚拟环境中运行的 python 脚本?

我的最终目标是使用 Get File 获取文件并将其发布到 API。我试过执行进程,执行流命令处理器。

【问题讨论】:

我不确定我是否理解了这个问题——NiFi 能够获取文件、读取内容并将内容本地发布到 API。为什么这项任务需要 Python? 您在寻找 executeScript 处理器吗? nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/… 嗨@Andy,是的,但我在拿起一个文件后还有一堆处理,目前它在python中.. 【参考方案1】:

要使用 Python 对流文件执行后续处理,您可以使用 ExecuteStreamCommandExecuteScript/InvokeScriptedProcessor 处理器。

ExecuteStreamCommand 处理器将运行外部 shell 命令,例如 python3 my_python_script.py -arg1 string -arg2 213,它可以包装自定义 Python 代码并使用 STDIN 传递现有流文件内容,并使用 STDOUT 捕获新的流文件内容。填充处理器的 Command ArgumentsCommand Path 属性以找到您的 python 可执行文件并提供 CLI 参数,包括通过 NiFi 表达式语言的流文件属性。有关示例,请参阅this answer。

ExecuteScript 处理器在与 NiFi 相同的 JVM 中运行 Jython 代码(Python 但无法访问本机库,仅兼容 Python 2.7,以及由于 JSR-223 导致的一些其他限制)。您可以直接使用 Python 代码处理流文件属性和内容。有关详细信息,请参阅 this answer 或 this answer。

【讨论】:

以上是关于如何在 Nifi 的虚拟环境中运行具有依赖关系的 python 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

大数据Nifi环境搭建

如何在虚拟环境中运行 Spyder?

VitrualBoxvagranthomestead的关系

NiFi Bootstrap 如何确定 NiFi 是不是未运行?

如何找出哪个 gem 具有特定的依赖关系?

pycharm虚拟环境中的项目如何在别的电脑上运行?