在 Nifi ExecuteScript 中导入 Python 模块

Posted

技术标签:

【中文标题】在 Nifi ExecuteScript 中导入 Python 模块【英文标题】:Import Python Modules in Nifi ExecuteScript 【发布时间】:2018-02-27 16:42:07 【问题描述】:

当我在 ExecuteScript 处理器中运行 python 作业时会发生这种情况。

我已经多次搜索答案,但找不到有效的解决方案。

一个答案说我应该添加这样的代码来包含我的外部python库,我尝试了但错误仍然存​​在。

import sys
sys.path.append('/usr/lib64/python2.7/site-packages')

我还在处理器中添加了模块属性。但还是不行。

【问题讨论】:

【参考方案1】:

我的理解是,当您使用 ExecuteScript 处理器时,您不需要在 Python 脚本中使用 import sys:这是为您隐式完成的。此外,由于您已在处理器配置中定义了 Module Directory 属性,因此您无需将其添加到脚本中的路径中。

我们看不到你的脚本第一行半。大概你在第 4 行有一个 import siximport X from six

错误是在模块目录中找不到名为six的模块,所以可能的原因是:

该文件夹中确实不存在该库 您在库中复制了错误版本的 python (jython) NiFi 无权读取该库(您是如何将其复制到那里的?)

这里还有其他关于加载 python 库问题的问题,例如:

Cannot import a python module that is definitely installed (mechanize)

【讨论】:

【参考方案2】:

我仍在解决这个问题,但我发现我们的 nifi 设置中的工作目录始终是这样的: /usr/hdf/3.3.1.0-10/nifi

不管模块目录设置成什么。

【讨论】:

以上是关于在 Nifi ExecuteScript 中导入 Python 模块的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

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

大数据Nifi处理器