private Object convertUnion(Object union, ObjectInspector inspector) { UnionObjectInspector unionOI = (UnionObjectInspector) inspector; List<ObjectInspector> childOIs = unionOI.getObjectInspectors(); byte tag = unionOI.getTag(union); Object value = unionOI.getField(union); List<Object> result = new ArrayList<>(childOIs.size()); for (int i = 0; i < childOIs.size(); i++) { if (i == tag) { result.add(convert(value, childOIs.get(i))); } else { result.add(null); } } return result; } }
private Object serializeUnion(UnionTypeInfo typeInfo, UnionObjectInspector fieldOI, Object structFieldData, Schema schema) throws AvroSerdeException { byte tag = fieldOI.getTag(structFieldData); // Invariant that Avro's tag ordering must match Hive's. return serialize(typeInfo.getAllUnionObjectTypeInfos().get(tag), fieldOI.getObjectInspectors().get(tag), fieldOI.getField(structFieldData), schema.getTypes().get(tag)); }
private Object convertUnion(Object union, ObjectInspector inspector) { UnionObjectInspector unionOI = (UnionObjectInspector) inspector; List<ObjectInspector> childOIs = unionOI.getObjectInspectors(); byte tag = unionOI.getTag(union); Object value = unionOI.getField(union); List<Object> result = new ArrayList<>(childOIs.size()); for (int i = 0; i < childOIs.size(); i++) { if (i == tag) { result.add(convert(value, childOIs.get(i))); } else { result.add(null); } } return result; } }
@Override public Object convert(Object input) { if (input == null) { return null; } Object inputFieldValue = inputOI.getField(input); byte inputFieldTag = inputOI.getTag(input); Object outputFieldValue = null; int inputFieldTagIndex = ((Byte)inputFieldTag).intValue(); if (inputFieldTagIndex >= 0 && inputFieldTagIndex < fieldConverters.size()) { outputFieldValue = fieldConverters.get(inputFieldTagIndex).convert(inputFieldValue); } outputOI.setFieldAndTag(output, outputFieldValue, inputFieldTag); return output; } }
private static void serializeUnion(RandomAccessOutput byteStream, Object obj, UnionObjectInspector uoi, BooleanRef warnedOnceNullMapKey) throws SerDeException { byte tag = uoi.getTag(obj); byteStream.write(tag); serialize(byteStream, uoi.getField(obj), uoi.getObjectInspectors().get(tag), false, warnedOnceNullMapKey); }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Object value = arguments[0].get(); if (tag == ALL_TAGS) { return valueConverter.convert(value, sourceOI); } else if (tag == unionOI.getTag(value)) { return unionOI.getField(value); } else { return null; } }
@Override public Object evaluate(DeferredObject[] arguments) throws HiveException { Object value = arguments[0].get(); if (tag == ALL_TAGS) { return valueConverter.convert(value, sourceOI); } else if (tag == unionOI.getTag(value)) { return unionOI.getField(value); } else { return null; } }
@Test public void evaluate_UnionAndTagArguments_NotMatchesTag() throws HiveException { when(unionOI.getObjectInspectors()).thenReturn( ImmutableList.<ObjectInspector> of( PrimitiveObjectInspectorFactory.writableStringObjectInspector, PrimitiveObjectInspectorFactory.writableLongObjectInspector)); when(tagOI.getWritableConstantValue()).thenReturn(new IntWritable(0)); when(deferredObject.get()).thenReturn(value); when(unionOI.getTag(value)).thenReturn((byte) 1); underTest.initialize(new ObjectInspector[] { unionOI, tagOI }); Object result = underTest.evaluate(new DeferredObject[] { deferredObject }); assertThat(result, is(nullValue())); }
@Test public void evaluate_UnionAndTagArguments_MatchesTag() throws HiveException { when(unionOI.getObjectInspectors()).thenReturn( ImmutableList.<ObjectInspector> of( PrimitiveObjectInspectorFactory.writableStringObjectInspector, PrimitiveObjectInspectorFactory.writableLongObjectInspector)); when(tagOI.getWritableConstantValue()).thenReturn(new IntWritable(0)); when(deferredObject.get()).thenReturn(value); when(unionOI.getTag(value)).thenReturn((byte) 0); when(unionOI.getField(value)).thenReturn("foo"); underTest.initialize(new ObjectInspector[] { unionOI, tagOI }); Object result = underTest.evaluate(new DeferredObject[] { deferredObject }); assertThat(result, is((Object) "foo")); }
@Override void write(Object obj) throws IOException { super.write(obj); if (obj != null) { UnionObjectInspector insp = (UnionObjectInspector) inspector; byte tag = insp.getTag(obj); tags.write(tag); if (createBloomFilter) { bloomFilter.addLong(tag); } childrenWriters[tag].write(insp.getField(obj)); } }
uoi.getObjectInspectors().get(uoi.getTag(o)));
out.write(nullSequence.getBytes(), 0, nullSequence.getLength()); } else { LazyUtils.writePrimitiveUTF8(out, new Byte(uoi.getTag(obj)), PrimitiveObjectInspectorFactory.javaByteObjectInspector, escaped, escapeChar, needsEscape); out.write(separator); serialize(out, uoi.getField(obj), ois.get(uoi.getTag(obj)), separators, level + 1, nullSequence, escaped, escapeChar, needsEscape);
Object object = copyToStandardObject( uoi.getField(o), objectInspectors.get(uoi.getTag(o)), objectInspectorOption); result = object;
@Override void serialize(RandomAccessOutput byteStream, Object obj, ObjectInspector objInspector, boolean skipLengthPrefix, BooleanRef warnedOnceNullMapKey) { int byteSizeStart = 0; int typeStart = 0; if (!skipLengthPrefix) { // 1/ reserve spaces for the byte size of the struct // which is a integer and takes four bytes byteSizeStart = byteStream.getLength(); byteStream.reserve(4); typeStart = byteStream.getLength(); } // 2/ serialize the union - tag/value UnionObjectInspector uoi = (UnionObjectInspector) objInspector; byte tag = uoi.getTag(obj); byteStream.write(tag); unionFieldSerializers[tag].serializeValue( byteStream, uoi.getField(obj), uoi.getObjectInspectors().get(tag), false, warnedOnceNullMapKey); if (!skipLengthPrefix) { // 3/ update the byte size of the struct int typeEnd = byteStream.getLength(); int typeSize = typeEnd - typeStart; writeSizeAtOffset(byteStream, byteSizeStart, typeSize); } } }
byte tag = uOI.getTag(o); return hashCodeMurmur(uOI.getField(o), uOI.getObjectInspectors().get(tag), byteBuffer);
UnionColumnVector vector = (UnionColumnVector) column; UnionObjectInspector oi = (UnionObjectInspector) inspector; int tag = oi.getTag(obj); vector.tags[rowId] = tag; setColumn(rowId, vector.fields[tag],
byte tag = uOI.getTag(o); return hashCode(uOI.getField(o), uOI.getObjectInspectors().get(tag));
byte tag = uoi.getTag(o); writeByte(buffer, tag, invert); serialize(buffer, uoi.getField(o), uoi.getObjectInspectors().get(tag),