NIFI EXECUTESCRIPT 处理器失败 - 未找到模块

NIFI EXECUTESCRIPT Processor failing - No MODULE FOUND

我正在尝试将模块导入 nifi 中的 executescript 处理器。 按照建议,我给出了模块目录的完整路径。

示例: 模块目录:/var/lib/nifi/Levenshtein --> 其中包含脚本所需的文件。

此外,在脚本中我还设置了指向使用该模块目录的系统路径 我的代码看起来像这样

import re
import datetime
import sys
sys.path.append('/var/lib/nifi/Levenshtein')

import Levenshtein

当我是 运行 带有上述代码的处理器时,它失败了。

ERROR: No Module named Levenshtein in at line number 3.

如果这个特定的库是 "native module"(编译的 C 代码),Jython(ExecuteScript 使用的 Python 执行引擎)将无法加载它。 ExecuteScript 在 NiFi 中使用 Python 只能使用纯 Python 代码。

解决方法是使用ExecuteProcessExecuteStreamCommand并在命令行调用python <my_script.py>,它可以处理各种Python版本、原生模块、等等。此执行将发生在 JVM 之外,并使用真正的 Python,而不是 Jython。

总结 Andy 所说的,这个 Levensthein module 是用 C 编写的,不能由 Java 虚拟机执行,假设您是 运行 Jython 实现。