NiFi:无法将外部库添加到 Python 的 ExecuteScript 处理器

卡特琳娜·霍特克维奇

我想在我的 NiFi jython ExecuteScript 处理器中为 Impala 使用 Python DB 客户端。

我已经安装了所需的模块,pip install impyla并在 ExecuteScript 处理器的模块目录字段中指定了它的路径。

之后我运行脚本并出现错误 javax.script.ScriptException: ImportError: No module named _bitarray

随着pip show bitarray我发现这个模块的位置,并把它添加到模块目录域(用逗号分隔),并为了以防万一重启NiFi。

但它没有帮助。我也有同样的错误。

经过一番研究,我发现 bitarray 实际上是一个 C 扩展。

_bitarray出现在下一行bitarray/__init__.py

from bitarray._bitarray import _bitarray, bitdiff, bits2bytes, _sysinfo

反过来,_bitarray它存储在_bitarray.so我在模块目录中指定的同一目录中的文件中。

有人可以帮助我如何加载 bitarray 模块吗?

完整的堆栈跟踪:

2017-07-12 15:00:57,627 错误 [Timer-Driven Process Thread-5] oanifi.processors.script.ExecuteScript org.apache.nifi.processor.exception.ProcessException: javax.script.ScriptException: ImportError: No module named _bitarray 在 org.apache.nifi.processors.script.ExecuteScript.onTrigger(ExecuteScript.java:214) ~[nifi-scripting-processors-1.1.2.jar:1.1.2] 在 org.apache 的第 1 行。 nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1099) [nifi-framework-core-1.1.2.jar:1.1.2] 在 org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java: 136) [nifi-framework-core-1.1.2.jar:1.1.2] 在 org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:47) [nifi-framework-core-1.1.2 .jar:1.1.2] 在 org.apache.nifi.controller.scheduling。TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:132) [nifi-framework-core-1.1.2.jar:1.1.2] 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na: 1.8.0_131] 在 java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_131] 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:1.8.0_131) :1.8.0_131] 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_131] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:11.8.0_131) :1.8.0_131] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] 在 java.lang.Thread.run(Thread.java:748) [na:1.8 .0_131] 引起:javax.script.ScriptException:ImportError:在 org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:202) ~[jython-standalone-2.7.0.jar:na] 在 org.python.jsr223.PyScriptEngine.eval 的第 1 行中没有名为 _bitarray 的模块(PyScriptEngine.java:42) ~[jython-standalone-2.7.0.jar:na] 在 org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:31) ~[jython-standalone-2.7.0.jar: na] 在 javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264) ~[na:1.8.0_131] 在 org.apache.nifi.processors.script.impl.JythonScriptEngineConfigurator.eval(JythonScriptEngineConfigurator.java:59) ~[ nifi-scripting-processors-1.1.2.jar:1.1.2] 在 org.apache.nifi.processors.script.ExecuteScript.onTrigger(ExecuteScript.java:204) ~[nifi-scripting-processors-1.1.2.jar :1.1.2] ... 省略了 11 个常见帧 原因:org.python.core.PyException: null at org.python.core.Py.ImportError(Py.java:328) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_logic(imp.java:912) ~[jython-standalone-2.7.0.jar:na] 在 org. python.core.imp.import_module_level(imp.java:978) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importName(imp.java:1062) ~[jython-standalone -2.7.0.jar:na] 在 org.python.core.ImportFunction。在 org.python.core.PyObject调用内置.java:1280)~[jython-standalone-2.7.0.jar:na]。在 org.python.core调用(PyObject.java:431) ~[jython-standalone-2.7.0.jar:na]。内置. 导入内置.java:1232)~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importFromAs(imp.java:1156) ~[jython-standalone-2.7.0.jar :na] 在 org.python.core.imp.importFrom(imp.java:1132) ~[jython-standalone-2.7.0.jar:na] 在 bitarray$py.f$0(/usr/local/lib/python2 0.7 / DIST-包/ bitarray /初始化的.py:131)〜[NA:NA]在bitarray $ py.call_function(/usr/local/lib/python2.7/dist-packages/bitarray/ INIT.py) ~[na:na] 在 org.python.core.PyTableCode.call(PyTableCode.java:167) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.PyCode.call (PyCode.java:18) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.createFromCode(imp.java:436) ~[jython-standalone-2.7.0.jar: na] 在 org.python.core.imp.createFromPyClass(imp.java:236) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.createFromPyClass(imp.java:205) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.loadFromSource(imp.java:651) ~[jython-standalone-2.7.0.jar:na] 在 org.python。 core.imp.find_module(imp.java:543) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_next(imp.java:840) ~[jython-standalone-2.7 .0.jar:na] 在 org.python.core.imp.import_module_level(imp.java:959) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importName(imp .java:第 1062 章)~[jython-standalone-2.7.0.jar:na] 在 org.python.core.ImportFunction。在 org.python.core.PyObject调用内置.java:1280)~[jython-standalone-2.7.0.jar:na]。在 org.python.core调用(PyObject.java:431) ~[jython-standalone-2.7.0.jar:na]。内置. 导入内置.java:1232) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importFromAs(imp.java:1156) ~[jython-standalone-2.7.0.jar:na]在 org.python.core.imp.importFrom(imp.java:1132) ~[jython-standalone-2.7.0.jar:na] 在 impala.hiveserver2$py.f$0(/usr/local/lib/python2. 7/dist-packages/impala/hiveserver2.py:1211) ~[na:na] at impala.hiveserver2$py.call_function(/usr/local/lib/python2.7/dist-packages/impala/hiveserver2.py) ~[na:na] 在 org.python.core.PyTableCode.call(PyTableCode.java:167) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.PyCode.call(PyCode. java:18) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.createFromCode(imp.java:436) ~[jython-standalone-2.7.0.jar:na] 在org.python.core.imp.createFromPyClass(imp.java:236) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.createFromPyClass(imp.java:205) ~[jython -standalone-2.7.0。jar:na] 在 org.python.core.imp.loadFromSource(imp.java:651) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.find_module(imp.java: 543) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.PyModule.impAttr(PyModule.java:106) ~[jython-standalone-2.7.0.jar:na] 在 org. python.core.imp.import_next(imp.java:842) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_logic(imp.java:904) ~[jython-standalone -2.7.0.jar:na] 在 org.python.core.imp.import_module_level(imp.java:978) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importName (imp.java:1062) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.ImportFunction。impAttr(PyModule.java:106) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_next(imp.java:842) ~[jython-standalone-2.7.0.jar :na] 在 org.python.core.imp.import_logic(imp.java:904) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_module_level(imp.java:978 ) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importName(imp.java:1062) ~[jython-standalone-2.7.0.jar:na] 在 org.python .core.ImportFunction。impAttr(PyModule.java:106) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_next(imp.java:842) ~[jython-standalone-2.7.0.jar :na] 在 org.python.core.imp.import_logic(imp.java:904) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_module_level(imp.java:978 ) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importName(imp.java:1062) ~[jython-standalone-2.7.0.jar:na] 在 org.python .core.ImportFunction。在 org.python.core.PyObject调用内置.java:1280)~[jython-standalone-2.7.0.jar:na]。在 org.python.core调用(PyObject.java:431) ~[jython-standalone-2.7.0.jar:na]。内置. 导入内置.java:1232) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importOneAs(imp.java:1099) ~[jython-standalone-2.7.0.jar:na]在impala.dbapi$py.f$0(/usr/local/lib/python2.7/dist-packages/impala/dbapi.py:193) ~[na:na] 在impala.dbapi$py.call_function(/usr /local/lib/python2.7/dist-packages/impala/dbapi.py) ~[na:na] 在 org.python.core.PyTableCode.call(PyTableCode.java:167) ~[jython-standalone-2.7. 0.jar:na] 在 org.python.core.PyCode.call(PyCode.java:18) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.createFromCode(imp. java:436) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.createFromPyClass(imp.java:236) ~[jython-standalone-2.7.0.jar:na] 在org.python.core.imp.createFromPyClass(imp.java:205) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.loadFromSource(imp.java:651) ~[jython -standalone-2.7.0.jar:na] 在 org.python。core.imp.find_module(imp.java:543) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.PyModule.impAttr(PyModule.java:106) ~[jython-standalone-2.7 .0.jar:na] 在 org.python.core.imp.import_next(imp.java:842) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_logic(imp .java:904) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.import_module_level(imp.java:978) ~[jython-standalone-2.7.0.jar:na]在 org.python.core.imp.importName(imp.java:1062) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.ImportFunction。na] 在 org.python.core.imp.import_module_level(imp.java:978) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importName(imp.java:1062) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.ImportFunction。na] 在 org.python.core.imp.import_module_level(imp.java:978) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importName(imp.java:1062) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.ImportFunction。在 org.python.core.PyObject调用内置.java:1280)~[jython-standalone-2.7.0.jar:na]。在 org.python.core调用(PyObject.java:431) ~[jython-standalone-2.7.0.jar:na]。内置. 导入内置.java:1232) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.imp.importFromAs(imp.java:1156) ~[jython-standalone-2.7.0.jar:na]在 org.python.core.imp.importFrom(imp.java:1132) ~[jython-standalone-2.7.0.jar:na] 在 org.python.pycode._pyx1450.f$0(:5) ~[na: na] 在 org.python.pycode._pyx1450.call_function() ~[na:na] 在 org.python.core.PyTableCode.call(PyTableCode.java:167) ~[jython-standalone-2.7.0.jar:na ] 在 org.python.core.PyCode.call(PyCode.java:18) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core.Py.runCode(Py.java:1386) ~ [jython-standalone-2.7.0.jar:na] 在 org.python.core。内置.eval( builtin .java:497) ~[jython-standalone-2.7.0.jar:na] 在 org.python.core。内置.eval(内置.java:501) ~[jython-standalone-2.7.0.jar:na] 在 org.python.util.PythonInterpreter.eval(PythonInterpreter.java:259) ~[jython-standalone-2.7.0.jar:na]在 org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:40) ~[jython-standalone-2.7.0.jar:na]

马蒂布

Jython 无法加载本机(例如 CPython)模块,有关更多详细信息,请参阅此相关 SO 答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章