Apache pig pig jython udf导入失败

Apache pig pig jython udf导入失败,apache-pig,jython,Apache Pig,Jython,该问题涉及本地pig 0.11.1运行,但最终在EMR的pig上具有使用前景。我正在尝试编写一个带有“re”模块导入的jython UDF,在我将“xyz.py”注册到jython为xyz之后,我得到了这个结果: 2013-11-06 13:59:47,259 [main] WARN org.apache.pig.scripting.jython.JythonScriptEngine - module file does not exist: re, /home/amit/Servers/

该问题涉及本地pig 0.11.1运行,但最终在EMR的pig上具有使用前景。我正在尝试编写一个带有“re”模块导入的jython UDF,在我
将“xyz.py”注册到jython为xyz之后,我得到了这个结果:

2013-11-06 13:59:47,259 [main] WARN  org.apache.pig.scripting.jython.JythonScriptEngine -   module file does not exist: re, /home/amit/Servers/Pig/pig-0.11.1/lib/jython-standalone-2.5.3.jar/Lib/re.py
udf只是一个简单的例子:

import re
我的.bashrc中有
PIG_HOME
设置,问题是基本上出了什么问题?值得注意的是,下面的示例是有效的

import sys
print(sys.path)
谢谢,
Amit

看来安装缺少stdlib或找不到它
import sys
应该可以工作,因为它内置于运行时本身,而不像
re
模块,后者位于运行时之外的单独python模块中。尝试导入标准库中的另一个模块,如
unittest
。我想你也会有类似的结果


@Amit我下载了相同的版本进行确认,并且我能够在UDF中导入re模块。听起来你的本地安装有问题。我建议尝试以下方法:

  • 删除并重新下载清管器tgz文件
  • 如果问题仍然存在,请确认类路径中没有其他jython jar。Pig与/Lib目录中的Jython jar捆绑在一起。这个jar的内部是python stdlib(包括re模块)。Jython还作为一个“裸”jar捆绑在一起,不包括stdlib。如果这在你的类路径上,它可能会导致你的问题

  • 在尝试导入
    unittest
    时,同样的错误确实出现了。除了解包它的二进制包,设置
    Pig\u HOME
    并将其添加到
    PATH
    env变量之外,我真的没有安装Pig。为了导入前面提到的jython模块,还应该设置什么?对于那些感兴趣的人,我目前正在使用java.util.regex导入模式中的
    ,它喜欢做regex和其他与模式匹配相关的事情——这是一种技巧,但很有效。你使用的是什么版本的Pig?听起来这可能是软件包中的一个bug。Apache Pig版本0.11.1(r1459641)于2013年3月22日编译,02:13:53I遇到了相同的问题,并按如下所述解决了该问题: