gpt4 book ai didi

python - 在 Jython 中导入 Pig UDF 中的外部库时出现错误 1121

转载 作者:行者123 更新时间:2023-12-01 05:25:11 25 4
gpt4 key购买 nike

我在使用 jython 中的 python 库 simplejson 编写 Pig UDF 时遇到问题。我需要,因为 jython-standalone-2.5.2.jar 没有附带 JSON 库。我使用的是 Apache Pig 版本 0.11.0-cdh4.4.0(重新导出),编译于 2013 年 9 月 3 日,20:25:46,并根据文档 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

最佳答案

我不知道我的答案是否来得太迟,但我设法在 UDF 中导入 simplejson。

这是我的做法:

我下载了 simplejson 并将其放入 lib 文件夹中,然后在我的 UDF 中执行了以下操作:

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

然后,我成功地在集群上执行了 json.loads(),没有出现任何问题。

希望对你有帮助

关于python - 在 Jython 中导入 Pig UDF 中的外部库时出现错误 1121,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21504026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com