apache/seatunnel · error · SeaTunnelTextFormatException
UNSUPPORTED_DATA_TYPE
UNSUPPORTED_DATA_TYPE
Error message
SeaTunnel not support this data type [%s]
What it means
FastLogDeserializationSchema.convert maps Alibaba SLS FastLog fields to Java objects by SeaTunnel SQL type. When the field's SqlType is not one of the handled cases (STRING, INT, BIGINT, DOUBLE, FLOAT, DECIMAL, BOOLEAN, DATE/TIMESTAMP variants, NULL, BYTES), it throws SeaTunnelTextFormatException with code UNSUPPORTED_DATA_TYPE and the unsupported type name. This is a deserialization-time guard: the schema declares a type the SLS converter cannot materialize.
Source
Thrown at seatunnel-connectors-v2/connector-sls/src/main/java/org/apache/seatunnel/connectors/seatunnel/sls/serialization/FastLogDeserializationSchema.java:127
return Byte.parseByte(field);
case SMALLINT:
return Short.parseShort(field);
case INT:
return Integer.parseInt(field);
case BIGINT:
return Long.parseLong(field);
case FLOAT:
return Float.parseFloat(field);
case DOUBLE:
return Double.parseDouble(field);
case DECIMAL:
return new BigDecimal(field);
case NULL:
return null;
case BYTES:
return field.getBytes(StandardCharsets.UTF_8);
default:
throw new SeaTunnelTextFormatException(
CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE,
String.format(
"SeaTunnel not support this data type [%s]",
fieldType.getSqlType()));
}
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Change the SLS source schema so the offending column is declared as STRING (or another supported scalar type).
- Inspect the error message's [%s] value to identify which SqlType is unsupported, then adjust the schema.
- Flatten complex fields to strings upstream (e.g. JSON-encode arrays/maps into a string field) before ingestion.
- Upgrade the connector if a newer version added support for the type you need.
Example fix
// before: schema declares an unsupported complex type
schema = {
tags = array<string>
}
// after: declare as string and JSON-encode content
schema = {
tags = string
} Defensive patterns
Strategy: type-guard
Validate before calling
Set<SqlType> SUPPORTED = Set.of(STRING, INT, BIGINT, FLOAT, DOUBLE, DECIMAL, BOOLEAN, DATE, TIMESTAMP, NULL, BYTES);
for (SeaTunnelDataType<?> t : rowType.getFieldTypes()) {
if (!SUPPORTED.contains(t.getSqlType())) {
throw new IllegalArgumentException("SLS schema field type not supported: " + t.getSqlType());
}
} Type guard
boolean isSlsSupportedType(SeaTunnelDataType<?> t) {
switch (t.getSqlType()) {
case STRING: case INT: case BIGINT: case FLOAT: case DOUBLE:
case DECIMAL: case BOOLEAN: case DATE: case TIMESTAMP: case NULL: case BYTES:
return true;
default:
return false;
}
} Try / catch
try {
Object value = schema.convert(fastLog);
} catch (SeaTunnelTextFormatException e) {
log.error("Unsupported SLS field type, fix source schema: {}", e.getMessage());
throw e; // schema problem, not retryable
} Prevention
- Declare SLS source fields as scalar types (prefer STRING) at schema design time.
- JSON-encode complex nested log fields into string columns.
- Validate the declared schema against the supported-type list before job submission.
- Keep the connector updated for newly supported SQL types.
When it happens
Trigger: convert/field is invoked on a FastLog field whose resolved SeaTunnelFieldType.getSqlType() falls into the default branch — e.g. MAP, ARRAY, ROW, or other structured/complex types declared in the SLS source schema.
Common situations: SLS log fields auto-detected as complex types; users declaring ARRAY/MAP columns in the seaTunnel schema for log data that only contains scalars; connector version lacking support for a newer SQL type; schema mismatch between the declared SLS source schema and actual log content.
Related errors
- Unsupported type:
- Unsupported BYTES value type:
- UNSUPPORTED_DATA_TYPE
- UNSUPPORTED_DATA_TYPE
- UNSUPPORTED_DATA_TYPE
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/78b6988acf6a4c8e.
Report an issue: GitHub.