apache-nifi - NIFI EXECUTESCRIPT 处理器失败 - 未找到模块
问题描述
我正在尝试将模块导入 nifi 中的 executescript 处理器。正如建议的那样,我正在提供模块目录的完整路径。
示例:模块目录:/var/lib/nifi/Levenshtein --> 其中包含脚本所需的文件。
此外,在脚本中,我还设置了指向使用该模块目录的系统路径我的代码看起来像这样
import re
import datetime
import sys
sys.path.append('/var/lib/nifi/Levenshtein')
import Levenshtein
当我使用上述代码运行处理器时,它失败了。
错误:第 3 行没有名为 Levenshtein 的模块。
解决方案
如果此特定库是“本机模块”(编译的 C 代码),Jython(由 使用的 Python 执行引擎ExecuteScript
)将无法加载它。ExecuteScript
在 NiFi 中使用 Python 只能使用纯 Python 代码。
解决方法是在命令行上使用ExecuteProcess
orExecuteStreamCommand
和调用python <my_script.py>
,它可以处理各种 Python 版本、本机模块等。此执行将发生在 JVM 之外并使用真正的 Python,而不是 Jython。
推荐阅读
- pass-by-reference - 为什么 debug_backtrace 会抛出变量引用通知?
- python-3.x - 获取 docker 容器中当前 .py 文件的绝对路径
- nestjs - Nest / TypeORM:在先前定义关系后添加外键列清除数据
- iis - 计划 IIS 配置备份
- google-colaboratory - FileNotFoundError:找不到训练配置文件:baseline.topdown_confmaps.json
- c - 当子进程遇到等待指令时会发生什么?
- javascript - ReactJS React-router-dom 不显示页面 | 无法获取 /{location}
- wordpress - 来自类别的插件帖子的错误消息
- c# - 如何以编程方式测试 WiFi 直接连接?
- javascript - 在 Node.JS 中从谷歌驱动器下载公共图像