'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