apache/flink · error · IOException

Could not read page in col

Error message

Could not read page in col %s because the dictionary was missing for encoding %s.

What it means

Fires in initDataReader when a page uses dictionary encoding but the reader's dictionary is null (dictionary page missing or unread). The column's encoded values cannot be resolved to actual values, so page reading fails with the encoding and column descriptor reported.

Solutions

  1. Address the cause reported by the error message: Could not read page in col the reported value because the dictionary was missing for encoding the reported value.
  2. Verify the inputs, configuration values, and classpath/dependency setup related to this operation, then retry.

Example fix

Correct the condition described ("Could not read page in col the reported value because the dictionary was missing for encoding the reported value.") and rerun the job or command.
Defensive patterns

Strategy: validation

When it happens

Trigger: Triggered at runtime when the operation fails because: Could not read page in col the reported value because the dictionary was missing for encoding the reported value.

Common situations: Commonly caused by misconfiguration, missing dependencies or files, unsupported types or operations, or invalid user input leading to: Could not read page in col the reported value because the dictionary was missing for encoding the reported value.


AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14). Data as JSON: /api/errors/070732c34057247b. Report an issue: GitHub.

Appendix: source

Thrown at flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/vector/reader/NestedPrimitiveColumnReader.java:499

                        return null;
                    }

                    @Override
                    public Void visit(DataPageV2 dataPageV2) {
                        readPageV2(dataPageV2);
                        return null;
                    }
                });
    }

    private void initDataReader(Encoding dataEncoding, ByteBufferInputStream in, int valueCount)
            throws IOException {
        this.pageValueCount = valueCount;
        this.endOfPageValueCount = valuesRead + pageValueCount;
        if (dataEncoding.usesDictionary()) {
            this.dataColumn = null;
            if (dictionary == null) {
                throw new IOException(
                        String.format(
                                "Could not read page in col %s because the dictionary was missing for encoding %s.",
                                descriptor, dataEncoding));
            }
            dataColumn =
                    ParquetDataColumnReaderFactory.getDataColumnReaderByType(
                            type.asPrimitiveType(),
                            dataEncoding.getDictionaryBasedValuesReader(
                                    descriptor, VALUES, dictionary.getDictionary()),
                            isUtcTimestamp);
            this.isCurrentPageDictionaryEncoded = true;
        } else {
            dataColumn =
                    ParquetDataColumnReaderFactory.getDataColumnReaderByType(
                            type.asPrimitiveType(),
                            dataEncoding.getValuesReader(descriptor, VALUES),
                            isUtcTimestamp);
            this.isCurrentPageDictionaryEncoded = false;

View on GitHub (pinned to 2f3c205e92)