[ 
https://issues.apache.org/jira/browse/SPARK-60666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hyukjin Kwon resolved SPARK-60666.
----------------------------------
    Resolution: Fixed

Issue resolved by pull request 112
[https://github.com/apache/spark-connect-rust/pull/112]

> Dispatch Arrow result decoding once per typed column in Spark Connect Rust
> --------------------------------------------------------------------------
>
>                 Key: SPARK-60666
>                 URL: https://issues.apache.org/jira/browse/SPARK-60666
>             Project: Spark
>          Issue Type: Improvement
>          Components: Connect
>    Affects Versions: connect-rust-4.3.0
>            Reporter: DB Tsai
>            Assignee: DB Tsai
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: connect-rust-4.3.0
>
>
> Current scope after the master rebase
> Arrow-to-Row materialization currently repeats dynamic array downcasts and 
> container slicing while decoding values. Prepare a borrowed typed decoder 
> once per Arrow column and nested child, then reuse it during row 
> materialization.
> This is an Arrow result-decoding optimization, independent of local-input 
> inference and pandas-input routing, with no intended API or behavior change. 
> Returned Row and Value objects must continue to own their contents without 
> retaining the Arrow arrays after decoding.
> Preserve row-major evaluation and error order, lazy errors for unused 
> unsupported children, absolute child offsets in sliced and nested arrays, 
> null handling, variant field selection, and exact scalar values. Regression 
> coverage should include nested lists, structs and maps; sliced arrays; empty 
> batches and containers; null parents; special floating-point bits; and 
> conversion-error ordering.
> Rebenchmark the current head against current master before claiming CPU, 
> wall-time, or memory improvements. Historical benchmark figures do not 
> validate the rebased patch, and no current memory saving or allocation-count 
> reduction is established. Live-Spark parity and current CI remain part of 
> validation.
> Proposed patch: https://github.com/apache/spark-connect-rust/pull/112
> Historical pre-rebase description and validation
> The text below records the original proposal and its historical measurements 
> and validation. It does not validate or measure the rebased patch. The 
> current scope above takes precedence.
> Arrow row materialization in spark-connect-rust repeatedly downcasts column 
> arrays and slices list/map children. Resolve a borrowed typed decoder once 
> per Arrow column and nested child, then reuse it during row materialization.
> Preserve row-major evaluation, lazy errors, absolute child offsets, and owned 
> output values. No behavior or API change is intended. Add regression coverage 
> for sliced and nested arrays, nulls, exact scalar values, empty IPC boundary 
> batches, duplicate variant fields, and error ordering.
> Proposed implementation: https://github.com/apache/spark-connect-rust/pull/112
> The PR reports about 9% lower CPU and 8.6–8.9% lower wall time for fully 
> consumed depth-16 mixed output versus c36c846, with 0.83–0.94 MiB higher held 
> RSS. Confirmation used 30 processes/build/case across 38 cases, isolated 
> release wheels, and a same-binary control. No memory saving or 
> allocation-count reduction is established.
> Benchmark harness: 
> https://github.com/dbtsai/pyspark-connect-benchmark/tree/23bdf9046815ae615c921b2e6bab827eed00aaae
> Reported validation: 415 Rust unit/golden/sharing checks, both integration 
> compilation modes, formatting and core Clippy pass. A fresh release wheel 
> passes 273 offline Python tests, and the 108-class API snapshot is unchanged.
> The PR remains draft: full live Spark/official-suite parity is pending. 
> Complete CPU/memory gates remain unmet due to known SPARK-60607 failures and 
> inconclusive regression bounds; workspace Clippy is blocked by a missing WASM 
> target.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to