Hi, Use the fully qualified class name like org.apache.udf.myudf.udfName in the pig script while using udf. Otherwise use only udf name in the script and while running use like pig - Dudf.import.list=org.apache.udf.myudf.evaluation.string scriptname.pig
Thanks Nagamallikarjuna On Wed, Mar 6, 2013 at 2:54 AM, Preeti Gupta <preetigupt...@gmail.com>wrote: > Nope. It does not work > > 2013-03-05 13:22:28,768 [main] ERROR org.apache.pig.tools.grunt.Grunt - > ERROR 1070: Could not resolve myudf.CalculateAvg using imports: [, > org.apache.pig.builtin., org.apache.pig.impl.builtin.] > Details at logfile: > /Users/PreetiGupta/Documents/CMPS290S/project/pig_1362518535200.log > ~ > > Pig script > > REGISTER ./myudfs.jar; > dividends = load 'myfile' as (A); > dump dividends > --grouped = filter dividends by A>-10000000.0; > --avg = foreach (filter dividends by A>-10000000.0) generate AVG(A); > avg = foreach (group dividends all) generate myudf.CalculateAvg(dividends); > dump avg > > My jar file > > bash-3.2# vi a.txt > > 0 Mon Mar 04 13:45:44 PST 2013 META-INF/ > 60 Mon Mar 04 13:45:44 PST 2013 META-INF/MANIFEST.MF > 1190 Mon Mar 04 13:45:16 PST 2013 CalculateAvg$Final.class > 1306 Mon Mar 04 13:45:16 PST 2013 CalculateAvg$Initial.class > 1477 Mon Mar 04 13:45:16 PST 2013 CalculateAvg$Intermediate.class > 4205 Mon Mar 04 13:45:16 PST 2013 CalculateAvg.class > ~ > > On Mar 5, 2013, at 1:09 PM, pablomar <pablo.daniel.marti...@gmail.com> > wrote: > > > did you try with {jarFileName}.{FunctionName} ? > > example: myudfs.CalculateAvg ? > > > > > > On Tue, Mar 5, 2013 at 4:04 PM, Preeti Gupta <preetigupt...@gmail.com > >wrote: > > > >> I kept the code in myudfs.jar and my pig script is point to it using > >> register command but the script is not able to find CalculateAvg > function. > >> I don't have any packages defined in the java file and the jar is my > >> current directory. > >> > >> > >> On Mar 5, 2013, at 3:17 AM, Jonathan Coveney <jcove...@gmail.com> > wrote: > >> > >>> dividends = load 'try.txt' > >>> a = foreach dividends generate FLATTEN(TOBAG(*)); > >>> b = foreach (group a all) generate CalculateAvg($1); > >>> > >>> I think that should work > >>> > >>> > >>> 2013/3/5 pablomar <pablo.daniel.marti...@gmail.com> > >>> > >>>> what is the error ? > >>>> function not found or something like that ? > >>>> > >>>> what about this ? > >>>> avg = generate myudfs.CalculateAvg(dividends); > >>>> > >>>> > >>>> On Mon, Mar 4, 2013 at 4:56 PM, Preeti Gupta < > >> preetigupt...@soe.ucsc.edu > >>>>> wrote: > >>>> > >>>>> Hello All, > >>>>> > >>>>> I have dataset like > >>>>> > >>>>> 0, 10.1, 20.1, 30, 40, > >>>>> 50, 60, 70, 80.1, 1, > >>>>> 2, 3, 4, 5, 6, > >>>>> 7, 8, 9, 10, 11, > >>>>> 12, 13, 14, 15, 16, > >>>>> 1, 2, 3, 4, 5, > >>>>> 56, 6, 7, 8, 9, > >>>>> 9, 9, 9, 12, 1, > >>>>> 3, 14, 1, 5, 6, > >>>>> 7, 8, 8, 9, 12 > >>>>> > >>>>> So basically comma separated values. But I want to consider this as > one > >>>>> data column and I want to calculate the average of the whole dataset. > >>>>> > >>>>> I believe I have to write UDF to calculate average. Pig is able to > load > >>>>> this data > >>>>> > >>>>> ( 0, 10.1, 20.1, 30, 40,) > >>>>> ( 50, 60, 70, 80.1, 1,) > >>>>> ( 2, 3, 4, 5, 6,) > >>>>> ( 7, 8, 9, 10, 11,) > >>>>> ( 12, 13, 14, 15, 16,) > >>>>> ( 1, 2, 3, 4, 5,) > >>>>> ( 56, 6, 7, 8, 9,) > >>>>> ( 9, 9, 9, 12, 1,) > >>>>> ( 3, 14, 1, 5, 6,) > >>>>> ( 7, 8, 8, 9, 12 ) > >>>>> > >>>>> and How do I invoke that UDF in my pig script? Say I implement > >>>>> CalculateAvg function. > >>>>> > >>>>> REGISTER ./myudfs.jar > >>>>> dividends = load 'try.txt'; > >>>>> dump dividends > >>>>> --grouped = group dividends by symbol; > >>>>> avg = generate CalculateAvg(dividends); > >>>>> dump avg > >>>>> --store avg into 'average_dividend'; > >>>>> > >>>>> It fails. > >>>>> > >>>>> > >>>> > >> > >> > > -- Thanks and Regards Nagamallikarjuna