使用Jython/Pig的python UDF版本
当我使用Pig执行pythonudf时,我们如何知道它使用的是哪个版本的Python?是否可以使用特定版本的Python 具体地说,我的问题是在我的UDF中,我需要在数学模块math.erf()中使用一个函数,它是Python版本2.7中新引入的。我的机器上安装了Python 2.7,独立的Python程序运行良好,但当我以Python UDF的形式在Pig中运行它时,我得到了以下结果: AttributeError:类型对象“org.python.modules.math”没有属性“erf” 我猜Jython正在使用Python的2.7之前的版本使用Jython/Pig的python UDF版本,python,jython,apache-pig,Python,Jython,Apache Pig,当我使用Pig执行pythonudf时,我们如何知道它使用的是哪个版本的Python?是否可以使用特定版本的Python 具体地说,我的问题是在我的UDF中,我需要在数学模块math.erf()中使用一个函数,它是Python版本2.7中新引入的。我的机器上安装了Python 2.7,独立的Python程序运行良好,但当我以Python UDF的形式在Pig中运行它时,我得到了以下结果: AttributeError:类型对象“org.python.modules.math”没有属性“erf”
谢谢你的帮助 要获取您正在使用的版本,可以执行以下操作: myUDFS.py
#!/usr/bin/python
import sys
@outputSchema('bar: chararray')
def my_func(foo):
print sys.version
return foo
如果在本地运行脚本,则版本将直接打印到标准输出。要在远程运行时查看sys.version
的输出,必须检查作业跟踪器上的日志
然而,关于Jython是2.7之前的版本,你是对的。目前Jython的稳定版本是,所以这就是Pig正在使用的版本。有2.7的测试版。谢谢。sys.version可以工作。你是对的,猪是和2.5捆绑在一起的。因此,我没有找到一种将2.7与Pig一起使用的方法(在我的搜索中不存在这种方法),而是找到了一种在我自己的python代码中实现erf函数的方法。