错误1121 Jython中引入外部库在猪UDF(Error 1121 importing exte

2019-10-19 07:04发布

我使用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

Answer 1:

我不知道如果我的回答来得太晚了,但我设法在UDF导入simplejson。

这是我如何做的:

我下载simplejson,并把它变成一个lib文件夹,然后在我的UDF我这样做:

import sys
sys.path.append('/path/to/your/lib/folder')
import simplejson as json

然后我设法做json.loads()没有我的群集上的任何问题。

希望能帮助到你



文章来源: Error 1121 importing external library in Pig UDF in Jython