From 7de6d8724b1b4318be9267c8a49aee71a1f5823e Mon Sep 17 00:00:00 2001 From: James Vaughan Date: Mon, 29 Aug 2016 11:59:34 -0700 Subject: [PATCH] Fix primitive serializations by returning actual object Hive handles primitive types using the base Hadoop writable rather than its own during joins, which means that in order to use the proper DoubleWritable class from Hive you have to actually return an object of the appropriate type in JsonSerDe.serializeField instead of a primitive. --- .../java/org/openx/data/jsonserde/JsonSerDe.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/json-serde/src/main/java/org/openx/data/jsonserde/JsonSerDe.java b/json-serde/src/main/java/org/openx/data/jsonserde/JsonSerDe.java index cfee91b2..2c3f8189 100644 --- a/json-serde/src/main/java/org/openx/data/jsonserde/JsonSerDe.java +++ b/json-serde/src/main/java/org/openx/data/jsonserde/JsonSerDe.java @@ -302,22 +302,22 @@ public Object serializeField(Object obj, Boolean.FALSE; break; case BYTE: - result = ((ByteObjectInspector)poi).get(obj); + result = Byte.valueOf(((ByteObjectInspector)poi).get(obj)); break; case DOUBLE: - result = ((DoubleObjectInspector)poi).get(obj); + result = Double.valueOf(((DoubleObjectInspector)poi).get(obj)); break; case FLOAT: - result = ((FloatObjectInspector)poi).get(obj); + result = Float.valueOf(((FloatObjectInspector)poi).get(obj)); break; case INT: - result = ((IntObjectInspector)poi).get(obj); + result = Integer.valueOf(((IntObjectInspector)poi).get(obj)); break; case LONG: - result = ((LongObjectInspector)poi).get(obj); + result = Long.valueOf(((LongObjectInspector)poi).get(obj)); break; case SHORT: - result = ((ShortObjectInspector)poi).get(obj); + result = Short.valueOf(((ShortObjectInspector)poi).get(obj)); break; case STRING: result = ((StringObjectInspector)poi).getPrimitiveJavaObject(obj);