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 代码。
解决方法是使用ExecuteProcess
或ExecuteStreamCommand
并在命令行调用python <my_script.py>
,它可以处理各种Python版本、原生模块、等等。此执行将发生在 JVM 之外,并使用真正的 Python,而不是 Jython。
总结 Andy 所说的,这个 Levensthein module 是用 C 编写的,不能由 Java 虚拟机执行,假设您是 运行 Jython 实现。
我正在尝试将模块导入 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 代码。
解决方法是使用ExecuteProcess
或ExecuteStreamCommand
并在命令行调用python <my_script.py>
,它可以处理各种Python版本、原生模块、等等。此执行将发生在 JVM 之外,并使用真正的 Python,而不是 Jython。
总结 Andy 所说的,这个 Levensthein module 是用 C 编写的,不能由 Java 虚拟机执行,假设您是 运行 Jython 实现。