prestodb/presto · error · PrestoException
NOT_SUPPORTED
NOT_SUPPORTED
Error message
File format not supported for Iceberg:
What it means
Thrown by IcebergFileWriterFactory.createFileWriter when the table's file format is neither PARQUET, ORC, nor DWRF — the only formats the Iceberg connector can write. Any other IcebergFileFormat value (e.g. a format added later or a legacy/incorrect table property) has no writer implementation.
Source
Thrown at presto-iceberg/src/main/java/com/facebook/presto/iceberg/IcebergFileWriterFactory.java:128
}
public IcebergFileWriter createFileWriter(
Path outputPath,
Schema icebergSchema,
JobConf jobConf,
ConnectorSession session,
HdfsContext hdfsContext,
FileFormat fileFormat,
MetricsConfig metricsConfig)
{
switch (fileFormat) {
case PARQUET:
return createParquetWriter(outputPath, icebergSchema, jobConf, session, hdfsContext, metricsConfig);
case ORC:
case DWRF:
return createOrcWriter(outputPath, icebergSchema, jobConf, session);
}
throw new PrestoException(NOT_SUPPORTED, "File format not supported for Iceberg: " + fileFormat);
}
private IcebergFileWriter createParquetWriter(
Path outputPath,
Schema icebergSchema,
JobConf jobConf,
ConnectorSession session,
HdfsContext hdfsContext,
MetricsConfig metricsConfig)
{
List<String> fileColumnNames = icebergSchema.columns().stream()
.map(Types.NestedField::name)
.collect(toImmutableList());
List<Type> fileColumnTypes = icebergSchema.columns().stream()
.map(column -> toPrestoType(column.type(), typeManager))
.collect(toImmutableList());
try {View on GitHub (pinned to 55bb57d202)
Solutions
- Set the table's file format to a supported value: ALTER TABLE t SET PROPERTIES format = 'PARQUET' (or ORC)
- Recreate the table with format='PARQUET' and copy data if the current format cannot be changed in place
- Upgrade Presto to a version that supports the requested file format
Example fix
// before ALTER TABLE t SET PROPERTIES format = 'AVRO'; -- unsupported for Iceberg writes // after ALTER TABLE t SET PROPERTIES format = 'PARQUET';
Defensive patterns
Strategy: validation
Validate before calling
Set<String> supported = Set.of("PARQUET", "ORC", "DWRF");
if (!supported.contains(format.toUpperCase())) throw new IllegalArgumentException("File format not supported for Iceberg: " + format); Try / catch
try { /* INSERT/CTAS into iceberg table */ } catch (PrestoException e) { if ("NOT_SUPPORTED".equals(e.getErrorCode().getName()) && e.getMessage().contains("File format not supported for Iceberg")) { /* switch table format to PARQUET and retry */ } else throw e; } Prevention
- Always create Iceberg tables with format='PARQUET' (or ORC) explicitly
- Do not set Iceberg table format properties by hand
- Check connector release notes before using newly introduced file formats
When it happens
Trigger: Writing data to an Iceberg table whose format property resolves to an unsupported file format, e.g. after switching iceberg.file-format to a value unsupported by the connector or hitting the fall-through after the switch's PARQUET/ORC/DWRF cases.
Common situations: Table properties manually edited to a wrong format, new format enum values from a newer Iceberg lib not yet supported by the Presto writer, or mixed-version clusters where the coordinator knows a format the writer does not.
Understand the failure class
Background: Presto NOT_SUPPORTED error: what "not supported" means and how to fix it — this error's family across 3 libraries.
Related errors
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/60587ce55c59fe12.
Report an issue: GitHub.