2012-11-12 38 views
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 ..因此開啓了蟒蛇......但我如何使這段代碼運行?

什麼樣的設置,我必須做我的環境......來調試這個問題。 謝謝

+1

豬隻是一個java類。你需要在classpath中的某個地方使用jython.jar。嘗試通過Pig可執行腳本查看在哪裏執行此操作。或者,你可以使用pig jar來調用Pig,如下所示:java -cp /path/to/pig-0.##.0.jar:/path/to/jython.jar org.apache.pig.Main –

+0

Similar post :http://stackoverflow.com/questions/9300509/how-do-you-use-python-udfs-with-pig-in-elastic-mapreduce –

回答

1

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