apache/flink · error · ParquetDecodingException

Failed to read bytes

Error message

Failed to read {} bytes

What it means

Wraps an EOF/short-read while pulling 'length' bytes of primitive data from the page stream in readDataBuffer; the chained IOException is typically a premature end of the page buffer, indicating truncated or corrupt page data for the column.

Solutions

  1. Address the cause reported by the error message: Failed to read the reported value bytes
  2. Verify the inputs, configuration values, and classpath/dependency setup related to this operation, then retry.

Example fix

Correct the condition described ("Failed to read the reported value bytes") and rerun the job or command.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Triggered at runtime when the operation fails because: Failed to read the reported value bytes.

Common situations: Commonly caused by misconfiguration, missing dependencies or files, unsupported types or operations, or invalid user input leading to: Failed to read the reported value bytes.


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

Appendix: source

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

            this.isCurrentPageDictionaryEncoded = true;
        } else {
            if (dataEncoding != Encoding.PLAIN) {
                throw new UnsupportedOperationException("Unsupported encoding: " + dataEncoding);
            }
            this.dictionaryIdsDecoder = null;
            LOG.debug("init from page at offset {} for length {}", in.position(), in.available());
            this.dataInputStream = in.remainingStream();
            this.isCurrentPageDictionaryEncoded = false;
        }

        afterReadPage();
    }

    final ByteBuffer readDataBuffer(int length) {
        try {
            return dataInputStream.slice(length).order(ByteOrder.LITTLE_ENDIAN);
        } catch (IOException e) {
            throw new ParquetDecodingException("Failed to read " + length + " bytes", e);
        }
    }

    /** After read a page, we may need some initialization. */
    protected void afterReadPage() {}

    /**
     * Support lazy dictionary ids decode. See more in {@link ParquetDictionary}. If return false,
     * we will decode all the data first.
     */
    protected boolean supportLazyDecode() {
        return true;
    }

    /** Read batch from {@link #runLenDecoder} and {@link #dataInputStream}. */
    protected abstract void readBatch(int rowId, int num, VECTOR column);

    /**

View on GitHub (pinned to 2f3c205e92)