2013-07-17 63 views
0

当我用Pig做Python UDF时,我们如何知道它使用的是哪个版本的Python?是否可以使用特定版本的Python?python UDF版本与Jython /猪

特别是我的问题是在我的UDF中,我需要使用Python 2.7版中新引入的数学模块math.erf()中的函数。我在我的机器上安装了Python 2.7并且独立的Python程序运行正常,但是当我将它作为Python UDF运行时,我得到了以下结果:

AttributeError:type object'org.python.modules.math'has no attribute' erf'

我的猜测是Jython正在使用一些Python 2.7之前的版本?

感谢您的帮助!如果你运行该脚本在本地,那么该版本将直接打印到stdout

myUDFS.py

#!/usr/bin/python 

import sys 

@outputSchema('bar: chararray') 
def my_func(foo): 
    print sys.version 
    return foo 

回答

0

为了让你使用,你可以做到这一点的版本。在远程运行时要查看sys.version的输出,您必须检查作业跟踪器上的日志。

然而,你对Jython在2.7之前是正确的(种类)。目前Jython的稳定版本是2.5.3,所以这是Pig正在使用的版本。有一个测试版的2.7。

+0

谢谢。 sys.version工作。你说得对,Pig与2.5捆绑在一起。因此,我找到了一种在我自己的python代码中实现erf函数的方法,而不是找出一种使用Pig的方法(在我的搜索中不存在)。 –