Neuw84 opened a new issue, #6133:
URL: https://github.com/apache/datafusion-comet/issues/6133

   ### Describe the bug
   
   TPC-DS **q64** returns **0 rows** at scale factor 1000 with Comet native 
execution, where Spark returns 12,185. The same `CometNativeScan` feeding 
Spark's own operators (every `spark.comet.exec.<operator>.enabled=false`, so 
the scan output goes through `ColumnarToRow`) returns the correct 12,185 rows, 
and at SF10 every configuration agrees with Spark. So the scan's values are 
right when read through the `ColumnVector` accessors, and the rows are lost 
only when the scan's batches are consumed by native operators.
   
   Where the rows go: with operators disabled one at a time, the loss sits in 
the join of the second `cs_ui` instance of the `cross_sales` CTE against the 
broadcast of `store_sales (ss_sold_date_sk in 2000) ⋈ store_returns`; before 
that join the intermediate row counts agree with Spark. Turning AQE off does 
not change the result. An unrelated third-party columnar operator set that 
consumes Comet's scan output through the Arrow C data interface loses the rows 
in exactly the same place, which suggests the difference is in the exported 
batches rather than in a particular operator.
   
   Environment: Comet 1.0.0, Spark 4.1.3 (`spark-4.1.3-bin-hadoop3`), Java 25 
(Corretto), Kubernetes (Spark operator), TPC-DS SF1000 parquet on S3 read 
through S3A. 8 executors × 13 cores, 18 GB heap + 16 GB overhead, 
`spark.memory.offHeap.size=16g`.
   
   | configuration | q64 rows |
   |---|---|
   | Spark (no Comet) | 12,185 |
   | Comet scan + Comet native operators + Comet shuffle | **0** (at 200 and 
300 shuffle partitions) |
   | Comet scan, Spark operators and shuffle 
(`spark.comet.exec.*.enabled=false`) | 12,185 |
   | any of the above at SF10 | 12,185-equivalent, all agree |
   
   ### Steps to reproduce
   
   1. Generate TPC-DS SF1000 as parquet (we used the `tpcds-kit` `dsdgen`, 
`char`/`varchar` columns stored as strings; SF10 does not reproduce).
   2. Run q64 (the official TPC-DS text, parameters `i_color in 
('purple','burlywood','indian','spring','floral','medium')`, `i_current_price 
between 64 and 74`, `cs_ui.syear = 1999` / `cs2.syear = 2000`) with:
   
   ```
   --conf spark.plugins=org.apache.spark.CometPlugin
   --conf spark.comet.enabled=true --conf spark.comet.scan.enabled=true
   --conf spark.comet.exec.enabled=true --conf 
spark.comet.exec.shuffle.enabled=true --conf spark.comet.exec.shuffle.mode=auto
   --conf 
spark.shuffle.manager=org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager
   --conf spark.comet.explainFallback.enabled=true --conf 
spark.comet.cast.allowIncompatible=true
   --conf spark.memory.offHeap.enabled=true --conf spark.memory.offHeap.size=16g
   --conf spark.sql.shuffle.partitions=300
   ```
   
   → 0 rows.
   
   3. Same, adding `--conf spark.comet.exec.shuffle.enabled=false` and 
`spark.comet.exec.{project,filter,aggregate,sort,localLimit,globalLimit,takeOrderedAndProject,hashJoin,sortMergeJoin,broadcastHashJoin,broadcastExchange,expand,union,window,coalesce,collectLimit,explode,sample}.enabled=false`,
 default shuffle manager → 12,185 rows, the plan still showing 
`CometNativeScan` for all 48 scans.
   
   ### Expected behavior
   
   12,185 rows, as Spark and as Comet's scan under Spark's operators.
   
   ### Additional context
   
   I can attach `explain formatted` output of both plans and the per-join 
intermediate row counts if useful. Related to the much older #74 (q64 among the 
queries once disabled for result differences), but here the scan alone is fine 
and the difference appears only at scale.
   


-- 
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]


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

Reply via email to