I wasn't able to compile your code, but from the steps you listed, I think you 
should check the directory structure.

Once you have a jar, you can do "jar -tf mypigudf" to list the classes in it. 
You also need to make sure that the directory structure matches your class 
patch. In your case, you should see "mypigudf/DicomParser.class" in your jar.

--Xuefu 

-----Original Message-----
From: Baraa Mohamad [mailto:[email protected]] 
Sent: Tuesday, March 22, 2011 12:05 PM
To: [email protected]
Subject: Re: Failed to generate logical plan

Yes I'm using trunk

this is my class

package mypigudf;
import java.io.IOException;
import org.apache.pig.data.TupleFactory; import org.apache.pig.data.Tuple; 
public class DicomParser{
    public Tuple exec(String input) throws IOException {} }

and after that I follwed this steps

cd H:/apps/mypig
javac -cp pig.jar DicomParser.java
jar -cf mypigudf.jar mypigudf

am I doing something wrong?????

Baraa



On Tue, Mar 22, 2011 at 7:52 PM, Xuefu Zhang <[email protected]> wrote:

> Hi Baraa,
>
> I'm assuming you're using trunk for your experiment. Nevertheless, 
> this error basically tells you that Pig cannot instanticate your UDF. 
> Common cause is misspelling. Is mypigudf.DicomParser fully qualified 
> class name of your UDF? I noticed that mypigudf is the jar file name as well.
>
> Thanks,
> Xuefu
>
> -----Original Message-----
> From: Baraa Mohamad [mailto:[email protected]]
> Sent: Tuesday, March 22, 2011 11:41 AM
> To: [email protected]
> Subject: Failed to generate logical plan
>
> Hi all,
>
> I wrote a simple udf DicomParser which read a line and convert it to 
> tuple but when I tried to use like that
>
> register H:/apps/mypig/mypigudf.jar;
> A = load 'dicoms/' using 
> org.apache.pig.piggybank.storage.XMLLoader('attr')
> as (x:chararray);
> B = Foreach A generate mypigudf.DicomParser(x); store B into 
> 'testUdf';
>
>
> I get this error
>
> Pig Stack Trace
> ---------------
> ERROR 1000: Error during parsing. Failed to generate logical plan. 
> Nested
> exception: java.lang.RuntimeException: Cannot instantiate:
> mypigudf.DicomParser
>
> org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1000: Error 
> during parsing. Failed to generate logical plan. Nested exception:
> java.lang.RuntimeException: Cannot instantiate: mypigudf.DicomParser
>    at org.apache.pig.PigServer$Graph.parseQuery(PigServer.java:1568)
>    at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1513)
>    at org.apache.pig.PigServer.registerQuery(PigServer.java:581)
>    at
> org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:917)
>    at
>
> org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:386)
>    at
>
> org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:176)
>    at
>
> org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:152)
>    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:90)
>    at org.apache.pig.Main.run(Main.java:537)
>    at org.apache.pig.Main.main(Main.java:108)
>
> ======================================================================
> ==========
>
> why i can't use it i didn't find how I can solve this error
>
> Regards
>
> Baraa
>

Reply via email to