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);
}
}