我使用Python库simplejson在Jython中写一个小猪UDF有问题。 我需要因为Jython的独立-2.5.2.jar不拿出一个JSON库。 我使用的编译2013年9月3日,20时25分46秒的Apache版本猪0.11.0-cdh4.4.0(rexported),并根据文件http://pig.apache.org/docs/r0.11.1/udf的.html#蟒蛇先进 “你可以在你的Python脚本导入Python模块猪解析Python的递归的依赖关系,这意味着猪会自动发货所有相关Python模块到后端Python模块应在Jython的搜索路径中找到:。JYTHON_HOME, JYTHON_PATH,或当前目录。“ 所以,我下载从图书馆https://pypi.python.org/pypi/simplejson/ ,在我的工作目录解压,然后我的脚本在本地模式下工作(使用-x本地)。 然而在集群模式下,我得到这个错误在任务追踪器的故障日志:
Caused by: org.apache.pig.backend.executionengine.ExecException: ERROR 1121: Python Error. Traceback (most recent call last):
File "ejercicio4-udfs.py", line 8, in <module>
ImportError: No module named simplejson
at org.apache.pig.scripting.jython.JythonScriptEngine$Interpreter.execfile(JythonScriptEngine.java:231)
at org.apache.pig.scripting.jython.JythonScriptEngine$Interpreter.init(JythonScriptEngine.java:158)
at org.apache.pig.scripting.jython.JythonScriptEngine.getFunction(JythonScriptEngine.java:349)
at org.apache.pig.scripting.jython.JythonFunction.<init>(JythonFunction.java:55)
... 92 more
Caused by: Traceback (most recent call last):
File "ejercicio4-udfs.py", line 8, in <module>
ImportError: No module named simplejson
我已经试过几件事情,就像拉拉链simplejson并注册拉链,并试图用sys.path.append(“simplejson.zip”)来访问它,我也试着用:
export JYTHONPATH=$JYTHONPATH:$(pwd)/simplejson.zip; pig script.pig
并且
pig -Dmapred.cache.files="simplejson.zip#simplejson.zip" -Dmapred.create.symlink=yes script.zip