带有Jython / Pig的python UDF版本

时间:2013-07-17 22:34:26

标签: python jython apache-pig

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

具体来说,我的问题在于我的UDF,我需要在数学模块math.erf()中使用一个函数,这是Python 2.7版本中新引入的。我在我的机器上安装了Python 2.7并且独立的Python程序运行正常但是当我在Pig中运行它作为Python UDF时,我得到了这个:

AttributeError:type object'org.python.modules.math'没有属性'erf'

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

要获得您正在使用的版本,您可以执行以下操作:

<强> myUDFS.py

#!/usr/bin/python

import sys

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

如果您在本地运行脚本,则该版本将直接打印到stdout。要在远程运行时查看sys.version的输出,您必须检查作业跟踪器上的日志。

然而,你说Jython是2.7之前的(你的类型)是正确的。目前Jython的稳定版本是2.5.3,所以这是Pig正在使用的版本。测试版的版本为2.7。