Я пытаюсь запустить тривиальный Python UDF в Свинье на Amazon EMR и бросает ошибку сериализации:свинья AWS ОГО Jython ошибки сериализация
java.io.IOException: Deserialization error: could not instantiate 'org.apache.pig.scripting.jython.JythonFunction' with arguments '[/tmp/pig4877832484731242596tmp/simple.py, aprs]'
Я искал здесь и в других местах и видел несколько связанных вопросы и решения, но ни одно из решений, похоже, не применяется, в том числе один post более года назад, который, казалось, указывал, что это работает с Pig 0.9.1 на Amazon EMR.
$ 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;
Любые предложения ?
Исправление - использовать Свинья 0.11.1! – n2ygk
Вы пробовали это в Pig в локальном режиме? – Eli