Holders are for input, I think. Try the different kinds of writers.
On Sat, Jul 4, 2015 at 12:49 PM, Jim Bates <[email protected]> wrote: > Using a repeatedholder as a @param I've got working. I was working on a > custom aggregator function using DrillAggFunc. In this I can do simple > things but If I want to build a list values and do something with it in the > final output method I think I need to use RepeatedHolders in the > @Workspace. To do that I need to create a new one in the setup method. I > can't get one built. They all require a BufferAllocator to be passed in to > build it. I have not found a way to get an allocator yet. Any suggestions? > > On Sat, Jul 4, 2015 at 1:37 PM, Ted Dunning <[email protected]> wrote: > > > If you look at the zip function in > > https://github.com/mapr-demos/simple-drill-functions you can have an > > example of building a structure. > > > > The basic idea is that your output is denoted as > > > > @Output > > BaseWriter.ComplexWriter writer; > > > > The pattern for building a list of lists of integers is like this: > > > > writer.setValueCount(n); > > ... > > BaseWriter.ListWriter outer = writer.rootAsList(); > > outer.start(); // [ outer list > > ... > > // for each inner list > > BaseWriter.ListWriter inner = outer.list(); > > inner.start(); > > // for each inner list element > > inner.integer().writeInt(accessor.get(i)); > > } > > inner.end(); // ] inner list > > } > > outer.end(); // ] outer list > > > > > > > > On Sat, Jul 4, 2015 at 10:29 AM, Jim Bates <[email protected]> wrote: > > > > > I have working aggregation and simple UDFs. I've been trying to > document > > > and understand each of the options available in a Drill UDF. > > Understanding > > > the different FunctionScope's, the ones that are allowed, the ones that > > are > > > not. The impact of different cost categories. The different steps > needed > > > to understand handling any of the supported data types and structures > in > > > drill. > > > > > > Here are a few of my current road blocks. Any pointers would be greatly > > > appreciated. > > > > > > > > > 1. I've been trying to understand how to correctly use > RepeatedHolders > > > of whatever type. For this discussion lets start with a > > > RepeatedBigIntHolder. I'm trying to figure out the best way to > create > > a > > > new > > > one. I have not figured out where in the existing drill code someone > > > does > > > this. If I use a RepeatedBigIntHolder as a Workspace object is is > > null > > > to > > > start with. I created a new one in the startup section of the udf > but > > > the > > > vector was null. I can find no reference in creating a new > > BigIntVector. > > > There is a way to create a BigIntVector and I did find an example of > > > creating a new VarCharVector but I can't do that using the drill jar > > > files > > > from 1.0. The org.apache.drill.common.types.TypeProtos and > > > the org.apache.drill.common.types.TypeProtos.MinorType classes do > not > > > appear to be accessible from the drill jar files. > > > 2. What is the best way to close out a UDF in the event it generates > > an > > > exception? Are there specific steps one should follow to make a > clean > > > exit > > > in a catch block that are beneficial to Drill? > > > > > >
