0

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

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

AttributeError:类型对象“org.python.modules.math”没有属性“erf”

我的猜测是 Jython 使用的是 2.7 之前的 Python 版本?

谢谢你的帮助!

4

1 回答 1

0

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

我的UDFS.py

#!/usr/bin/python

import sys

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

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

但是,关于 Jython 是 2.7 之前的版本(有点),您是对的。目前 Jython 的稳定版本是2.5.3,所以这是 Pig 正在使用的版本。有一个 2.7 的测试版。

于 2013-07-18T16:07:39.117 回答