我想運行一個簡單的Python UDF豬亞馬遜EMR並拋出Java序列化錯誤:豬AWS EMR Jython的序列化錯誤
java.io.IOException: Deserialization error: could not instantiate 'org.apache.pig.scripting.jython.JythonFunction' with arguments '[/tmp/pig4877832484731242596tmp/simple.py, aprs]'
我在這裏和其他地方搜查,看到有些相關問題併發布瞭解決方案,但沒有一個解決方案似乎適用,其中包括一年前的一個post,似乎表明這對Amazon EMR上的Pig 0.9.1起作用。
$ pig --version
Apache Pig version 0.9.2-amzn (rexported)
compiled Aug 06 2012, 20:34:29
$ hadoop version
Hadoop 1.0.3
這裏是我瑣碎蟒蛇UDF:
#/usr/bin/python
@outputSchema("data:chararray")
def aprs(l):
return l
而這裏的豬腳本調用,顯示UDF加載和@outputSchema做了正確的事情:
grunt> Register 's3n://n2ygk/simple.py' using jython as myudf;
grunt> raw = LOAD 's3n://aprs-is/small-sample.log' USING TextLoader as (line:chararray);
grunt> cooked = LIMIT raw 1000;
grunt> aprs = FOREACH cooked GENERATE FLATTEN(myudf.aprs(line));
grunt> DESCRIBE aprs;
aprs: {data: chararray}
grunt> dump aprs;
任何建議?
修復就是使用Pig 0.11.1! – n2ygk
你是否在本地模式下試過這種豬? – Eli