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

  1. Make binary values top-level BYTES/BINARY_VECTOR columns instead of array elements
  2. Serialize array binary elements to STRING (e.g. base64) before the sink
  3. 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

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


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