XiaoHongbo-Hope opened a new pull request, #9826:
URL: https://github.com/apache/paimon/pull/9826

   ## Purpose
   
   Align PyPaimon manifest pruning with the block-based Java reader introduced 
by #9160.
   
   `fastavro.reader()` currently materializes the complete nested `_FILE` 
record before PyPaimon applies partition and bucket filters. On large 
manifests, most of those objects can be discarded immediately.
   
   ## Changes
   
   - Read standard-order manifest entries by Avro block.
   - Decode the partition and bucket prefix first and skip `_FILE` for rejected 
entries.
   - Preserve the generic `fastavro.reader()` path when no early filter is 
present.
   - Fall back to the generic reader for historical manifests with reordered 
top-level fields.
   - Support both the legacy and current fastavro named-schema layouts.
   
   ## Benchmark
   
   Read-only planning benchmark on a fixed snapshot with 50 candidate manifests 
and about 13.8 million entries:
   
   | | Before | After |
   |---|---:|---:|
   | `new_scan().plan()` | 369.6 s | 245.6 s |
   
   This is a 1.50x speedup. Both runs produced the same 51 splits, 151 files, 
and 71,509 planned rows.
   
   ## Tests
   
   - `33 passed, 8 subtests passed` in `pypaimon/tests/manifest`
   - `25 passed, 2 subtests passed` in `partition_predicate_test.py`
   - Python 3.6 / fastavro 1.4.7 read-and-skip compatibility check
   - Flake8 and `git diff --check`
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to