in parquet-hadoop/src/main/java/org/apache/parquet/format/converter/ParquetMetadataConverter.java [1176:1223]
LogicalTypeAnnotation getLogicalTypeAnnotation(LogicalType type) {
switch (type.getSetField()) {
case MAP:
return LogicalTypeAnnotation.mapType();
case BSON:
return LogicalTypeAnnotation.bsonType();
case DATE:
return LogicalTypeAnnotation.dateType();
case ENUM:
return LogicalTypeAnnotation.enumType();
case JSON:
return LogicalTypeAnnotation.jsonType();
case LIST:
return LogicalTypeAnnotation.listType();
case TIME:
TimeType time = type.getTIME();
return LogicalTypeAnnotation.timeType(time.isAdjustedToUTC, convertTimeUnit(time.unit));
case STRING:
return LogicalTypeAnnotation.stringType();
case DECIMAL:
DecimalType decimal = type.getDECIMAL();
return LogicalTypeAnnotation.decimalType(decimal.scale, decimal.precision);
case INTEGER:
IntType integer = type.getINTEGER();
return LogicalTypeAnnotation.intType(integer.bitWidth, integer.isSigned);
case UNKNOWN:
return LogicalTypeAnnotation.unknownType();
case TIMESTAMP:
TimestampType timestamp = type.getTIMESTAMP();
return LogicalTypeAnnotation.timestampType(timestamp.isAdjustedToUTC, convertTimeUnit(timestamp.unit));
case UUID:
return LogicalTypeAnnotation.uuidType();
case FLOAT16:
return LogicalTypeAnnotation.float16Type();
case GEOMETRY:
GeometryType geometry = type.getGEOMETRY();
return LogicalTypeAnnotation.geometryType(geometry.getCrs());
case GEOGRAPHY:
GeographyType geography = type.getGEOGRAPHY();
return LogicalTypeAnnotation.geographyType(
geography.getCrs(), toParquetEdgeInterpolationAlgorithm(geography.getAlgorithm()));
case VARIANT:
VariantType variant = type.getVARIANT();
return LogicalTypeAnnotation.variantType(variant.getSpecification_version());
default:
throw new RuntimeException("Unknown logical type " + type);
}
}