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

  1. Check the error message for the unsupported SqlType and change the schema to a supported type (string/int/long/double/decimal/timestamp, etc.)
  2. Cast unsupported columns in a SQL transform before the sink (e.g. CAST(col AS STRING))
  3. Remove NULL-typed placeholder columns from the schema
  4. 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

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


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/6df4c1582bed4b19. Report an issue: GitHub.