2

jythonを使ってPython関数を実行したい。

このサイトから例を取ります。

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をオンにした...しかしこのコードを作成するにはどうすればよいですか?走る??

この問題をデバッグするために、環境でどのような設定を行う必要がありますか。ありがとう

4

1 に答える 1

1

環境変数に追加$PIG_HOME/lib/jython.jarします。PIG_CLASSPATH

于 2012-11-13T09:07:23.097 に答える