0

我有一个 Python UDF,它使用 Happybase 连接到 HBase。如果我从 Python 2.7 运行代码,它会完美运行。

但是,当我从 Pig 0.15.0 调用 Python UDF 时,出现以下错误:

错误 org.apache.pig.tools.grunt.Grunt - 错误 1121:Python 错误。Traceback(最近一次调用最后):import happybase ImportError:没有名为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 路径,但我不知道在哪里。

4

1 回答 1

1

我能够在 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
于 2015-12-18T11:22:08.150 回答