【发布时间】:2014-02-01 21:42:46
【问题描述】:
我在 jython 中使用 python 库 simplejson 编写 Pig UDF 时遇到问题。我需要,因为 jython-standalone-2.5.2.jar 没有 JSON 库。我正在使用 2013 年 9 月 3 日 20:25:46 编译的 Apache Pig 版本 0.11.0-cdh4.4.0(重新导出),并根据文档 http://pig.apache.org/docs/r0.11.1/udf.html#python-advanced“您可以在 Python 脚本中导入 Python 模块。Pig 解析 Python递归依赖,这意味着 Pig 将自动将所有依赖的 Python 模块发送到后端。Python 模块应在 jython 搜索路径中找到:JYTHON_HOME、JYTHON_PATH 或当前目录。"。所以我从https://pypi.python.org/pypi/simplejson/ 下载库,将其解压缩到我的工作目录中,然后我的脚本在本地模式下工作(使用-x local)。尽管如此,在集群模式下,我在任务跟踪器的失败日志中收到此错误:
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 并注册 zip 并尝试使用 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
【问题讨论】:
标签: python apache-pig jython user-defined-functions