当我使用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?
感谢您的帮助!
答案 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。