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()); }
private void runAndVerify(String str, int len, String pad, String expResult, GenericUDF udf) throws HiveException { DeferredObject valueObj1 = new DeferredJavaObject(new Text(str)); DeferredObject valueObj2 = new DeferredJavaObject(new IntWritable(len)); DeferredObject valueObj3 = new DeferredJavaObject(new Text(pad)); DeferredObject[] args = { valueObj1, valueObj2, valueObj3 }; Object output = udf.evaluate(args); if(expResult != null) { assertEquals("lpad() test ", expResult, output.toString()); } else { assertNull("lpad() test ", output); } } }
@Test public void testDateCompareEq() throws HiveException { GenericUDFNullif udf = new GenericUDFNullif(); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.writableDateObjectInspector, PrimitiveObjectInspectorFactory.writableDateObjectInspector }; DeferredObject[] args = { new DeferredJavaObject(new DateWritableV2(4)), new DeferredJavaObject(new DateWritableV2(4)) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.dateTypeInfo, oi.getTypeInfo()); Assert.assertEquals(null, udf.evaluate(args)); }
public void verifyDecode(String string, String charsetName) throws UnsupportedEncodingException, HiveException{ GenericUDFDecode udf = new GenericUDFDecode(); byte[] bytes = string.getBytes(charsetName); ObjectInspector valueOI = PrimitiveObjectInspectorFactory.javaByteArrayObjectInspector; ObjectInspector charsetOI = PrimitiveObjectInspectorFactory.javaStringObjectInspector; ObjectInspector[] initArguments = {valueOI, charsetOI}; udf.initialize(initArguments); DeferredObject valueObj = new DeferredJavaObject(bytes); DeferredObject charsetObj = new DeferredJavaObject(charsetName); DeferredObject[] arguments = {valueObj, charsetObj}; String output = (String) udf.evaluate(arguments); assertEquals("Decoding failed for CharSet: " + charsetName, string, output); } }
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()); }
public void testLong() throws HiveException { GenericUDFAbs udf = new GenericUDFAbs(); ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableLongObjectInspector; ObjectInspector[] arguments = {valueOI}; udf.initialize(arguments); DeferredObject valueObj = new DeferredJavaObject(new LongWritable(107L)); DeferredObject[] args = {valueObj}; LongWritable output = (LongWritable) udf.evaluate(args); assertEquals("abs() test for LONG failed ", 107, output.get()); valueObj = new DeferredJavaObject(new LongWritable(-107L)); args[0] = valueObj; output = (LongWritable) udf.evaluate(args); assertEquals("abs() test for LONG failed ", 107, output.get()); }
private void runAndVerify(String str, String regex, Boolean expResult, GenericUDF udf) throws HiveException { DeferredObject valueObj0 = new DeferredJavaObject(str != null ? new Text(str) : null); DeferredObject valueObj1 = new DeferredJavaObject(regex != null ? new Text(regex) : null); DeferredObject[] args = { valueObj0, valueObj1 }; BooleanWritable output = (BooleanWritable) udf.evaluate(args); if (expResult == null) { assertNull(output); } else { assertNotNull(output); assertEquals("regexp() test ", expResult.booleanValue(), output.get()); } } }
@Test public void testString() throws HiveException { GenericUDFFloor udf = new GenericUDFFloor(); Text input = new Text("32300.004747"); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.writableStringObjectInspector, }; DeferredObject[] args = { new DeferredJavaObject(input) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.longTypeInfo, oi.getTypeInfo()); LongWritable res = (LongWritable) udf.evaluate(args); Assert.assertEquals(32300L, res.get()); }
@Test public void testByte() throws HiveException { GenericUDFFloor udf = new GenericUDFFloor(); ByteWritable input = new ByteWritable((byte) 4); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.writableByteObjectInspector, }; DeferredObject[] args = { new DeferredJavaObject(input) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.longTypeInfo, oi.getTypeInfo()); LongWritable res = (LongWritable) udf.evaluate(args); Assert.assertEquals(4L, res.get()); }
@Test public void testString() throws HiveException { GenericUDFOPPositive udf = new GenericUDFOPPositive(); Text input = new Text("32300.004747"); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.writableStringObjectInspector, }; DeferredObject[] args = { new DeferredJavaObject(input) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.doubleTypeInfo, oi.getTypeInfo()); DoubleWritable res = (DoubleWritable) udf.evaluate(args); Assert.assertEquals(new Double(32300.004747), new Double(res.get())); }
@Test public void testString() throws HiveException { GenericUDFCeil udf = new GenericUDFCeil(); Text input = new Text("32300.004747"); ObjectInspector[] inputOIs = { PrimitiveObjectInspectorFactory.writableStringObjectInspector, }; DeferredObject[] args = { new DeferredJavaObject(input) }; PrimitiveObjectInspector oi = (PrimitiveObjectInspector) udf.initialize(inputOIs); Assert.assertEquals(TypeInfoFactory.longTypeInfo, oi.getTypeInfo()); LongWritable res = (LongWritable) udf.evaluate(args); Assert.assertEquals(32301L, res.get()); }
public static int getHiveBucket(List<Entry<ObjectInspector, Object>> columnBindings, int bucketCount) throws HiveException { GenericUDFHash udf = new GenericUDFHash(); ObjectInspector[] objectInspectors = new ObjectInspector[columnBindings.size()]; GenericUDF.DeferredObject[] deferredObjects = new GenericUDF.DeferredObject[columnBindings.size()]; int i = 0; for (Entry<ObjectInspector, Object> entry : columnBindings) { objectInspectors[i] = entry.getKey(); if (entry.getValue() != null && entry.getKey() instanceof JavaHiveVarcharObjectInspector) { JavaHiveVarcharObjectInspector varcharObjectInspector = (JavaHiveVarcharObjectInspector) entry.getKey(); deferredObjects[i] = new GenericUDF.DeferredJavaObject(new HiveVarchar(((String) entry.getValue()), varcharObjectInspector.getMaxLength())); } else { deferredObjects[i] = new GenericUDF.DeferredJavaObject(entry.getValue()); } i++; } ObjectInspector udfInspector = udf.initialize(objectInspectors); IntObjectInspector inspector = (IntObjectInspector) udfInspector; Object result = udf.evaluate(deferredObjects); HiveKey hiveKey = new HiveKey(); hiveKey.setHashCode(inspector.get(result)); return new DefaultHivePartitioner<>().getBucket(hiveKey, null, bucketCount); }
private DeferredObject[] evalArgs(String string) { return new DeferredObject[] { new DeferredJavaObject(new Text(string)), null }; }
public void testShortDataTypeAsDays() throws HiveException { GenericUDFDateSub udf = new GenericUDFDateSub(); ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector; ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaShortObjectInspector; ObjectInspector[] arguments = {valueOI1, valueOI2}; udf.initialize(arguments); DeferredObject valueObj1 = new DeferredJavaObject(new DateWritableV2(Date.of(109, 06, 20))); DeferredObject valueObj2 = new DeferredJavaObject(new Short("4")); DeferredObject[] args = {valueObj1, valueObj2}; DateWritableV2 output = (DateWritableV2) udf.evaluate(args); assertEquals("date_add() test for SHORT failed ", "0109-06-16", output.toString()); } }
public void testShortDataTypeAsDays() throws HiveException { GenericUDFDateAdd udf = new GenericUDFDateAdd(); ObjectInspector valueOI1 = PrimitiveObjectInspectorFactory.writableDateObjectInspector; ObjectInspector valueOI2 = PrimitiveObjectInspectorFactory.javaShortObjectInspector; ObjectInspector[] arguments = {valueOI1, valueOI2}; udf.initialize(arguments); DeferredObject valueObj1 = new DeferredJavaObject(new DateWritableV2(Date.of(109, 06, 20))); DeferredObject valueObj2 = new DeferredJavaObject(new Short("4")); DeferredObject[] args = {valueObj1, valueObj2}; DateWritableV2 output = (DateWritableV2) udf.evaluate(args); assertEquals("date_add() test for SHORT failed ", "0109-06-24", output.toString()); } }
public void testDateWritablepToDate() throws HiveException { GenericUDFDate udf = new GenericUDFDate(); ObjectInspector valueOI = PrimitiveObjectInspectorFactory.writableDateObjectInspector; ObjectInspector[] arguments = {valueOI}; udf.initialize(arguments); DeferredObject valueObj = new DeferredJavaObject(new DateWritableV2(Date.of(109, 06, 30))); DeferredObject[] args = {valueObj}; DateWritableV2 output = (DateWritableV2) udf.evaluate(args); assertEquals("to_date() test for DATEWRITABLE failed ", "0109-06-30", output.toString()); // Try with null args DeferredObject[] nullArgs = { new DeferredJavaObject(null) }; output = (DateWritableV2) udf.evaluate(nullArgs); assertNull("to_date() with null DATE", output); }
public void testStringToDate() throws HiveException { GenericUDFDate udf = new GenericUDFDate(); ObjectInspector valueOI = PrimitiveObjectInspectorFactory.javaStringObjectInspector; ObjectInspector[] arguments = {valueOI}; udf.initialize(arguments); DeferredObject valueObj = new DeferredJavaObject(new Text("2009-07-30")); DeferredObject[] args = {valueObj}; DateWritableV2 output = (DateWritableV2) udf.evaluate(args); assertEquals("to_date() test for STRING failed ", "2009-07-30", output.toString()); // Try with null args DeferredObject[] nullArgs = { new DeferredJavaObject(null) }; output = (DateWritableV2) udf.evaluate(nullArgs); assertNull("to_date() with null STRING", output); }
private void runAndVerify(String str0, String str1, Integer expResult, GenericUDF udf) throws HiveException { DeferredObject valueObj0 = new DeferredJavaObject(str0 != null ? new Text(str0) : null); DeferredObject valueObj1 = new DeferredJavaObject(str1 != null ? new Text(str1) : null); DeferredObject[] args = { valueObj0, valueObj1 }; IntWritable output = (IntWritable) udf.evaluate(args); if (expResult == null) { assertNull("levenshtein test ", output); } else { assertNotNull("levenshtein test", output); assertEquals("levenshtein test", expResult.intValue(), output.get()); } } }
private void runAndVerify(String str, int len, String pad, String expResult, GenericUDF udf) throws HiveException { DeferredObject valueObj1 = new DeferredJavaObject(new Text(str)); DeferredObject valueObj2 = new DeferredJavaObject(new IntWritable(len)); DeferredObject valueObj3 = new DeferredJavaObject(new Text(pad)); DeferredObject[] args = { valueObj1, valueObj2, valueObj3 }; Object output = udf.evaluate(args); if(expResult != null) { assertEquals("rpad() test ", expResult, output.toString()); } else { assertNull("rpad() test ", output); } } }
private void runAndVerifyTs(String str, Integer expResult, GenericUDF udf) throws HiveException { DeferredObject valueObj0 = new DeferredJavaObject(str != null ? new TimestampWritableV2( Timestamp.valueOf(str)) : null); DeferredObject[] args = { valueObj0 }; IntWritable output = (IntWritable) udf.evaluate(args); if (expResult == null) { assertNull(output); } else { assertNotNull(output); assertEquals("quarter() test ", expResult.intValue(), output.get()); } } }