Ok, great. Thanks. We would have to implement custom installer to modify oozie-site.xml using Cloudera Manager API. Thanks!
2013/7/15 Robert Kanter <rkan...@cloudera.com> > Sorry for the confusion. Hopefully this will make it clearer. > > The following replaces step 3 from my original instructions: > > If you installed Apache or CDH Tarballs: > 3a) Copy your jar file to /where/you/deployed/oozie/libext/ > 3b) Re-run bin/oozie-setup.sh prepare-war > > If you installed CDH Packages/Parcels: > 3) Copy your jar file to /usr/lib/oozie/libext/ or /var/lib/oozie/ > > All of the other steps from my original instructions apply to either type > of installation. > > > - Robert > > > > On Mon, Jul 15, 2013 at 10:19 AM, Serega Sheypak > <serega.shey...@gmail.com>wrote: > > > Now I'm confused. Do I have repackage war if I use parcels? > > > > > > 2013/7/15 Robert Kanter <rkan...@cloudera.com> > > > > > I believe the method I described for packages should also apply for > > > parcels. Yes, you still have to modify oozie-site.xml. The only > > > difference in the process between a tarball installation and a CDH > > > packages/parcel installation is where to put your jar and to run or not > > run > > > the oozie-setup.sh script. > > > > > > - Robert > > > > > > > > > On Mon, Jul 15, 2013 at 9:43 AM, Serega Sheypak < > > serega.shey...@gmail.com > > > >wrote: > > > > > > > We are using parcels. > > > > Also you said that I have to modify oozie-site.xml to declare my > > > function. > > > > > > > > > > > > 2013/7/15 Robert Kanter <rkan...@cloudera.com> > > > > > > > > > If you're using Cloudera Manager, you've probably installed CDH via > > > > > packages? If so, you actually only have to copy your jar file to > > > > > /usr/lib/oozie/libext/ or /var/lib/oozie/ (they're the same > location, > > > one > > > > > of them is a symlink but I forget which) and restart Oozie; you > > should > > > > not > > > > > run the oozie-setup.sh command. > > > > > > > > > > - Robert > > > > > > > > > > > > > > > On Mon, Jul 15, 2013 at 6:46 AM, Serega Sheypak < > > > > serega.shey...@gmail.com > > > > > >wrote: > > > > > > > > > > > Hm... function installation in production is rather tricky. > > > > > > 1. I think puppet can drop jar from nexus to ooze folder > > > > > > 2. it can stop oozie and run command > > > > > > 3. config update wouldn't be so easy in case of Cloudera Manager. > > > We'll > > > > > > need some special stuff to update config via API (if it's > possible) > > > > > > > > > > > > Thanks, I'm trying to make it work. > > > > > > > > > > > > > > > > > > 2013/7/13 Mona Chitnis <chit...@yahoo-inc.com> > > > > > > > > > > > > > Also if you feel your custom implementation can benefit others, > > > feel > > > > > free > > > > > > > to contribute to Oozie via creating a patch and uploading to a > > > JIRA - > > > > > > > https://issues.apache.org/jira/browse/OOZIE > > > > > > > > > > > > > > > > > > > > > On 7/12/13 11:12 AM, "Robert Kanter" <rkan...@cloudera.com> > > wrote: > > > > > > > > > > > > > > >Hi Serega, > > > > > > > > > > > > > > > >I'm actually working on a tutorial blog post for the Cloudera > > > > website > > > > > on > > > > > > > >how to make an EL function. It's not quite done yet, but > here's > > > the > > > > > > basic > > > > > > > >steps you need to do: > > > > > > > > > > > > > > > >1) Write the function in a new Java class. There's no > interface > > > or > > > > > > class > > > > > > > >to inherit from, you just make a new class in whatever package > > you > > > > > want > > > > > > > >(e.g. my.package.AwesomeELFunctions). For what you want, its > > > > > signature > > > > > > > >would be: > > > > > > > > public static int functionName(String > > stringWithDatetime, > > > > > String > > > > > > > >pattern) > > > > > > > >If you want to create more than one function, they can all go > in > > > the > > > > > > same > > > > > > > >class as well. > > > > > > > > > > > > > > > >2) Compile your class. You only need Oozie dependencies if > > you're > > > > > > > >function > > > > > > > >requires something from Oozie. You can use javac, maven, > > Eclipse, > > > > etc > > > > > > to > > > > > > > >compile it. Make sure to create a jar. > > > > > > > > > > > > > > > >3) (Shut down Oozie and) copy the jar file to > > > > > > > >/where/you/deployed/oozie/libext/ and re-run > bin/oozie-setup.sh > > > > > > > >prepare-war > > > > > > > > > > > > > > > >4) In oozie-site.xml, set (or add if it doesn't exist) a > > property > > > > like > > > > > > > >this: > > > > > > > ><property> > > > > > > > > > <name>oozie.service.ELService.ext.functions.workflow</name> > > > > > > > > <value> > > > > > > > > > > functionName=my.package.AwesomeELFunctions#functionName > > > > > > > > </value> > > > > > > > ></property> > > > > > > > >If you have more functions, that property takes a comma > > separated > > > > list > > > > > > of > > > > > > > >them. The value on the left side of the equals is the name > that > > > > you'd > > > > > > use > > > > > > > >in a workflow and the value on the right side is the name of > > your > > > > > > function > > > > > > > >in your Java code. For the value on the left side, you can > > > > optionally > > > > > > put > > > > > > > >a prefix (you may have seen many built-in functions that start > > > with > > > > > > "wf:" > > > > > > > >for example). > > > > > > > > > > > > > > > >5) Start up Oozie. You should now be able to use the > > functionName > > > > > > custom > > > > > > > >EL Function you created! > > > > > > > > > > > > > > > >I believe this may only make the function available in > > workflows, > > > > but > > > > > > I'm > > > > > > > >not sure; if not, there should be a similar property in > > oozie-site > > > > you > > > > > > can > > > > > > > >set for coordinators if you need that. > > > > > > > > > > > > > > > >Once my proper tutorial blog post is posted, I'll add a link > to > > > this > > > > > > > >thread, but it may be a while. > > > > > > > > > > > > > > > >- Robert > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >On Fri, Jul 12, 2013 at 7:26 AM, Serega Sheypak > > > > > > > ><serega.shey...@gmail.com>wrote: > > > > > > > > > > > > > > > >> Hi, I need to create custom EL function. > > > > > > > >> It accepts: > > > > > > > >> String StringWithDatetime > > > > > > > >> String Pattern (to parse Date) > > > > > > > >> It returns: > > > > > > > >> time in seconds. > > > > > > > >> > > > > > > > >> Please tell me: > > > > > > > >> 1. Where can I find example? > > > > > > > >> 2. Where do I have to put implementation of this function? > > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >