apache / apache/datafusion

[EPIC] Make DataFusion the top of the ClickBench Parquet leaderboard

Open
#18,489 35 comments 11 reactions 0 assignees View on GitHub
PROPOSAL EPIC
Dominant language
Rust
Stars
9.3k
Forks
2.4k
Avg merge
3d 7h
Merged PRs (30d)
344

Description

"It is time to regain our rightful place at the top of the leaderboard" - me

### Is your feature request related to a problem or challenge?

The [ClickBench Benchmark](https://benchmark.clickhouse.com/) measures the performance of filtering and aggregation, two of the core

Being on top of ClickBench is somewhat of a vanity benchmark: in my opinion all the engines within a factor of 2 of likely have similar user experiences (and the exact speed will depends on real user queries, etc)

That being said, the engine at the top of the benchmark is good for publicity and the DataFusion community is certainly not against using it as such (see see our blog here [Apache DataFusion is now the fastest single node engine for querying Apache Parquet files](https://datafusion.apache.org/blog/2024/11/18/datafusion-fastest-single-node-parquet-clickbench/))

Also, ClickBench has more recently added more realistic benchmark machines

This ticket tracks improving the ClickBench performance even more

Here are results with DataFusion 47

[Results c6a.2xlarge(8 core, 16 GB)](https://benchmark.clickhouse.com/#system=+hBp|curp|fqo|ti%20rud|As(|kBP%20t|laDd|d(%20t|aseaa|Sa%20i&type=-&machine=+a2l&cluster_size=-&opensource=+s&tuned=-&metric=combined&queries=-)

Image

[Results c6a.4xlarge (16 core, 32 GB)](https://benchmark.clickhouse.com/#system=+hBp|curp|fqo|ti%20rud|As(|kBP%20t|laDd|d(%20t|aseaa|Sa%20i&type=-&machine=+ca4e&cluster_size=-&opensource=+s&tuned=-&metric=combined&queries=-):

Image

Here is where we stand with DataFusion 50 on the benchmark
(TODO: @pmcgleenon is running over the next few days, see https://github.com/apache/datafusion/issues/17721#issuecomment-3488229699 -- and then I will update)

### Describe the solution you'd like

Get DataFusion back on top of ClickBench for reading partitioned parquet

While being at the absolute top might seem appealing I think it is likely not general purpose enough

### Describe alternatives you've considered

While we could clearly implement ClickBench specific optimizations, I don't think that is really a valuable exercise for users. I would very much like to focus our efforts on actually useful optimization -- if someone wants to go nuts with BenchMaxxing, check out
- [ ] https://github.com/apache/datafusion/issues/13448

Real Improvements
- [x] https://github.com/apache/datafusion/issues/18952
- [ ] https://github.com/apache/datafusion/issues/22189
- [ ] https://github.com/apache/datafusion/issues/3463
- [ ] https://github.com/apache/datafusion/issues/18470
- [ ] https://github.com/apache/datafusion/issues/18411
- [ ] https://github.com/apache/datafusion/issues/17259
- [ ] https://github.com/apache/datafusion/issues/19971
- [x] https://github.com/apache/datafusion/issues/19961
- [x] https://github.com/apache/datafusion/issues/20005
- [ ] https://github.com/apache/datafusion/issues/20773
- [ ] https://github.com/apache/arrow-rs/issues/9530

Potential Benchmaxxing (only really helps ClickBench) improvements
- [x] https://github.com/apache/datafusion/issues/15524

Misc
- [ ] https://github.com/apache/datafusion/issues/18473
- [x] https://github.com/apache/datafusion/issues/20601
- [ ] https://github.com/apache/datafusion/issues/21696
- [ ] https://github.com/apache/datafusion/issues/13449
- [x] https://github.com/apache/datafusion/issues/23086

What I would like is of people profile queries and try and find ways to improve the queries

### Additional context

See related discussions on
- https://github.com/apache/datafusion/issues/14586

Contributor guide

Open the contributing guide

Research direction

Start with the ClickBench benchmark results for DataFusion 47 and the pending DataFusion 50 run, then profile the listed benchmark queries and review the linked improvement issues. The work is complete when measured, general-purpose optimizations improve partitioned Parquet performance and the updated ClickBench results show DataFusion at the top.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
data-engineering, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.