Hi Great catch Now I get an error Cannot find hadoop configuration in class path ( neither hadoop site XML etc)
So I am running the file on a cluster which had say hadoop set up as /path/hadoop /path/pig And I have account in it So I cannot change the hadoop conf files as other users are also using it. How do I run this just for me ? On Thursday, October 25, 2012, Bill Graham <billgra...@gmail.com> wrote: > Somewhere you have a typo, probably in the execution of your program: > > Exception in thread "main" java.lang.NoClassDefFoundError: > org/pache/pig/Main**** > > Caused by: java.lang.ClassNotFoundException: org.pache.pig.Main**** > > at java.net.URLClassLoader$1.run(URLClassLoader.java:202)**** > > Note that the 'a' in apache is missing. > > > On Thu, Oct 25, 2012 at 2:46 PM, jamal sasha <jamalsha...@gmail.com> wrote: > >> Hi,**** >> >> I am trying to write a pig udf function.. Basically the data is of >> format* >> *** >> >> ** ** >> >> Id,time**** >> >> What I am trying to do is … parse the time and then see whether its >> breakfast, lunch or dinner.. based on the time stamp. Some entries wil be >> null as well..**** >> >> ** ** >> >> So here is the udf code for this.**** >> >> ** ** >> >> *public* *class* time *extends* EvalFunc<String>{**** >> >> ** ** >> >> *public* String exec(Tuple input) *throws* IOException {**** >> >> **** >> >> *if* ((*input* == *null*) || (input.size() == 0))**** >> >> *return* *null*;**** >> >> *try*{**** >> >> String time = (String) input.get(0) ;**** >> >> DateFormat df = *new* SimpleDateFormat("hh:mm:ss.000");**** >> >> Date date = df.parse(time);**** >> >> String timeOfDay = *getTimeOfDay*(date);**** >> >> *return* timeOfDay;**** >> >> } *catch* (ParseException e) {**** >> >> //how will I handle when df.parse(time) fails and throws >> ParseException?**** >> >> //maybe:**** >> >> *return* *null*;**** >> >> }**** >> >> **** >> >> **** >> >> }**** >> >> ** ** >> >> After this.. in eclipse.. I did the export of this as a jar called myudfs >> and I have a jar file called myudfs.jar**** >> >> ** ** >> >> Then I wrote the pig script as **** >> >> Time.pig**** >> >> ** ** >> >> REGISTER path/to/udf/myudfs.jar**** >> >> in = LOAD 'path/to/input' USING PigStorage(',') AS (id:long, >> time:chararray);**** >> >> result = foreach in GENERATE myudfs.time(time);**** >> >> STORE result INTO 'path/to/output' using PigStorage(',');**** >> >> ** ** >> >> ** ** >> >> So.. as per the documentation.. http://wiki.apache.org/pig/UDFManual**** >> >> ** ** >> >> Now I did this..**** >> >> java -cp path/to/pig.jar org.apache.pig.Main time.pig**** >> >> ** ** >> >> Exception in thread "main" java.lang.NoClassDefFoundError: >> org/pache/pig/Main**** >> >> Caused by: java.lang.ClassNotFoundException: org.pache.pig.Main**** >> >> 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)**** >> >> Could not find the main class: org.pache.pig.Main. Program will exit.**** >> >> ** ** >> >> ** ** >> >> What am I doing wrong?**** >> >> Thanks**** >> >> ** ** >> >> ** ** >> >> ** ** >> >> ** ** >> >> ** ** >> >> American Express made the following annotations on Thu Oct 25 2012 13:50:42 >> >> ****************************************************************************** >> >> "This message and any attachments are solely for the intended recipient and >> may contain confidential or privileged information. If you are not the >> intended recipient, any disclosure, copying, use, or distribution of the >> information included in this message and any attachments is prohibited. If >> you have received this communication in error, please notify us by reply >> e-mail and immediately and permanently delete this message and any >> attachments. Thank you." >> American Express a ajouté le commentaire suivant le Thu Oct 25 2012 >> 13:50:42 >> Ce courrier et toute pièce jointe qu'il contient sont réservés au seul >> destinataire indiqué et peuvent renfermer des renseignements confidentiels >> et privilégiés. Si vous n'êtes pas le destinataire prévu, toute >> divulgation, duplication, utilisation ou distribution du courrier ou de >> toute pièce jointe est interdite. Si vous avez reçu cette communication par >> erreur, veuillez nous en aviser par courrier et détruire immédiatement le >> courrier et les pièces jointes. Merci. >> >> ****************************************************************************** >> >> >> >> ------------------------------------------------------------------------------- >> > > > > -- > *Note that I'm no longer using my Yahoo! email address. Please email me at > billgra...@gmail.com going forward.* >