use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFAbs in project hive by apache.
the class TestGenericUDFAbs method testFloat.
public void testFloat() throws HiveException {
GenericUDFAbs udf = new GenericUDFAbs();
ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableFloatObjectInspector;
ObjectInspector[] arguments = { valueOI };
udf.initialize(arguments);
DeferredObject valueObj = new DeferredJavaObject(new FloatWritable(107.78f));
DeferredObject[] args = { valueObj };
DoubleWritable output = (DoubleWritable) udf.evaluate(args);
// Make sure flow and double equality compare works
assertTrue("abs() test for Float failed ", Math.abs(107.78 - output.get()) < 0.0001);
valueObj = new DeferredJavaObject(new FloatWritable(-107.78f));
args[0] = valueObj;
output = (DoubleWritable) udf.evaluate(args);
assertTrue("abs() test for Float failed ", Math.abs(107.78 - output.get()) < 0.0001);
}
use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFAbs in project hive by apache.
the class TestGenericUDFAbs method testHiveDecimal.
public void testHiveDecimal() throws HiveException {
GenericUDFAbs udf = new GenericUDFAbs();
int prec = 12;
int scale = 9;
ObjectInspector valueOI = PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(TypeInfoFactory.getDecimalTypeInfo(prec, scale));
ObjectInspector[] arguments = { valueOI };
PrimitiveObjectInspector outputOI = (PrimitiveObjectInspector) udf.initialize(arguments);
// Make sure result precision/scale matches the input prec/scale
assertEquals("result precision for abs()", prec, outputOI.precision());
assertEquals("result scale for abs()", scale, outputOI.scale());
DeferredObject valueObj = new DeferredJavaObject(new HiveDecimalWritable(HiveDecimal.create("107.123456789")));
DeferredObject[] args = { valueObj };
HiveDecimalWritable output = (HiveDecimalWritable) udf.evaluate(args);
assertEquals("abs() test for HiveDecimal failed ", 107.123456789, output.getHiveDecimal().doubleValue());
valueObj = new DeferredJavaObject(new HiveDecimalWritable(HiveDecimal.create("-107.123456789")));
args[0] = valueObj;
output = (HiveDecimalWritable) udf.evaluate(args);
assertEquals("abs() test for HiveDecimal failed ", 107.123456789, output.getHiveDecimal().doubleValue());
// null input
args[0] = new DeferredJavaObject(null);
output = (HiveDecimalWritable) udf.evaluate(args);
assertEquals("abs(null)", null, output);
// if value too large, should also be null
args[0] = new DeferredJavaObject(new HiveDecimalWritable(HiveDecimal.create("-1000.123456")));
output = (HiveDecimalWritable) udf.evaluate(args);
assertEquals("abs() of too large decimal value", null, output);
}
use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFAbs in project hive by apache.
the class TestGenericUDFAbs method testInt.
public void testInt() throws HiveException {
GenericUDFAbs udf = new GenericUDFAbs();
ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableIntObjectInspector;
ObjectInspector[] arguments = { valueOI };
udf.initialize(arguments);
DeferredObject valueObj = new DeferredJavaObject(new IntWritable(107));
DeferredObject[] args = { valueObj };
IntWritable output = (IntWritable) udf.evaluate(args);
assertEquals("abs() test for INT failed ", 107, output.get());
valueObj = new DeferredJavaObject(new IntWritable(-107));
args[0] = valueObj;
output = (IntWritable) udf.evaluate(args);
assertEquals("abs() test for INT failed ", 107, output.get());
}
use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFAbs in project hive by apache.
the class TestGenericUDFAbs method testDouble.
public void testDouble() throws HiveException {
GenericUDFAbs udf = new GenericUDFAbs();
ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableDoubleObjectInspector;
ObjectInspector[] arguments = { valueOI };
udf.initialize(arguments);
DeferredObject valueObj = new DeferredJavaObject(new DoubleWritable(107.78));
DeferredObject[] args = { valueObj };
DoubleWritable output = (DoubleWritable) udf.evaluate(args);
assertEquals("abs() test for Double failed ", 107.78, output.get());
valueObj = new DeferredJavaObject(new DoubleWritable(-107.78));
args[0] = valueObj;
output = (DoubleWritable) udf.evaluate(args);
assertEquals("abs() test for Double failed ", 107.78, output.get());
}
use of org.apache.hadoop.hive.ql.udf.generic.GenericUDFAbs in project hive by apache.
the class TestGenericUDFAbs method testText.
public void testText() throws HiveException {
GenericUDFAbs udf = new GenericUDFAbs();
ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableStringObjectInspector;
ObjectInspector[] arguments = { valueOI };
udf.initialize(arguments);
DeferredObject valueObj = new DeferredJavaObject(new Text("123.45"));
DeferredObject[] args = { valueObj };
DoubleWritable output = (DoubleWritable) udf.evaluate(args);
assertEquals("abs() test for String failed ", "123.45", output.toString());
valueObj = new DeferredJavaObject(new Text("-123.45"));
args[0] = valueObj;
output = (DoubleWritable) udf.evaluate(args);
assertEquals("abs() test for String failed ", "123.45", output.toString());
valueObj = new DeferredJavaObject(new Text("foo"));
args[0] = valueObj;
output = (DoubleWritable) udf.evaluate(args);
assertEquals("abs() test for String failed ", null, output);
}
Aggregations