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

Posted

技术标签:

【中文标题】NIFI EXECUTESCRIPT 处理器失败 - 未找到模块【英文标题】:NIFI EXECUTESCRIPT Processor failing - No MODULE FOUND 【发布时间】:2020-09-20 07:45:55 【问题描述】:

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

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

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

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

import Levenshtein

当我使用上述代码运行处理器时,它会失败。

错误:第 3 行没有名为 Levenshtein 的模块。

【问题讨论】:

@mattyb 如果你能帮忙的话。 【参考方案1】:

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

【讨论】:

感谢@Bugbeeb 的解释。【参考方案2】:

如果此特定库是“本机模块”(编译的 C 代码),Jython(ExecuteScript 使用的 Python 执行引擎)将无法加载它。 ExecuteScript 在 NiFi 中使用 Python 只能使用纯 Python 代码。

变通方法是使用ExecuteProcessExecuteStreamCommand,在命令行调用python <my_script.py>,可以处理各种Python版本、原生模块等。这个执行会发生在JVM之外,使用真实的Python,而不是 Jython。

【讨论】:

以上是关于NIFI EXECUTESCRIPT 处理器失败 - 未找到模块的主要内容,如果未能解决你的问题,请参考以下文章

python 从NiFi ExecuteScript处理器使用的Python脚本示例,它从传入的流文件中读取第一行。

如何使用 ExecuteScript 和 python 从 nifi 中的一个传入流文件创建多个流文件

xml Apache NiFi模板,使用ExecuteScript(使用Jython)执行JSON到JSON转换

大数据Nifi处理器

xml Apache NiFi的模板,它使用带Groovy的ExecuteScript发出SQL查询并生成包含CSV表示的流文件o

java.sql.Timestamp 和 timedelta 中不支持的操作数类型“+”的 NIFI Executescript UTC 错误