public class Types extends Object
The most basic use is to build primitive types:
Types.required(INT64).named("id"); Types.optional(INT32).named("number");
The #required(PrimitiveTypeName)
factory method produces a primitive
type builder, and the Types.Builder.named(String)
builds the
PrimitiveType
. Between required
and named
, other
builder methods can be used to add type annotations or other type metadata:
Types.required(BINARY).as(UTF8).named("username"); Types.optional(FIXED_LEN_BYTE_ARRAY).length(20).named("sha1");
Optional types are built using #optional(PrimitiveTypeName)
to get
the builder.
Groups are built similarly, using requiredGroup()
(or the optional
version) to return a group builder. Group builders provide required
and optional
to add primitive types, which return primitive builders
like the versions above.
// This produces: // required group User { // required int64 id; // optional binary email (UTF8); // } Types.requiredGroup() .required(INT64).named("id") .required(BINARY).as(UTF8).named("email") .named("User")
When required
is called on a group builder, the builder it returns
will add the type to the parent group when it is built and named
will
return its parent group builder (instead of the type) so more fields can be
added.
Sub-groups can be created using requiredGroup()
to get a group
builder that will create the group type, add it to the parent builder, and
return the parent builder for more fields.
// required group User { // required int64 id; // optional binary email (UTF8); // optional group address { // required binary street (UTF8); // required int32 zipcode; // } // } Types.requiredGroup() .required(INT64).named("id") .required(BINARY).as(UTF8).named("email") .optionalGroup() .required(BINARY).as(UTF8).named("street") .required(INT32).named("zipcode") .named("address") .named("User")
Message types are built using buildMessage()
and function just like
group builders.
// message User { // required int64 id; // optional binary email (UTF8); // optional group address { // required binary street (UTF8); // required int32 zipcode; // } // } Types.buildMessage() .required(INT64).named("id") .required(BINARY).as(UTF8).named("email") .optionalGroup() .required(BINARY).as(UTF8).named("street") .required(INT32).named("zipcode") .named("address") .named("User")
These builders enforce consistency checks based on the specifications in the parquet-format documentation. For example, if DECIMAL is used to annotate a FIXED_LEN_BYTE_ARRAY that is not long enough for its maximum precision, these builders will throw an IllegalArgumentException:
// throws IllegalArgumentException with message: // "FIXED(4) is not long enough to store 10 digits" Types.required(FIXED_LEN_BYTE_ARRAY).length(4) .as(DECIMAL).precision(10) .named("badDecimal");
Modifier and Type | Class and Description |
---|---|
static class |
Types.Builder<T extends Types.Builder,P>
A base builder for
Type objects. |
static class |
Types.GroupBuilder<P>
A builder for
GroupType objects. |
static class |
Types.MessageTypeBuilder |
static class |
Types.PrimitiveBuilder<P>
A builder for
PrimitiveType objects. |
Constructor and Description |
---|
Types() |
public static Types.MessageTypeBuilder buildMessage()
MessageType
.Types.MessageTypeBuilder
public static Types.GroupBuilder<GroupType> buildGroup(Type.Repetition repetition)
public static Types.GroupBuilder<GroupType> requiredGroup()
GroupType
.Types.GroupBuilder
public static Types.GroupBuilder<GroupType> optionalGroup()
GroupType
.Types.GroupBuilder
public static Types.GroupBuilder<GroupType> repeatedGroup()
GroupType
.Types.GroupBuilder
public static Types.PrimitiveBuilder<PrimitiveType> primitive(PrimitiveType.PrimitiveTypeName type, Type.Repetition repetition)
public static Types.PrimitiveBuilder<PrimitiveType> required(PrimitiveType.PrimitiveTypeName type)
PrimitiveType
.type
- a PrimitiveType.PrimitiveTypeName
for the constructed typeTypes.PrimitiveBuilder
public static Types.PrimitiveBuilder<PrimitiveType> optional(PrimitiveType.PrimitiveTypeName type)
PrimitiveType
.type
- a PrimitiveType.PrimitiveTypeName
for the constructed typeTypes.PrimitiveBuilder
public static Types.PrimitiveBuilder<PrimitiveType> repeated(PrimitiveType.PrimitiveTypeName type)
PrimitiveType
.type
- a PrimitiveType.PrimitiveTypeName
for the constructed typeTypes.PrimitiveBuilder
Copyright © 2015. All rights reserved.