public BaseDataType getDataType()

in fastmodel-transform/fastmodel-transform-hive/src/main/java/com/aliyun/fastmodel/transform/hive/client/converter/HiveClientConverter.java [105:139]


    public BaseDataType getDataType(Column column) {
        String dataTypeName = column.getDataType();
        if (StringUtils.isBlank(dataTypeName)) {
            throw new IllegalArgumentException("dataType name can't be null:" + column.getName());
        }
        IDataTypeName byValue = HiveDataTypeName.getByValue(dataTypeName);
        Dimension dimension = byValue.getDimension();
        if (dimension == null || dimension == Dimension.ZERO) {
            return DataTypeUtil.simpleType(byValue);
        }
        if (dimension == Dimension.ONE) {
            boolean isValidLength = column.getLength() != null && column.getLength() > 0;
            if (isValidLength) {
                NumericParameter numericParameter = new NumericParameter(String.valueOf(column.getLength()));
                return new HiveGenericDataType(byValue, numericParameter);
            }
        }
        if (dimension == Dimension.TWO) {
            if (column.getPrecision() != null) {
                NumericParameter numericParameter = new NumericParameter(String.valueOf(column.getPrecision()));
                if (column.getScale() == null) {
                    return DataTypeUtil.simpleType(byValue, numericParameter);
                }
                NumericParameter scale = new NumericParameter(String.valueOf(column.getScale()));
                return new HiveGenericDataType(byValue, numericParameter, scale);
            }
        }
        //complex data use parse dataType
        ReverseContext context = ReverseContext.builder().build();
        try {
            return hiveLanguageParser.parseDataType(dataTypeName, context);
        } catch (ParseException e) {
            throw new IllegalArgumentException("not support dataTypeName with:" + dataTypeName);
        }
    }