无法从Nifi ExecuteScript处理器

时间:2017-08-03 20:51:33

标签: python apache-nifi

我一直在尝试在NiFi的ExecuteScript处理器中运行python脚本。虽然这里的问题是我没有服务器文件位置访问权限,并且所有python库都安装在" / data / jython"," / data / jython / Lib / site-包/"和" data / nltk"

下面是我的python脚本的导入部分:

import json, traceback, pycountry, requests, geocoder, re, sys, nltk
from nltk.sentiment.vader import SentimentIntensityAnalyzer
from nltk.corpus import stopwords
from java.nio.charset import StandardCharsets
from org.apache.commons.io import IOUtils
from org.apache.nifi.processor.io import StreamCallback
from org.python.core.util import StringUtil

我添加了对包/库的路径引用: enter image description here

下面是错误消息的屏幕截图: enter image description here

我有什么遗失的吗?我已经提到了另一个答案here,但无法弄清楚我的代码是什么问题。

2 个答案:

答案 0 :(得分:2)

正如其他答案所述,Apache NiFi的ExecuteScript处理器使用 Jython ,而不是 Python 。 Jython库有一个限制,它无法处理本机模块(以.so结尾的模块或编译的C代码等)。 pycountry 模块很可能包含一些本机模块。您可以尝试一下Matt Burgess在NiFi Developers Mailing List here上提出的解决方法。

答案 1 :(得分:0)

ExecuteScript处理器使用自己的Jython Engine来执行python脚本。 由于您导入的库在NIFI inbuild Jython Engine中不可用,因此抛出错误。

解决方案:

如果我们的机器上安装了python,并且所有这些库(安装了NIFI的机器)都可以使用那个python引擎 执行你的脚本。你可以使用ExecuteProcess处理器执行你的python代码。 see the configuration of ExecuteProcess.