Conversation
Signed-off-by: Peifeng Li <lipeifeng@xiaohongshu.com>
Signed-off-by: Peifeng Li <lipeifeng@xiaohongshu.com>
|
Just fyi I am working on #9658 which should simplify all of it |
Merging this PR will degrade performance by 8.19%
|
| Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|
| ❌ | words_gather_dispatch_avx512[1024] |
9 ns | 13 ns | -30.77% |
| ❌ | lanezip_checked_add_u32_avx2[16384] |
5.3 µs | 6.2 µs | -13.96% |
| ❌ | dbp_split_kernel_mixed_null_neon[(I256, 1024)] |
1.9 µs | 2.2 µs | -11.65% |
| ⚡ | filtered_sink_i64_avx2[OneNullInEight] |
26.1 µs | 23.2 µs | +12.6% |
| ⚡ | mul_u32_nonnull_avx512 |
6.2 µs | 5.6 µs | +10.11% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing xiaoh1024:feat/spark-native-scan-descriptor (6ab7fcf) with develop (895935e)
Footnotes
-
2252 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
Summary
Expose the scan metadata needed by alternative execution engines, such as Comet, to preserve filter semantics when replacing the Vortex Spark reader.
Spark may remove filters fully handled by Vortex and prune predicate-only columns from the scan output. The replacement reader therefore needs both the full table schema and the predicates the scan has accepted.
Changes
VortexScan.tableSchema()to expose the schema before projection pushdown.VortexScan.pushedPredicates()to return a defensive copy of the accepted predicates. Document that replacement readers must enforce every predicate or retain the original reader.Testing
VortexScanTest: 2 tests passed on Spark 3.5.9 / Scala 2.12.VortexScanTest: 2 tests passed on Spark 4.1.2 / Scala 2.13.AI Assistance
AI tools assisted with implementation, tests* and drafting this PR description.