[ https://issues.apache.org/jira/browse/PIG-2547?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bill Graham updated PIG-2547: ----------------------------- Attachment: PIG_2547.1.patch Here's a first pass at a patch. It includes a number of new files: {noformat} src/org/apache/pig/ExceptionalFunction.java src/org/apache/pig/Function.java src/org/apache/pig/FunctionWrapperEvalFunc.java src/org/apache/pig/PrimitiveEvalFunc.java src/org/apache/pig/TypedOutputEvalFunc.java test/org/apache/pig/TestFunctionWrapperEvalFunc.java test/org/apache/pig/TestPrimitiveEvalFunc.java test/org/apache/pig/TestTypedOutputEvalFunc.java {noformat} The new Pig {{Function}} interface was added as a common subinterface to Googles {{Function}} and a new Pig {{ExceptionalFunction}}. I went through some pains to support all three interfaces in {{FunctionWrapperEvalFunc}}. (Dmitriy, this is different than our impl, which doesn't include support for Google's {{Function}}.) Please take a look and let me know what you think. > Easier UDFs: Convenient EvalFunc super-classes > ---------------------------------------------- > > Key: PIG-2547 > URL: https://issues.apache.org/jira/browse/PIG-2547 > Project: Pig > Issue Type: New Feature > Reporter: Bill Graham > Assignee: Bill Graham > Attachments: PIG_2547.1.patch > > > We've got a few abstract extensions of EvalFunc that make life easier. If > people are interested we can push said classes into Pig. > There are 3 classes, each extending the next. Class naming is all TBD. > * {{TypedOutputEvalFunc<OUT>}} - Implements {{public Schema > outputSchema(Schema input)}} based on the generic type of the subclass. > Provides common helper validation functions which increment counters for good > and bad Tuple data passed. Useful where the input to be worked on is a tuple > of size N or greater. > * {{PrimitiveEvalFunc<IN, OUT>}} - Same as above with helper validation > allowing the ability it subclass and just implement {{public OUT exec(IN > input)}}, where IN and OUT are primitives. Useful when the input is a single > primitive in position 0 of a tuple. > * {{FunctionWrapperEvalFunc}} - Wraps a Guava Function implementation > (http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Function.html) > and allows UDFs to be used in Pig scripts like so, where {{MyFunction}} is a > class that implements {{Function}}: > {noformat} > DEFINE myUdf org.apache.pig.FunctionWrapperEvalFunc('MyFunction') > {noformat} > -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira