apache/seatunnel · error · IotdbConnectorException
UNSUPPORTED_DATA_TYPE
UNSUPPORTED_DATA_TYPE
Error message
Unsupported data type:
What it means
Thrown by convert() in IoTDBv2SourceSinkWriter when mapping a SeaTunnel data type to a TSDataType for IoTDB and the type falls to the default branch. The writer cannot represent the SeaTunnel column type as an IoTDB type. This happens at type-conversion time when preparing the tablet field types, before any write.
Source
Thrown at seatunnel-connectors-v2/connector-iotdb-v2/src/main/java/org/apache/seatunnel/connectors/seatunnel/iotdbv2/sink/relational/IoTDBv2RelationalSinkWriter.java:164
return TSDataType.BOOLEAN;
case TINYINT:
case SMALLINT:
case INT:
return TSDataType.INT32;
case BIGINT:
return TSDataType.INT64;
case FLOAT:
return TSDataType.FLOAT;
case DOUBLE:
return TSDataType.DOUBLE;
case STRING:
return TSDataType.STRING;
case TIMESTAMP:
return TSDataType.TIMESTAMP;
case DATE:
return TSDataType.DATE;
default:
throw new IotdbConnectorException(
CommonErrorCode.UNSUPPORTED_DATA_TYPE,
"Unsupported data type: " + dataType);
}
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Cast/convert the unsupported column to a supported scalar (STRING/INT64/DOUBLE etc.) via a transform before the sink
- Drop the offending column from the sink schema
- Check IoTDB-v2 sink docs for the supported type mapping table
- Upgrade SeaTunnel in case newer versions map additional types
Example fix
// before // schema: id INT64, payload MAP<STRING,STRING> // after // transform to stringify payload, schema: id INT64, payload STRING
Defensive patterns
Strategy: validation
Validate before calling
Set<String> mappable = Set.of("STRING","BOOLEAN","INT32","INT64","FLOAT","DOUBLE","TIMESTAMP","DATE");
rowType.getFieldTypes().stream()
.map(t -> t.getSqlType().name())
.filter(n -> !mappable.contains(n))
.forEach(n -> { throw new IllegalArgumentException("Cannot map " + n + " to TSDataType"); }); Try / catch
try {
TSDataType tsType = writer.convert(dataType);
} catch (IotdbConnectorException e) {
if (CommonErrorCode.UNSUPPORTED_DATA_TYPE.equals(e.getSeaTunnelErrorCode())) {
// fallback: stringify the column or skip it
}
} Prevention
- Restrict source schema columns to IoTDB-mappable types
- Add Cast transforms for anything exotic before the sink
- Validate schema compatibility in CI with the type mapping table
- Review release notes for new SeaTunnel types after upgrades
When it happens
Trigger: A SeaTunnel row type column (e.g. MAP, ARRAY, ROW, BYTES, or a newly added type) reaches convert() and no case matches, throwing with 'Unsupported data type: <type>'.
Common situations: Upstream source emits complex/nested types; table schema includes an exotic type not in IoTDB's supported set; SeaTunnel version upgrade introduced new types not yet mapped in this sink.
Related errors
- UNSUPPORTED_DATA_TYPE
- Unsupported to derive Schema for type: ${dataType}
- UNSUPPORTED_DATA_TYPE
- UNSUPPORTED_DATA_TYPE
- Unsupported type:
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/3b4609ad8ee53dbd.
Report an issue: GitHub.