'没有名为happybase的模块'从PIG

时间:2015-12-15 12:14:49

标签: python hbase apache-pig jython happybase

我有一个使用Happybase连接到HBase的Python UDF。如果我从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路径,但我无法弄清楚在哪里。

1 个答案:

答案 0 :(得分: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