apache/seatunnel · error · DeepLakeConnectorException
UNSUPPORTED_DATA_TYPE
UNSUPPORTED_DATA_TYPE
Error message
DeepLake sink does not support binary values inside arrays
What it means
When mapping a SeaTunnel schema to Deep Lake column types, BYTES or BINARY_VECTOR columns nested inside an ARRAY are rejected with DeepLakeConnectorException(UNSUPPORTED_DATA_TYPE). Deep Lake has no array-of-binary column representation, so the sink refuses to create such a table instead of silently degrading data.
Source
Thrown at seatunnel-connectors-v2/connector-deeplake/src/main/java/org/apache/seatunnel/connectors/seatunnel/deeplake/client/DeepLakeSql.java:128
case BIGINT:
return "BIGINT";
case FLOAT:
return "REAL";
case DOUBLE:
return "DOUBLE PRECISION";
case DECIMAL:
DecimalType decimalType = (DecimalType) type;
return "NUMERIC("
+ decimalType.getPrecision()
+ ", "
+ decimalType.getScale()
+ ")";
case STRING:
return "TEXT";
case BYTES:
case BINARY_VECTOR:
if (arrayElement) {
throw new DeepLakeConnectorException(
DeepLakeConnectorErrorCode.UNSUPPORTED_DATA_TYPE,
"DeepLake sink does not support binary values inside arrays");
}
return "BYTEA";
case DATE:
return "DATE";
case TIME:
return "TIME";
case TIMESTAMP:
return "TIMESTAMP";
case TIMESTAMP_TZ:
return "TIMESTAMPTZ";
case FLOAT_VECTOR:
return "FLOAT4[]";
case ARRAY:
ArrayType<?, ?> arrayType = (ArrayType<?, ?>) type;
return toDeepLakeType(arrayType.getElementType(), true) + "[]";
default:View on GitHub (pinned to cf67b549a7)
Solutions
- Make binary values top-level BYTES/BINARY_VECTOR columns instead of array elements
- Serialize array binary elements to STRING (e.g. base64) before the sink
- Drop or split the offending column in a transform before writing to Deep Lake
Example fix
// before field bytes_list array<bytes> // after field bytes_list string // base64-encoded elements, or a top-level bytes column
Defensive patterns
Strategy: validation
Validate before calling
for (SeaTunnelType<?> t : rowType.getFieldTypes()) {
if (t instanceof ArrayType<?,?> at) {
SqlType el = at.getElementType().getSqlType();
if (el == SqlType.BYTES || el == SqlType.BINARY_VECTOR)
throw new IllegalStateException("Binary inside arrays unsupported by DeepLake sink");
}
} Type guard
boolean isBinaryInArray(SeaTunnelType<?> t) { return t instanceof ArrayType<?,?> at && (at.getElementType().getSqlType() == SqlType.BYTES || at.getElementType().getSqlType() == SqlType.BINARY_VECTOR); } Try / catch
try { createTable(schema); } catch (DeepLakeConnectorException e) { if ("UNSUPPORTED_DATA_TYPE".equals(e.getErrorCode())) { schema = encodeBinaryAsBase64(schema); createTable(schema); } else { throw e; } } Prevention
- Keep binary columns top-level, never inside arrays
- Inspect source schemas (JSON/CDC) for array<bytes> before targeting Deep Lake
- Base64-encode binary array data into STRING columns upstream
When it happens
Trigger: Creating a Deep Lake table via DeepLakeSql.toDeepLakeType when the schema contains ArrayType<BYTES> or ArrayType<BINARY_VECTOR>, i.e. the recursive call has arrayElement=true on a binary type.
Common situations: Sources with arrays of binary blobs (protobuf payloads, grouped image byte arrays); schema auto-inference producing array<bytes> from JSON sources.
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/d6398eaf728672a2.
Report an issue: GitHub.