|
|
-
Better formated.. Pig udf helpjamal sasha 2012-10-25, 21:46
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. ****************************************************************************** ------------------------------------------------------------------------------- |