Types.Builder<?, ?> typeBuilder; if (element.type == null) { typeBuilder = builder.group(Repetition.valueOf(element.repetition_type.name())); readTypeSchema((Types.GroupBuilder<?>) typeBuilder, schemaIterator, element.num_children); Types.PrimitiveBuilder<?> primitiveBuilder = builder.primitive(getTypeName(element.type), Repetition.valueOf(element.repetition_type.name())); if (element.isSetType_length()) { primitiveBuilder.length(element.type_length);
.as(parquet.schema.OriginalType.LIST).repeatedGroup() .optional(PrimitiveType.PrimitiveTypeName.INT32).named("element") .named("list").named("int_list").named("ArrayOfInts"); .as(parquet.schema.OriginalType.LIST).repeatedGroup().requiredGroup() .as(OriginalType.LIST).repeatedGroup() .required(PrimitiveType.PrimitiveTypeName.INT32).named("element").named("list") .named("element").named("list").named("int_list_list").named("ArrayOfArrayOfInts"); .as(parquet.schema.OriginalType.LIST) .repeated(PrimitiveType.PrimitiveTypeName.INT32).named("element").named("int_list") .named("ArrayOfInts"); .as(parquet.schema.OriginalType.LIST).repeatedGroup() .required(PrimitiveType.PrimitiveTypeName.BINARY).named("str") .required(PrimitiveType.PrimitiveTypeName.INT32).named("num").named("element") .named("tuple_list").named("ArrayOfTuples"); .as(parquet.schema.OriginalType.LIST).repeatedGroup() .required(PrimitiveType.PrimitiveTypeName.BINARY).named("str").named("array") .named("one_tuple_list").named("ArrayOfOneTuples"); .as(parquet.schema.OriginalType.LIST).repeatedGroup() .required(PrimitiveType.PrimitiveTypeName.BINARY).named("str") .named("one_tuple_list_tuple").named("one_tuple_list").named("ArrayOfOneTuples2"); .as(parquet.schema.OriginalType.LIST).repeatedGroup() .required(PrimitiveType.PrimitiveTypeName.BINARY).named("str") .named("one_tuple_list").named("one_tuple_list").named("ArrayOfOneTuples3");
private static void addPrimitiveType(String t, Tokenizer st, PrimitiveTypeName type, Repetition r, Types.GroupBuilder<?> builder) { PrimitiveBuilder<?> childBuilder = builder.primitive(type, r);
Types.PrimitiveBuilder primitiveBuilder = builder.primitive( getPrimitive(schemaElement.type), fromParquetRepetition(schemaElement.repetition_type)); childBuilder = builder.group(fromParquetRepetition(schemaElement.repetition_type)); buildChildren((Types.GroupBuilder) childBuilder, schema, schemaElement.num_children);
Types.Builder<?, ?> typeBuilder; if (element.type == null) { typeBuilder = builder.group(Repetition.valueOf(element.repetition_type.name())); readTypeSchema((Types.GroupBuilder<?>) typeBuilder, schemaIterator, element.num_children); Types.PrimitiveBuilder<?> primitiveBuilder = builder.primitive(getTypeName(element.type), Repetition.valueOf(element.repetition_type.name())); if (element.isSetType_length()) { primitiveBuilder.length(element.type_length);
/** * Builds a {@link Type} and returns the parent builder, if given, or the * {@code Type} that was built. If returning a parent object that is a * GroupBuilder, the constructed type will be added to it as a field. * <p> * <em>Note:</em> Any configuration for this type builder should be done * before calling this method. * * @param name a name for the constructed type * @return the parent {@code GroupBuilder} or the constructed {@code Type} */ public P named(String name) { Preconditions.checkNotNull(name, "Name is required"); Preconditions.checkNotNull(repetition, "Repetition is required"); Type type = build(name); if (parent != null) { // if the parent is a GroupBuilder, add type to it if (GroupBuilder.class.isAssignableFrom(parent.getClass())) { GroupBuilder.class.cast(parent).addField(type); } return parent; } else { // no parent indicates that the Type object should be returned // the constructor check guarantees that returnClass is a Type return returnClass.cast(type); } }
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 protected Type buildSchema() { JsonElementConverter elementConverter = this.elementConverter; JsonElementConverter keyConverter = getKeyConverter(); GroupType mapGroup = Types.repeatedGroup().addFields(keyConverter.schema(), elementConverter.schema()).named(MAP_KEY) .asGroupType(); String columnName = this.jsonSchema.getColumnName(); switch (this.jsonSchema.optionalOrRequired()) { case OPTIONAL: return Types.optionalGroup().addFields(mapGroup).named(columnName).asGroupType(); case REQUIRED: return Types.requiredGroup().addFields(mapGroup).named(columnName).asGroupType(); default: return null; } }
/** * Searchs column names by name on a given Parquet message schema, and returns its projected * Parquet schema types. * * @param schema Message type schema where to search for column names. * @param colNames List of column names. * @param colTypes List of column types. * @return A MessageType object of projected columns. */ private static MessageType getSchemaByName(MessageType schema, List<String> colNames, List<TypeInfo> colTypes) { List<Type> projectedFields = getProjectedGroupFields(schema, colNames, colTypes); Type[] typesArray = projectedFields.toArray(new Type[0]); return Types.buildMessage() .addFields(typesArray) .named(schema.getName()); }
public static GroupBuilder<GroupType> buildGroup( Type.Repetition repetition) { return new GroupBuilder<GroupType>(GroupType.class).repetition(repetition); }
/** * Returns a builder to construct a repeated {@link GroupType}. * * @return a {@link GroupBuilder} */ public static GroupBuilder<GroupType> repeatedGroup() { return new GroupBuilder<GroupType>(GroupType.class) .repetition(Type.Repetition.REPEATED); }
/** * Returns a builder to construct an optional {@link GroupType}. * * @return a {@link GroupBuilder} */ public static GroupBuilder<GroupType> optionalGroup() { return new GroupBuilder<GroupType>(GroupType.class) .repetition(Type.Repetition.OPTIONAL); }
/** * Returns a builder to construct a required {@link GroupType}. * * @return a {@link GroupBuilder} */ public static GroupBuilder<GroupType> requiredGroup() { return new GroupBuilder<GroupType>(GroupType.class) .repetition(Type.Repetition.REQUIRED); }
/** * Returns a {@link GroupBuilder} to build a repeated sub-group. * * @return a group builder that will return this builder for additional * fields. */ public GroupBuilder<GroupBuilder<P>> repeatedGroup() { return new GroupBuilder<GroupBuilder<P>>(this) .repetition(Type.Repetition.REPEATED); }
/** * Returns a {@link GroupBuilder} to build a required sub-group. * * @return a group builder that will return this builder for additional * fields. */ public GroupBuilder<GroupBuilder<P>> requiredGroup() { return new GroupBuilder<GroupBuilder<P>>(this) .repetition(Type.Repetition.REQUIRED); }
/** * Returns a {@link GroupBuilder} to build an optional sub-group. * * @return a group builder that will return this builder for additional * fields. */ public GroupBuilder<GroupBuilder<P>> optionalGroup() { return new GroupBuilder<GroupBuilder<P>>(this) .repetition(Type.Repetition.OPTIONAL); }
public GroupBuilder<GroupBuilder<P>> group(Type.Repetition repetition) { return new GroupBuilder<GroupBuilder<P>>(this) .repetition(repetition); }
@Override protected Type buildSchema() { JsonElementConverter elementConverter = this.elementConverter; JsonElementConverter keyConverter = getKeyConverter(); GroupType mapGroup = Types.repeatedGroup().addFields(keyConverter.schema(), elementConverter.schema()).named(MAP_KEY) .asGroupType(); String columnName = this.jsonSchema.getColumnName(); switch (this.jsonSchema.optionalOrRequired()) { case OPTIONAL: return Types.optionalGroup().addFields(mapGroup).named(columnName).asGroupType(); case REQUIRED: return Types.requiredGroup().addFields(mapGroup).named(columnName).asGroupType(); default: return null; } }