【问题标题】:Error 1121 importing external library in Pig UDF in Jython在 Jython 的 Pig UDF 中导入外部库时出现错误 1121
【发布时间】: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


    【解决方案1】:

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

    我是这样做的:

    我下载了 simplejson 并将其放入 lib 文件夹,然后在我的 UDF 中我这样做了:

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

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多