Kwker

Quickstart: DataFusion

Speed up the sorts in your DataFusion queries. kwker_datafusion::register adds one rule to your SessionContext: every ORDER BY on a single number column (with or without LIMIT) then runs on Kwker, and everything else stays DataFusion's own. Your SQL and your results stay the same. About five minutes.

Install

TOMLRuns on your machine.
[dependencies]
datafusion = "55"
kwker-datafusion = "0.1"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

Keep your SQL

RustAdd kwker to Cargo.toml, then cargo run.
use datafusion::prelude::*;

#[tokio::main]
async fn main() -> datafusion::error::Result<()> {
    let ctx = kwker_datafusion::register(SessionContext::new());
    ctx.register_csv("trips", "trips.csv", CsvReadOptions::new()).await?;
    let top = ctx.sql("SELECT * FROM trips ORDER BY fare DESC LIMIT 100").await?;
    top.show().await?;
    Ok(())
}

EXPLAIN shows KwkerSortExec (or KwkerMergeSortExec, when the table has several partitions) where Kwker took the sort over.

What Kwker takes over

Notes

Next steps