apache/flink · error · ParquetDecodingException
Could not read levels in page for col
Error message
Could not read levels in page for col %s.
What it means
This is a wrapped decoding failure raised when newRLEIterator cannot construct the run-length/bit-packing hybrid iterator for a V2 data page's repetition- or definition-level stream. The IOException almost always originates while materializing the level bytes (bytes.toByteArray()) or reading the resulting ByteArrayInputStream, meaning the page's level data is truncated, corrupt, or its declared max level is inconsistent with the encoded bit width. It signals that the physical Parquet page for the column cannot be decoded, not a logical/data issue in the user's job.
Solutions
- Address the cause reported by the error message: Could not read levels in page for col the reported value.
- Verify the inputs, configuration values, and classpath/dependency setup related to this operation, then retry.
Example fix
Correct the condition described ("Could not read levels in page for col the reported value.") and rerun the job or command. Defensive patterns
Strategy: try-catch
When it happens
Trigger: Triggered at runtime when the operation fails because: Could not read levels in page for col 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 levels in page for col the reported value.
AI-assisted analysis of apache/flink@2f3c205e92 (2026-08-14).
Data as JSON: /api/errors/eb64e4d6015c6741.
Report an issue: GitHub.
Appendix: source
Thrown at flink-formats/flink-parquet/src/main/java/org/apache/flink/formats/parquet/vector/reader/NestedPrimitiveColumnReader.java:577
private IntIterator newRLEIterator(int maxLevel, BytesInput bytes) {
try {
if (maxLevel == 0) {
return new NullIntIterator();
}
return new RLEIntIterator(
new RunLengthBitPackingHybridDecoder(
BytesUtils.getWidthFromMaxInt(maxLevel),
new ByteArrayInputStream(bytes.toByteArray())));
} catch (IOException e) {
throw new ParquetDecodingException(
String.format("Could not read levels in page for col %s.", descriptor), e);
}
}View on GitHub (pinned to 2f3c205e92)