Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Threaded View
Pig >> mail # user >> why the udf can not work


Copy link to this message
-
Re: why the udf can not work
Looks like you need to learn a bit about how java package works. The path
for the class file needs to be

/home/huyong/test/*myudfs*/UPPER.class

Or remove the first line in your UDF code "package myudfs;" and redo
everything you did, it will work.

2011/6/19 勇胡 <[EMAIL PROTECTED]>

> In this path, it has already contained UPPER.class and UPPER.java. And the
> myudfs.jar is also in the path. But it did not work. By the way, my Pig
> version is 0.8.1. Is there something, for example, classpath I have to set
> up in the Pig configuration?
>
> Yong
>
> 在 2011年6月19日 上午4:10,Dexin Wang <[EMAIL PROTECTED]>写道:
>
> > You need to have your class file in this path
> >
> > /home/huyong/test/myudfs/UPPER.class
> >
> > since it's in myudfs directory.
> >
> >
> > On Jun 18, 2011, at 12:33 PM, 勇胡 <[EMAIL PROTECTED]> wrote:
> >
> > > I tried your command and then it shows me as following:
> > > /home/huyong/test/UPPER.class
> > > /home/huyong/test/UPPER.java
> > >
> > > Yong
> > > 在 2011年6月18日 下午4:29,Dmitriy Ryaboy <[EMAIL PROTECTED]>写道:
> > >
> > >> This usually hapens when you aren't registering what you think you are
> > >> registering.
> > >> try `jar tf /home/huyong/test/myudfs.jar | grep UPPER` and see if you
> > >> get anything.
> > >>
> > >> D
> > >>
> > >> 2011/6/18 勇胡 <[EMAIL PROTECTED]>:
> > >>> Hi,
> > >>>
> > >>> package myudfs;
> > >>> import java.io.IOException;
> > >>> import org.apache.pig.EvalFunc;
> > >>> import org.apache.pig.data.Tuple;
> > >>> import org.apache.pig.impl.util.*;
> > >>>
> > >>> public class UPPER extends EvalFunc<String>
> > >>> {
> > >>>   public String exec(Tuple input) throws IOException {
> > >>>       if (input == null || input.size() == 0)
> > >>>           return null;
> > >>>       try{
> > >>>           String str = (String)input.get(0);
> > >>>           return str.toUpperCase();
> > >>>       }catch(Exception e){
> > >>>           throw new IOException(e);
> > >>>       }
> > >>>   }
> > >>> }
> > >>>
> > >>> This is as same as the example from the Pig website. By the way, I
> also
> > >>> added the PIG_CLASS. But it still didn't work.
> > >>>
> > >>> Yong
> > >>>
> > >>> 2011/6/18 Jonathan Coveney <[EMAIL PROTECTED]>
> > >>>
> > >>>> Can you paste the content of the UDF?
> > >>>>
> > >>>> 2011/6/18 勇胡 <[EMAIL PROTECTED]>
> > >>>>
> > >>>>> Hello,
> > >>>>>
> > >>>>> I just tried the example from the pig udf manual step by step. But
> I
> > >> got
> > >>>>> the
> > >>>>> error information. Can anyone tell me how to solve it?
> > >>>>>
> > >>>>> grunt> REGISTER /home/huyong/test/myudfs.jar;
> > >>>>> grunt> A = LOAD '/home/huyong/test/student.txt' as
> (name:chararray);
> > >>>>> grunt> B = FOREACH A GENERATE myudfs.UPPER(name);
> > >>>>> 2011-06-18 11:15:38,892 [main] ERROR
> org.apache.pig.tools.grunt.Grunt
> > >> -
> > >>>>> ERROR 1070: Could not resolve myudfs.UPPER using imports: [,
> > >>>>> org.apache.pig.builtin., org.apache.pig.impl.builtin.]
> > >>>>> Details at logfile: /home/huyong/test/pig_1308388238352.log
> > >>>>>
> > >>>>> I have already registered the udf, why pig tries to search from the
> > >>>> builtin
> > >>>>> path.
> > >>>>>
> > >>>>> Thanks for your help!
> > >>>>>
> > >>>>> Yong Hu
> > >>>>>
> > >>>>
> > >>>
> > >>
> >
>
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB