Search in sources :

Example 1 with MapType

use of org.apache.parquet.format.MapType in project parquet-mr by apache.

the class TestParquetMetadataConverter method testMapLogicalType.

@Test
public void testMapLogicalType() {
    ParquetMetadataConverter parquetMetadataConverter = new ParquetMetadataConverter();
    MessageType expected = Types.buildMessage().requiredGroup().as(mapType()).repeatedGroup().as(LogicalTypeAnnotation.MapKeyValueTypeAnnotation.getInstance()).required(PrimitiveTypeName.BINARY).as(stringType()).named("key").required(PrimitiveTypeName.INT32).named("value").named("key_value").named("testMap").named("Message");
    List<SchemaElement> parquetSchema = parquetMetadataConverter.toParquetSchema(expected);
    assertEquals(5, parquetSchema.size());
    assertEquals(new SchemaElement("Message").setNum_children(1), parquetSchema.get(0));
    assertEquals(new SchemaElement("testMap").setRepetition_type(FieldRepetitionType.REQUIRED).setNum_children(1).setConverted_type(ConvertedType.MAP).setLogicalType(LogicalType.MAP(new MapType())), parquetSchema.get(1));
    // PARQUET-1879 ensure that LogicalType is not written (null) but ConvertedType is MAP_KEY_VALUE for backwards-compatibility
    assertEquals(new SchemaElement("key_value").setRepetition_type(FieldRepetitionType.REPEATED).setNum_children(2).setConverted_type(ConvertedType.MAP_KEY_VALUE).setLogicalType(null), parquetSchema.get(2));
    assertEquals(new SchemaElement("key").setType(Type.BYTE_ARRAY).setRepetition_type(FieldRepetitionType.REQUIRED).setConverted_type(ConvertedType.UTF8).setLogicalType(LogicalType.STRING(new StringType())), parquetSchema.get(3));
    assertEquals(new SchemaElement("value").setType(Type.INT32).setRepetition_type(FieldRepetitionType.REQUIRED).setConverted_type(null).setLogicalType(null), parquetSchema.get(4));
    MessageType schema = parquetMetadataConverter.fromParquetSchema(parquetSchema, null);
    assertEquals(expected, schema);
}
Also used : StringType(org.apache.parquet.format.StringType) SchemaElement(org.apache.parquet.format.SchemaElement) MessageType(org.apache.parquet.schema.MessageType) MessageTypeParser.parseMessageType(org.apache.parquet.schema.MessageTypeParser.parseMessageType) MapType(org.apache.parquet.format.MapType) Test(org.junit.Test)

Aggregations

MapType (org.apache.parquet.format.MapType)1 SchemaElement (org.apache.parquet.format.SchemaElement)1 StringType (org.apache.parquet.format.StringType)1 MessageType (org.apache.parquet.schema.MessageType)1 MessageTypeParser.parseMessageType (org.apache.parquet.schema.MessageTypeParser.parseMessageType)1 Test (org.junit.Test)1