【问题标题】:python UDF version with Jython/Pig带有 Jython/Pig 的 python UDF 版本
【发布时间】:2013-07-16 16:40:08
【问题描述】:

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

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

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

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

感谢您的帮助!

【问题讨论】:

    标签: python jython apache-pig


    【解决方案1】:

    要获取您正在使用的版本,您可以这样做:

    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 的稳定版本是2.5.3,所以这是 Pig 正在使用的版本。有一个 2.7 的测试版。

    【讨论】:

    • 谢谢。 sys.version 有效。你是对的,Pig 与 2.5 捆绑在一起。因此,我没有想办法将 2.7 与 Pig(我的搜索中不存在)一起使用,而是找到了一种在我自己的 python 代码中实现 erf 函数的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2014-10-20
    • 1970-01-01
    • 2017-05-02
    • 2013-12-31
    • 2015-12-15
    • 1970-01-01
    相关资源
    最近更新 更多