2013-07-17 96 views
0

當我用Pig做Python UDF時,我們如何知道它使用的是哪個版本的Python?是否可以使用特定版本的Python?python UDF版本與Jython /豬

特別是我的問題是在我的UDF中,我需要使用Python 2.7版中新引入的數學模塊math.erf()中的函數。我在我的機器上安裝了Python 2.7並且獨立的Python程序運行正常,但是當我將它作爲Python UDF運行時,我得到了以下結果:

AttributeError:type object'org.python.modules.math'has no attribute' erf'

我的猜測是Jython正在使用一些Python 2.7之前的版本?

感謝您的幫助!如果你運行該腳本在本地,那麼該版本將直接打印到stdout

myUDFS.py

#!/usr/bin/python 

import sys 

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

回答

0

爲了讓你使用,你可以做到這一點的版本。在遠程運行時要查看sys.version的輸出,您必須檢查作業跟蹤器上的日誌。

然而,你對Jython在2.7之前是正確的(種類)。目前Jython的穩定版本是2.5.3,所以這是Pig正在使用的版本。有一個測試版的2.7。

+0

謝謝。 sys.version工作。你說得對,Pig與2.5捆綁在一起。因此,我找到了一種在我自己的python代碼中實現erf函數的方法,而不是找出一種使用Pig的方法(在我的搜索中不存在)。 –