apache/seatunnel · error · FileConnectorException
UNSUPPORTED_DATA_TYPE
UNSUPPORTED_DATA_TYPE
Error message
SeaTunnel file connector is not supported for this data type [%s]
What it means
ParquetWriteStrategy.resolveObject converts each SeaTunnel row field into a Parquet record value via a switch on the field's SqlType. When the SqlType has no mapping (falls into default, including SQL type NULL), it throws FileConnectorException with UNSUPPORTED_DATA_TYPE naming the SqlType. It means the Parquet writer cannot represent that SeaTunnel type in the record it builds.
Source
Thrown at seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/sink/writer/ParquetWriteStrategy.java:322
.collect(Collectors.toList());
Schema recordSchema =
buildAvroSchemaWithRowType(
(SeaTunnelRowType) seaTunnelDataType, sinkColumnsIndex);
GenericRecordBuilder recordBuilder = new GenericRecordBuilder(recordSchema);
for (int i = 0; i < fieldNames.length; i++) {
String parquetFieldName = normalizeFieldName(fieldNames[i]);
recordBuilder.set(
parquetFieldName,
resolveObject(
parquetFieldName, seaTunnelRow.getField(i), fieldTypes[i]));
}
return recordBuilder.build();
default:
String errorMsg =
String.format(
"SeaTunnel file connector is not supported for this data type [%s]",
seaTunnelDataType.getSqlType());
throw new FileConnectorException(
CommonErrorCodeDeprecated.UNSUPPORTED_DATA_TYPE, errorMsg);
}
}
private static String normalizeFieldName(String fieldName) {
return fieldName.toLowerCase(Locale.ROOT);
}
public Type seaTunnelDataType2ParquetDataType(
String fieldName, SeaTunnelDataType<?> seaTunnelDataType) {
switch (seaTunnelDataType.getSqlType()) {
case ARRAY:
SeaTunnelDataType<?> elementType =
((ArrayType<?, ?>) seaTunnelDataType).getElementType();
return Types.optionalGroup()
.as(OriginalType.LIST)
.addField(
Types.repeatedGroup()View on GitHub (pinned to cf67b549a7)
Solutions
- Check the error message for the unsupported SqlType and change the schema to a supported type (string/int/long/double/decimal/timestamp, etc.)
- Cast unsupported columns in a SQL transform before the sink (e.g. CAST(col AS STRING))
- Remove NULL-typed placeholder columns from the schema
- If a genuinely supported type is missing, extend seaTunnelDataType2ParquetDataType/resolveObject in the connector and contribute a PR
Example fix
-- before: sink receives MAP/NULL type column
-- after
transform Sql {
source_table = "src"
result_table_name = "casted"
query = "SELECT CAST(unsupported_col AS STRING) AS unsupported_col, * FROM src"
} Defensive patterns
Strategy: validation
Validate before calling
Set<SqlType> supported = Set.of(STRING,INT,BIGINT,DOUBLE,FLOAT,DECIMAL,BOOLEAN,TIMESTAMP,DATE,MAP,ARRAY,ROW); schemaFields.forEach(f -> { if (!supported.contains(f.sqlType)) throw new ConfigException("unsupported: " + f.sqlType); }); Try / catch
try { sinkWriter.write(row); } catch (FileConnectorException e) { if (e.getMessage().contains("not supported for this data type")) { /* CAST column upstream */ } } Prevention
- Validate the sink schema against supported Parquet SqlTypes at config time
- CAST or drop unsupported columns in a SQL transform before the sink
- Keep engine and connector versions aligned to avoid unhandled new SqlTypes
When it happens
Trigger: Writing rows to a Parquet sink whose SeaTunnelRow contains a field with an unsupported SqlType (e.g. SeaTunnelDataType NULL or a newly added type not covered by the switch); recursion via resolveObject/resolvedObject for nested structures.
Common situations: Using exotic column types (arrays/maps/rows of unsupported element types) with parquet file format; a source emitting NULL-typed columns; upgrading SeaTunnel adds a new SqlType while the connector switch wasn't extended; type coercion mistakes leaving a raw type in the row schema.
Related errors
- Unsupported type:
- Unsupported SQL type:
- Vitess CDC bootstrap schema does not support catalog SQL typ
- UNSUPPORTED_DATA_TYPE
- UNSUPPORTED_DATA_TYPE
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/6df4c1582bed4b19.
Report an issue: GitHub.