在 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 six
或 import 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 错误