public static String fromIcebergToHiveType()

in metacat-connector-hive/src/main/java/com/netflix/metacat/connector/hive/converters/HiveTypeConverter.java [141:185]


    public static String fromIcebergToHiveType(final org.apache.iceberg.types.Type type) {
        switch (type.typeId()) {
            case BOOLEAN:
                return serdeConstants.BOOLEAN_TYPE_NAME;
            case INTEGER:
                return serdeConstants.INT_TYPE_NAME;
            case LONG:
                return serdeConstants.BIGINT_TYPE_NAME;
            case FLOAT:
                return serdeConstants.FLOAT_TYPE_NAME;
            case DOUBLE:
                return serdeConstants.DOUBLE_TYPE_NAME;
            case DATE:
                return serdeConstants.DATE_TYPE_NAME;
            case TIME:
                throw new UnsupportedOperationException("Hive does not support time fields");
            case TIMESTAMP:
                return serdeConstants.TIMESTAMP_TYPE_NAME;
            case STRING:
            case UUID:
                return serdeConstants.STRING_TYPE_NAME;
            case FIXED:
                return serdeConstants.BINARY_TYPE_NAME;
            case BINARY:
                return serdeConstants.BINARY_TYPE_NAME;
            case DECIMAL:
                final Types.DecimalType decimalType = (Types.DecimalType) type;
                return String.format("decimal(%s,%s)", decimalType.precision(), decimalType.scale());
            case STRUCT:
                final Types.StructType structType = type.asStructType();
                final String nameToType = (String) structType.fields().stream().map((f) -> {
                    return String.format("%s:%s", f.name(), fromIcebergToHiveType(f.type()));
                }).collect(Collectors.joining(","));
                return String.format("struct<%s>", nameToType);
            case LIST:
                final Types.ListType listType = type.asListType();
                return String.format("array<%s>", fromIcebergToHiveType(listType.elementType()));
            case MAP:
                final Types.MapType mapType = type.asMapType();
                return String.format("map<%s,%s>", fromIcebergToHiveType(mapType.keyType()),
                    fromIcebergToHiveType(mapType.valueType()));
            default:
                throw new UnsupportedOperationException(type + " is not supported");
        }
    }