2
我想使用jython運行python函數..使用jython運行python
以此站點爲例。
http://sundaycomputing.blogspot.com/2011/01/python-udfs-from-pig-scripts.html
現在,當我運行該腳本(豬-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 ..因此開啓了蟒蛇......但我如何使這段代碼運行?
什麼樣的設置,我必須做我的環境......來調試這個問題。 謝謝
豬隻是一個java類。你需要在classpath中的某個地方使用jython.jar。嘗試通過Pig可執行腳本查看在哪裏執行此操作。或者,你可以使用pig jar來調用Pig,如下所示:java -cp /path/to/pig-0.##.0.jar:/path/to/jython.jar org.apache.pig.Main –
Similar post :http://stackoverflow.com/questions/9300509/how-do-you-use-python-udfs-with-pig-in-elastic-mapreduce –