apache/iceberg · error · UnsupportedOperationException

Not a supported type: atomic.catalogString()

Error message

Not a supported type: atomic.catalogString()

What it means

Type-mapping failure in SparkTypeToType.atomic: the Spark AtomicType has no Iceberg mapping in this converter's chain of instanceof checks (date, timestamp, decimal, binary, null, string, numeric types are handled above). The message shows the Spark type's catalogString; typical triggers are user-defined or otherwise unmappable Spark types.

Solutions

  1. Cast the Spark column to a supported primitive type before conversion
  2. Remove or rename UDT columns from the schema being converted
  3. Extend the converter with a mapping for the Spark type
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java:163 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/iceberg@86d9c8fc54 (2026-09-12). Data as JSON: /api/errors/97fb866dc96e4b21. Report an issue: GitHub.

Appendix: source

Thrown at spark/v3.5/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java:163

    } else if (atomic instanceof DateType) {
      return Types.DateType.get();

    } else if (atomic instanceof TimestampType) {
      return Types.TimestampType.withZone();

    } else if (atomic instanceof TimestampNTZType) {
      return Types.TimestampType.withoutZone();

    } else if (atomic instanceof DecimalType) {
      return Types.DecimalType.of(
          ((DecimalType) atomic).precision(), ((DecimalType) atomic).scale());
    } else if (atomic instanceof BinaryType) {
      return Types.BinaryType.get();
    } else if (atomic instanceof NullType) {
      return Types.UnknownType.get();
    }

    throw new UnsupportedOperationException("Not a supported type: " + atomic.catalogString());
  }
}

View on GitHub (pinned to 86d9c8fc54)