Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jython/Pig的python UDF版本_Python_Jython_Apache Pig - Fatal编程技术网

使用Jython/Pig的python UDF版本

使用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”

当我使用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之前的版本


谢谢你的帮助

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

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函数的方法。