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
- Cast the Spark column to a supported primitive type before conversion
- Remove or rename UDT columns from the schema being converted
- 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)