public static SeaTunnelDataType<?> covertHiveTypeToSeaTunnelType(String name, String hiveType) {
        if (hiveType.contains("varchar")) {
            return BasicType.STRING_TYPE;
        }
        if (hiveType.contains("char")) {
            throw CommonError.convertToSeaTunnelTypeError(
                    HiveConstants.CONNECTOR_NAME, PluginType.SOURCE, hiveType, name);
        }
        if (hiveType.contains("binary")) {
            return PrimitiveByteArrayType.INSTANCE;
        }
        if (hiveType.contains("struct")) {
            LinkedHashMap<String, Object> fields = new LinkedHashMap<>();
            int start = hiveType.indexOf("<");
            int end = hiveType.lastIndexOf(">");
            String[] columns = hiveType.substring(start + 1, end).split(",");
            for (String column : columns) {
                String[] splits = column.split(":");
                fields.put(
                        splits[0], covertHiveTypeToSeaTunnelType(splits[0], splits[1]).toString());
            }
            return SeaTunnelDataTypeConvertorUtil.deserializeSeaTunnelDataType(
                    name, JsonUtils.toJsonString(fields));
        }
        return SeaTunnelDataTypeConvertorUtil.deserializeSeaTunnelDataType(name, hiveType);
    }
@Test
    void convertHiveStructType() {
        SeaTunnelDataType<?> structType =
                HiveTypeConvertor.covertHiveTypeToSeaTunnelType(
                        "structType", "struct<country:String,city:String>");
        assertEquals(SqlType.ROW, structType.getSqlType());
        SeaTunnelRowType seaTunnelRowType = (SeaTunnelRowType) structType;
        assertEquals(BasicType.STRING_TYPE, seaTunnelRowType.getFieldType(0));
        assertEquals(BasicType.STRING_TYPE, seaTunnelRowType.getFieldType(0));
    }