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
- Address the cause reported by the error message: Failed to read the reported value bytes
- 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)