@Override public int computeBucketId(Object record) { Object[] bucketFieldValues = new Object[bucketFields.length]; ObjectInspector[] bucketFiledInspectors = new ObjectInspector[bucketFields.length]; for (int columnIndex = 0; columnIndex < bucketFields.length; columnIndex++) { bucketFieldValues[columnIndex] = structObjectInspector.getStructFieldData(record, bucketFields[columnIndex]); bucketFiledInspectors[columnIndex] = bucketFields[columnIndex].getFieldObjectInspector(); } return ObjectInspectorUtils.getBucketNumber(bucketFieldValues, bucketFiledInspectors, totalBuckets); }
@Override public Object setValue(Object row, ColumnVector column, int columnRow) throws HiveException { // NULLs are handled by each individual base writer setter // We could handle NULLs centrally here but that would result in spurious allocs Object fieldValue = this.settableObjInspector.getStructFieldData(row, fieldRef); fieldValue = baseWriter.setValue(fieldValue, column, columnRow); return this.settableObjInspector.setStructFieldData(row, fieldRef, fieldValue); }
@Override public Object setValue(Object row, ColumnVector column, int columnRow) throws HiveException { // NULLs are handled by each individual base writer setter // We could handle NULLs centrally here but that would result in spurious allocs Object fieldValue = this.settableObjInspector.getStructFieldData(row, fieldRef); fieldValue = baseWriter.setValue(fieldValue, column, columnRow); return this.settableObjInspector.setStructFieldData(row, fieldRef, fieldValue); }
private Object convertStruct(Object struct, ObjectInspector inspector) { SettableStructObjectInspector structOI = (SettableStructObjectInspector) inspector; Object result = structOI.create(); for (StructField field : structOI.getAllStructFieldRefs()) { Object value = structOI.getStructFieldData(struct, field); structOI.setStructFieldData(result, field, convert(value, field.getFieldObjectInspector())); } return result; }
private Object convertStruct(Object struct, ObjectInspector inspector) { SettableStructObjectInspector structOI = (SettableStructObjectInspector) inspector; Object result = structOI.create(); for (StructField field : structOI.getAllStructFieldRefs()) { Object value = structOI.getStructFieldData(struct, field); structOI.setStructFieldData(result, field, convert(value, field.getFieldObjectInspector())); } return result; }
@Override public Object getWritableObject(OrcStruct struct) { return inspector.getStructFieldData(struct, structField); }
@Override protected Object toJavaObjectInternal(Object value) throws UnexpectedTypeException { OrcStruct struct = (OrcStruct) value; List<Object> result = new ArrayList<>(struct.getNumFields()); int i = 0; for (StructField field : inspector.getAllStructFieldRefs()) { result.add(converters.get(i).toJavaObject(inspector.getStructFieldData(struct, field))); i++; } return result; }
@Override public Object setValue(Object row, ColumnVector column, int columnRow) throws HiveException { // NULLs are handled by each individual base writer setter // We could handle NULLs centrally here but that would result in spurious allocs Object fieldValue = this.settableObjInspector.getStructFieldData(row, fieldRef); fieldValue = baseWriter.setValue(fieldValue, column, columnRow); return this.settableObjInspector.setStructFieldData(row, fieldRef, fieldValue); }
@Override public Object getJavaObject(OrcStruct struct) throws UnexpectedTypeException { Object writable = inspector.getStructFieldData(struct, structField); try { return converter.toJavaObject(writable); } catch (UnexpectedTypeException e) { throw new UnexpectedTypeException(writable, structField.getFieldName(), e); } }