@Override public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { checkArgsSize(arguments, 2, 3); checkArgPrimitive(arguments, 0); checkArgPrimitive(arguments, 1); if (arguments.length == 3) { if (arguments[2] instanceof ConstantObjectInspector) { isRoundOffNeeded = getConstantBooleanValue(arguments, 2); } } // the function should support both short date and full timestamp format // time part of the timestamp should not be skipped checkArgGroups(arguments, 0, tsInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 1, tsInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 0, dtInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 1, dtInputTypes, STRING_GROUP, DATE_GROUP); obtainTimestampConverter(arguments, 0, tsInputTypes, tsConverters); obtainTimestampConverter(arguments, 1, tsInputTypes, tsConverters); obtainDateConverter(arguments, 0, dtInputTypes, dtConverters); obtainDateConverter(arguments, 1, dtInputTypes, dtConverters); ObjectInspector outputOI = PrimitiveObjectInspectorFactory.writableDoubleObjectInspector; return outputOI; }
@Override public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { checkArgsSize(arguments, 2, 3); checkArgPrimitive(arguments, 0); checkArgPrimitive(arguments, 1); if (arguments.length == 3) { if (arguments[2] instanceof ConstantObjectInspector) { isRoundOffNeeded = getConstantBooleanValue(arguments, 2); } } // the function should support both short date and full timestamp format // time part of the timestamp should not be skipped checkArgGroups(arguments, 0, tsInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 1, tsInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 0, dtInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 1, dtInputTypes, STRING_GROUP, DATE_GROUP); obtainTimestampConverter(arguments, 0, tsInputTypes, tsConverters); obtainTimestampConverter(arguments, 1, tsInputTypes, tsConverters); obtainDateConverter(arguments, 0, dtInputTypes, dtConverters); obtainDateConverter(arguments, 1, dtInputTypes, dtConverters); ObjectInspector outputOI = PrimitiveObjectInspectorFactory.writableDoubleObjectInspector; return outputOI; }
@Override public ObjectInspector initialize(ObjectInspector[] arguments) throws UDFArgumentException { checkArgsSize(arguments, 2, 2); checkArgPrimitive(arguments, 0); checkArgPrimitive(arguments, 1); // the function should support both short date and full timestamp format // time part of the timestamp should not be skipped checkArgGroups(arguments, 0, tsInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 1, tsInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 0, dtInputTypes, STRING_GROUP, DATE_GROUP); checkArgGroups(arguments, 1, dtInputTypes, STRING_GROUP, DATE_GROUP); obtainTimestampConverter(arguments, 0, tsInputTypes, tsConverters); obtainTimestampConverter(arguments, 1, tsInputTypes, tsConverters); obtainDateConverter(arguments, 0, dtInputTypes, dtConverters); obtainDateConverter(arguments, 1, dtInputTypes, dtConverters); ObjectInspector outputOI = PrimitiveObjectInspectorFactory.writableDoubleObjectInspector; return outputOI; }