'No module named happybase' 当 运行 来自 PIG
'No module named happybase' when running from PIG
我有一个 Python UDF,它使用 Happybase 连接到 HBase。如果我 运行 来自 Python 2.7 的代码,它可以完美运行。
然而,当我从 Pig 0.15.0 调用 Python UDF 时,出现以下错误:
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1121: Python Error. Traceback (most recent call last): import happybase ImportError: No module named happybase
在我的 Pig 脚本中,我正在注册我的 Python 脚本 (pigtest.py),如下所示:
REGISTER 'pigtest.py' using jython as myfuncs;
我尝试在我的 Python 脚本中设置 Happybase 路径如下,但这并没有什么不同:
import sys
sys.path.append('/usr/local/lib/python2.7/dist-packages/happybase')
import happybase
我还尝试将“/usr/local/lib/python2.7/dist-packages/happybase”添加到 .bashrc 文件中的 JYTHON_PATH(我是在 Ubuntu) 但出现同样的错误。
我觉得我需要在某个地方设置 Happybase 路径,但我不知道在哪里。
我在 Jython 用户邮件列表的帮助下解决了这个问题。您需要通过执行以下操作之一指定 Happybase 文件夹的父目录,而不是 Happybase 目录本身的路径:
将位置附加到 Python 脚本中的 sys.path:
import sys
sys.path.append('/usr/local/lib/python2.7/dist-packages')
import happybase
或
将位置作为环境变量添加到 JYTHONPATH(不是 JYTHON_PATH!):
export JYTHONPATH = $JYTHONPATH:/usr/local/lib/python2.7/dist-packages
我有一个 Python UDF,它使用 Happybase 连接到 HBase。如果我 运行 来自 Python 2.7 的代码,它可以完美运行。
然而,当我从 Pig 0.15.0 调用 Python UDF 时,出现以下错误:
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1121: Python Error. Traceback (most recent call last): import happybase ImportError: No module named happybase
在我的 Pig 脚本中,我正在注册我的 Python 脚本 (pigtest.py),如下所示:
REGISTER 'pigtest.py' using jython as myfuncs;
我尝试在我的 Python 脚本中设置 Happybase 路径如下,但这并没有什么不同:
import sys
sys.path.append('/usr/local/lib/python2.7/dist-packages/happybase')
import happybase
我还尝试将“/usr/local/lib/python2.7/dist-packages/happybase”添加到 .bashrc 文件中的 JYTHON_PATH(我是在 Ubuntu) 但出现同样的错误。
我觉得我需要在某个地方设置 Happybase 路径,但我不知道在哪里。
我在 Jython 用户邮件列表的帮助下解决了这个问题。您需要通过执行以下操作之一指定 Happybase 文件夹的父目录,而不是 Happybase 目录本身的路径:
将位置附加到 Python 脚本中的 sys.path:
import sys
sys.path.append('/usr/local/lib/python2.7/dist-packages')
import happybase
或
将位置作为环境变量添加到 JYTHONPATH(不是 JYTHON_PATH!):
export JYTHONPATH = $JYTHONPATH:/usr/local/lib/python2.7/dist-packages