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

  1. Set the table's file format to a supported value: ALTER TABLE t SET PROPERTIES format = 'PARQUET' (or ORC)
  2. Recreate the table with format='PARQUET' and copy data if the current format cannot be changed in place
  3. 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

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.