OriginalType originalType = type.getOriginalType(); if (originalType != null && originalType.equals(OriginalType.LIST)) { checkInspectorCategory(inspector, ObjectInspector.Category.LIST); if (singleLevelArray) { else if (originalType != null && (originalType.equals(OriginalType.MAP) || originalType.equals(OriginalType.MAP_KEY_VALUE))) { checkInspectorCategory(inspector, ObjectInspector.Category.MAP); writeMap(value, (MapObjectInspector) inspector, groupType);
private static void addGroupType(String t, Tokenizer st, Repetition r, GroupBuilder<?> builder) { GroupBuilder<?> childBuilder = builder.group(r); String name = st.nextToken(); // Read annotation, if any. t = st.nextToken(); OriginalType originalType = null; if (t.equalsIgnoreCase("(")) { originalType = OriginalType.valueOf(st.nextToken()); childBuilder.as(originalType); check(st.nextToken(), ")", "original type ended by )", st); t = st.nextToken(); } if (t.equals("=")) { childBuilder.id(Integer.parseInt(st.nextToken())); t = st.nextToken(); } try { addGroupTypeFields(t, st, childBuilder); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("problem reading type: type = group, name = " + name + ", original type = " + originalType, e); } childBuilder.named(name); }
@Override public int hashCode() { int result = primitiveType != null ? primitiveType.hashCode() : 0; result = 31 * result + (originalType != null ? originalType.hashCode() : 0); return result; } }
Preconditions.checkState( primitiveType == PrimitiveTypeName.BINARY, originalType.toString() + " can only annotate binary fields"); break; case DECIMAL: case INT_32: Preconditions.checkState(primitiveType == PrimitiveTypeName.INT32, originalType.toString() + " can only annotate INT32"); break; case TIMESTAMP_MILLIS: case INT_64: Preconditions.checkState(primitiveType == PrimitiveTypeName.INT64, originalType.toString() + " can only annotate INT64"); break; case INTERVAL:
private static Type readType(String t, Tokenizer st) { Repetition r = asRepetition(t, st); String type = st.nextToken(); String name = st.nextToken(); t = st.nextToken(); OriginalType originalType = null; if (t.equalsIgnoreCase("(")) { originalType = OriginalType.valueOf(st.nextToken()); check(st.nextToken(), ")", "original type ended by )", st); t = st.nextToken(); } try { if (type.equalsIgnoreCase("group")) { Type[] fields = readGroupTypeFields(t, st); return new GroupType(r, name, originalType, fields); } else { PrimitiveTypeName p = asPrimitive(type, st); check(t, ";", "field ended by ';'", st); return new PrimitiveType(r, p, name, originalType); } } catch (IllegalArgumentException e) { throw new IllegalArgumentException("problem reading type: type = " + type + ", name = " + name + ", original type = " + originalType, e); } }
@Override public int hashCode() { int c = repetition.hashCode(); c = 31 * c + name.hashCode(); if (originalType != null) { c = 31 * c + originalType.hashCode(); } if (id != null) { c = 31 * c + id.hashCode(); } return c; }
/** * It writes the field value to the Parquet RecordConsumer. It detects the field type, and calls * the correct write function. * @param value The writable object that contains the value. * @param inspector The object inspector used to get the correct value type. * @param type Type that contains information about the type schema. */ private void writeValue(final Object value, final ObjectInspector inspector, final Type type) { if (type.isPrimitive()) { checkInspectorCategory(inspector, ObjectInspector.Category.PRIMITIVE); writePrimitive(value, (PrimitiveObjectInspector)inspector); } else { GroupType groupType = type.asGroupType(); OriginalType originalType = type.getOriginalType(); if (originalType != null && originalType.equals(OriginalType.LIST)) { checkInspectorCategory(inspector, ObjectInspector.Category.LIST); writeArray(value, (ListObjectInspector)inspector, groupType); } else if (originalType != null && originalType.equals(OriginalType.MAP)) { checkInspectorCategory(inspector, ObjectInspector.Category.MAP); writeMap(value, (MapObjectInspector)inspector, groupType); } else { checkInspectorCategory(inspector, ObjectInspector.Category.STRUCT); writeGroup(value, (StructObjectInspector)inspector, groupType); } } }
OriginalType originalType = null; if (t.equalsIgnoreCase("(")) { originalType = OriginalType.valueOf(st.nextToken()); childBuilder.as(originalType); if (OriginalType.DECIMAL == originalType) {
|| !mapKeyValType.getOriginalType().equals(OriginalType.MAP_KEY_VALUE) || mapKeyValType.getFieldCount() != 2) { throw new UnsupportedOperationException("Invalid map type " + parquetGroupType); if (!keyType.isPrimitive() || !keyType.asPrimitiveType().getPrimitiveTypeName() .equals(PrimitiveType.PrimitiveTypeName.BINARY) || !keyType.getOriginalType().equals(OriginalType.UTF8)) { throw new UnsupportedOperationException( "Map key type must be binary (UTF8): " + keyType);
OriginalType originalType = type.getOriginalType(); if (originalType != null && originalType.equals(OriginalType.LIST)) { checkInspectorCategory(inspector, ObjectInspector.Category.LIST); if (singleLevelArray) { else if (originalType != null && (originalType.equals(OriginalType.MAP) || originalType.equals(OriginalType.MAP_KEY_VALUE))) { checkInspectorCategory(inspector, ObjectInspector.Category.MAP); writeMap(value, (MapObjectInspector) inspector, groupType);
!mapKeyValType.getOriginalType().equals(OriginalType.MAP_KEY_VALUE) || mapKeyValType.getFieldCount()!=2) { throw new SchemaConversionException("Invalid map type " + parquetGroupType);