【问题标题】:pig jython udf import fail猪 jython udf 导入失败
【发布时间】:2013-11-17 16:05:23
【问题描述】:

问题是指本地猪 0.11.1 运行,但最终在 EMR 的猪上具有使用前景。我正在尝试编写一个导入“re”模块的 jython UDF,我在register 'xyz.py' with jython as xyz 之后得到了这个:

2013-11-06 13:59:47,259 [main] WARN  org.apache.pig.scripting.jython.JythonScriptEngine -   module file does not exist: re, /home/amit/Servers/Pig/pig-0.11.1/lib/jython-standalone-2.5.3.jar/Lib/re.py

udf 很简单:

import re

我的 .bashrc 中有 PIG_HOME 设置,问题基本上是什么问题?值得注意的是,以下示例有效

import sys
print(sys.path)

谢谢, 阿米特

【问题讨论】:

标签: apache-pig jython


【解决方案1】:

安装似乎缺少 stdlib 或找不到它。 import sys 应该可以工作,因为它内置在运行时本身中,这与 re 模块不同,re 模块位于运行时之外,位于单独的 python 模块中。尝试导入另一个位于标准库中的模块,例如unittest。我怀疑你会得到类似的结果。


@Amit 我下载了相同的版本进行确认,并且能够在 UDF 中导入 re 模块。听起来这是您本地安装的问题。我建议尝试以下方法:

  1. 删除并重新下载 Pig tgz 文件。
  2. 如果问题仍然存在,请确认您的类路径中没有其他 jython jar。 Pig 与 /Lib 目录中的 Jython jar 捆绑在一起。这个 jar 里面是 python stdlib(包括 re 模块)。 Jython 还捆绑为一个不包含 stdlib 的“裸”jar。如果这在您的类路径中,则可能会导致您的问题。

【讨论】:

  • 在尝试导入unittest 时确实出现了同样的错误。除了解压它的二进制包、设置PIG_HOME 并将其添加到PATH 环境变量之外,我真的没有安装Pig。还应该设置什么才能导入上述 jython 模块?对于那些感兴趣的人,我目前正在使用 from java.util.regex import Pattern 和它喜欢做正则表达式和其他与模式匹配相关的东西 - 一个黑客,但有效。
  • 您使用的是什么版本的 Pig?听起来它可能是包中的一个错误。
  • Apache Pig 版本 0.11.1 (r1459641) 编译于 2013 年 3 月 22 日,02:13:53
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多