Hey sorry, I was moving house all evening and driving around town :) I did not automate my unit tests, I created a small frame app to test each function and make sure it responded appropriately. Good to know junit will do it.
For your other question, did you include a call to init() in your udaf's constructor? I didn't see it in the code you provided. Pat -- Sent from my Palm Pre ________________________________ On Mar 11, 2011 7:01 PM, Aurora Skarra-Gallagher <aur...@yahoo-inc.com> wrote: I'll just keep responding to myself. ;) I ended up figuring out how to do it. I just used junit and called init, iterate, terminatePartial, etc from inside the unit test. After knowing a typical flow of function calls (as I mentioned below), the main other gotcha is making sure to have a new UDAF object for each instance. For example, in my example below, there would be three separate UDAF instances. -Aurora On Mar 11, 2011, at 5:02 PM, Aurora Skarra-Gallagher wrote: > I'm looking for something like this, but for a UDAF instead of a UDF: > http://svn.apache.org/repos/asf/hive/branches/branch-0.7/ql/src/test/org/apache/hadoop/hive/ql/udf/TestUDFDateDiff.java > > -Aurora > > On Mar 11, 2011, at 4:44 PM, Aurora Skarra-Gallagher wrote: > >> Hi, >> >> Did you actually call those functions directly from your unit tests? I'm >> looking for examples of that working, but all I see reference to are tests >> to make sure the query produces the expected output (rather than directly >> testing the UDAF). >> >> -Aurora >> >> On Mar 11, 2011, at 3:44 PM, Christopher, Pat wrote: >> >>> Awesome, awesome. That's what I had pieced together from Steve and Ed's >>> emails. Glad to get confirmation on it. >>> >>> Its also what I did for my unit testing. I also called everything with >>> null arguments to make sure those got handled gracefully. >>> >>> Pat >>> >>> -----Original Message----- >>> From: Aurora Skarra-Gallagher [mailto:aur...@yahoo-inc.com] >>> Sent: Friday, March 11, 2011 3:40 PM >>> To: user@hive.apache.org >>> Cc: Steven Wong >>> Subject: Re: UDAF documentation >>> >>> Hadoop: The Definitive Guide has a good section on this. Chapter 12: Hive: >>> User Defined Functions. It has a diagram that shows how things are called >>> and when. The example I'm looking at shows this sequence: >>> >>> (first instance) >>> init() >>> iterate(1) >>> iterate(2) >>> iterate(3) >>> terminatePartial() >>> >>> (second instance) >>> init() >>> iterate(4) >>> iterate(2) >>> terminatePartial() >>> >>> (then) >>> init() >>> merge(3) >>> merge(4) >>> terminate() >>> >>> The UDAF being described is a max integer function, hence the merge ending >>> up with the highest integer from each instance. >>> >>> -Aurora >>> >>> On Mar 11, 2011, at 9:54 AM, Christopher, Pat wrote: >>> >>>> Ahh, perfect. The docs don't agree terribly well but the case study is >>>> great. The context for when merge() gets called was not clear to me. >>>> >>>> Thanks guys! >>>> >>>> Pat >>>> >>>> -----Original Message----- >>>> From: Steven Wong [mailto:sw...@netflix.com] >>>> Sent: Thursday, March 10, 2011 6:24 PM >>>> To: user@hive.apache.org >>>> Cc: Christopher, Pat >>>> Subject: RE: UDAF documentation >>>> >>>> Take a look at http://wiki.apache.org/hadoop/Hive/GenericUDAFCaseStudy, in >>>> case you haven't found it already. >>>> >>>> >>>> -----Original Message----- >>>> From: Edward Capriolo [mailto:edlinuxg...@gmail.com] >>>> Sent: Thursday, March 10, 2011 6:18 PM >>>> To: user@hive.apache.org >>>> Cc: Christopher, Pat >>>> Subject: Re: UDAF documentation >>>> >>>> On Thu, Mar 10, 2011 at 8:27 PM, Christopher, Pat >>>> <patrick.christop...@hp.com> wrote: >>>>> Hi Guys, >>>>> >>>>> I'm writing a UDAF to run against hive 0.5 or hive 0.7. The >>>>> documentation I >>>>> can find says to implement UDAFEvaluator and ensure that you implement >>>>> init() , aggregate() and evaluate(). However, all of the examples I can >>>>> find implement init(), iterate(), merge(), terminatePartial() and >>>>> terminate(). >>>>> >>>>> >>>>> >>>>> What's the difference and where I can find the documentation on how to >>>>> write >>>>> a UDAF? >>>>> >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Pat >>>> >>>> At time the documentation may lag behind the code. I would checkout >>>> the hive source code for the version you are working with and base >>>> your work on other already existing UDAF's that are similar. >>>> >>>> Edward >>>> >>> >> >