public SchemaMapping fromArrow(Schema arrowSchema) {
    List<Field> fields = arrowSchema.getFields();
    List<TypeMapping> parquetFields = fromArrow(fields);
    MessageType parquetType =
        addToBuilder(parquetFields, Types.buildMessage()).named("root");
    return new SchemaMapping(arrowSchema, parquetType, parquetFields);
  }
@Test
  public void testArrowTimestampMillisecondToParquet() {
    MessageType expected = converter
        .fromArrow(new Schema(asList(field("a", new ArrowType.Timestamp(TimeUnit.MILLISECOND, "UTC")))))
        .getParquetSchema();
    Assert.assertEquals(
        expected,
        Types.buildMessage()
            .addField(Types.optional(INT64)
                .as(LogicalTypeAnnotation.timestampType(true, MILLIS))
                .named("a"))
            .named("root"));
  }