[
https://issues.apache.org/jira/browse/HIVE-5306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13771299#comment-13771299
]
Jason Dere commented on HIVE-5306:
----------------------------------
Couple comments:
1. You can probably get away with making all of the fields transient.
2. Since you've only defined abs() to work with int/long/double/decimal, I
believe initialize() will fail if abs() is called with other types which one
might expect to work, such as tinyint/smallint/float/string. For non-generic
UDFs, what would happen would be that FunctionRegistry.getMethodInternal()
would determine that tinyint/smallint/float/string could be converted to one of
int/long/double/decimal and make the conversion at the time the UDF is called.
Unfortunately for GenericUDFs, I think you have to do that logic yourself.
Maybe you can do something like so:
(define Converter inputConvertor)
switch (inputType) {
case BYTE:
case SHORT:
case INT:
// Use converter to convert input type to your supported type
inputConverter = ObjectInspectorConvertors.getConvertor(arguments[0],
PrimitiveObjectInspectorFactory.writableIntObjectInspector);
outputOI = PrimitiveObjectInspectorFactory.writableIntObjectInspector;
break;
case LONG:
inputConvertor = ObjectInspectorConvertors.getConvertor(arguments[0],
PrimitiveObjectInspectorFactory.writableLongObjectInspector);
outputOI = PrimitiveObjectInspectorFactory.writableLongObjectInspector;
break;
...
> Use new GenericUDF instead of basic UDF for UDFAbs class
> --------------------------------------------------------
>
> Key: HIVE-5306
> URL: https://issues.apache.org/jira/browse/HIVE-5306
> Project: Hive
> Issue Type: Improvement
> Components: UDF
> Reporter: Mohammad Kamrul Islam
> Assignee: Mohammad Kamrul Islam
> Attachments: HIVE-5306.1.patch, HIVE-5306.2.patch, HIVE-5306.3.patch
>
>
> GenericUDF class is the latest and recommended base class for any UDFs.
> This JIRA is to change the current UDFAbs class extended from GenericUDF.
> The general benefit of GenericUDF is described in comments as
> "* The GenericUDF are superior to normal UDFs in the following ways: 1. It can
> * accept arguments of complex types, and return complex types. 2. It can
> accept
> * variable length of arguments. 3. It can accept an infinite number of
> function
> * signature - for example, it's easy to write a GenericUDF that accepts
> * array<int>, array<array<int>> and so on (arbitrary levels of nesting). 4.
> It
> * can do short-circuit evaluations using DeferedObject."
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira