apache/beam · error · IllegalArgumentException

Unsupported vector type: <type>

Error message

Unsupported vector type: <type>

What it means

SerializableRow.getVectorValue() converts ColumnVector entries into Java objects for the supported DataType set; an unrecognized vector DataType throws IllegalArgumentException 'Unsupported vector type: <type>'. It is the vectorized counterpart of getValue()'s unsupported-type error and is reached while converting arrays/maps/keys.

Source

Thrown at sdks/java/io/delta/src/main/java/org/apache/beam/sdk/io/delta/SerializableRow.java:286

      StructType structType = (StructType) type;
      int numFields = structType.fields().size();
      ColumnVector[] childFields = new ColumnVector[numFields];
      for (int j = 0; j < numFields; j++) {
        childFields[j] = vector.getChild(j);
      }
      return new SerializableRow(new VectorRow(structType, childFields, index));
    } else if (type instanceof DateType) {
      return vector.getInt(index);
    } else if (type instanceof TimestampType) {
      return vector.getLong(index);
    } else if (type instanceof ArrayType) {
      ArrayValue arr = vector.getArray(index);
      return convertArray(arr, (ArrayType) type);
    } else if (type instanceof MapType) {
      MapValue map = vector.getMap(index);
      return convertMap(map, (MapType) type);
    }
    throw new IllegalArgumentException("Unsupported vector type: " + type);
  }

  private static List<@Nullable Object> convertArray(ArrayValue arr, ArrayType arrayType) {
    int size = arr.getSize();
    ColumnVector elements = arr.getElements();
    DataType elementType = arrayType.getElementType();
    List<@Nullable Object> result = new ArrayList<>(size);
    for (int i = 0; i < size; i++) {
      result.add(getVectorValue(elements, i, elementType));
    }
    return result;
  }

  private static Map<Object, @Nullable Object> convertMap(MapValue map, MapType mapType) {
    int size = map.getSize();
    ColumnVector keys = map.getKeys();
    ColumnVector values = map.getValues();
    DataType keyType = mapType.getKeyType();

View on GitHub (pinned to 12126d8942)

Solutions

  1. Upgrade the Beam Delta IO connector and io.delta kernel dependencies to versions supporting the nested element type
  2. Locate the offending nested column (array element or map key/value type) from the table schema
  3. Rewrite the table casting the nested element type to a supported one
  4. Flatten or restructure the schema (e.g. store complex values as JSON strings) if the type remains unsupported

Example fix

// before
// map<string, unsupported_nested_type> in the table
PCollection<Row> rows = input.apply(DeltaIO.read().withTable(path).withStartVersion(0L));
// after
-- rewrite the table casting the nested element type (Spark example)
df = spark.read.format("delta").load(path).withColumn("m", expr("map_from_entries(transform(map_entries(m), e -> (e.key, cast(e.value as string))))"))
df.write.format("delta").mode("overwrite").save(path)
Defensive patterns

Strategy: validation

Validate before calling

// Recursively check nested array/map element types for supported mappings before reading
checkNested(deltaSchema); // throws if any nested element/key/value DataType is unsupported

Try / catch

try {
  rows = input.apply(deltaIO);
} catch (IllegalArgumentException e) {
  if (e.getMessage().startsWith("Unsupported vector type:")) {
    // restructure nested collections to supported element types, or upgrade connector
  } else { throw e; }
}

Prevention

When it happens

Trigger: While serializing array elements or map keys/values during processElement, a nested ColumnVector carries a Delta DataType with no conversion mapping.

Common situations: Nested arrays/maps containing newer Delta element types the connector doesn't support; version skew between delta kernel and the Beam Delta IO connector; tables written by newer Delta writer versions.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of apache/beam@12126d8942 (2026-09-13). Data as JSON: /api/errors/fce94ea47ef68ef5. Report an issue: GitHub.