使用 jython 运行 python

Posted

技术标签:

【中文标题】使用 jython 运行 python【英文标题】:running python using jython 【发布时间】:2012-11-12 18:01:38 【问题描述】:

我想 函数..

以本网站为例。

http://sundaycomputing.blogspot.com/2011/01/python-udfs-from-pig-scripts.html

现在当我运行脚本时(pig -f myscript.pig

它返回这个错误

     Pig Stack Trace
---------------
ERROR 2998: Unhandled internal error. org/python/core/PyException

java.lang.NoClassDefFoundError: org/python/core/PyException
    at org.apache.pig.scripting.jython.JythonScriptEngine.registerFunctions(JythonScriptEngine.java:127)
    at org.apache.pig.PigServer.registerCode(PigServer.java:567)
    at org.apache.pig.tools.grunt.GruntParser.processRegister(GruntParser.java:421)
    at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:419)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:188)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:164)
    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:81)
    at org.apache.pig.Main.run(Main.java:427)
    at org.apache.pig.Main.main(Main.java:108)
Caused by: java.lang.ClassNotFoundException: org.python.core.PyException
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 9 more
================================================================================

我猜是因为第一行..REGISTER udf.py USING jython AS udf;

并且我必须指定 jython 路径? (因为我在集群上运行这个代码..我不认为我已经设置了这个东西).. 现在......因为我不太了解java..因此打开了python......但是我如何让这段代码运行??

我必须在我的环境上做什么样的设置...来调试这个问题。 谢谢

【问题讨论】:

Pig 只是一个 java 类。您将需要一个 jython.jar 在您的类路径中的某处。尝试查看 Pig 可执行脚本的执行位置。或者,您可以使用 pig jar 调用 Pig,如下所示: java -cp /path/to/pig-0.##.0.jar:/path/to/jython.jar org.apache.pig.Main 类似帖子:***.com/questions/9300509/… 【参考方案1】:

$PIG_HOME/lib/jython.jar 添加到您的PIG_CLASSPATH 环境变量中。

【讨论】:

以上是关于使用 jython 运行 python的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 jenkins 以使用 jython 解释器而不是 python 运行我的机器人脚本?

无法使用 Ant 在 Javascript 或 Jython 中创建 XSLT 扩展

eclipse中使用jython

Pydev 显示用于 Jython 代码分析的“未定义变量”

如何在 jmeter 中将其他软件包安装到 jython jar?

Cpython和Jython的对比介绍