News for hackers. Stuff that matters.

alamb

Re:Embedding a Tantivy Index in Parquet on Thursday September 25, 2025 @10:47AM (#45373254)
This demo extends a Parquet file by embedding a Tantivy full-text search index inside it. A custom DataFusion TableProvider implementation uses the embedded full-text index to optimize wildcard LIKE predicates.
Re:Embedding user-defined indexes in Apache Parquet on Tuesday July 15, 2025 @07:01AM (#44569881)
> Note that the readers of Parquet need to be aware of any metadata to exploit it. But if not, nothing changes

The one downside of this approach, which is likely obvious, but I haven't seen mentioned is that the resulting parquet files are larger than they would be otherwise, and the increased size only benefits engines that know how to interpret the new index

(I am an author)

Re:Embedding user-defined indexes in Apache Parquet on Tuesday July 15, 2025 @06:57AM (#44569858)
> That is, start with Wild West and define specs as needed

Yes this is my personal hope as well -- if there are new index types that are widespread, they can be incorporated formally into the spec

However, changing the spec is a non trivial process and requires significant consensus and engineering

Thus the methods used in the blog can be used to use indexes prior to any spec change and potentially as a way to prototype / prove out new potential indexes

(note I am an author)

Re:Embedding user-defined indexes in Apache Parquet on Tuesday July 15, 2025 @06:52AM (#44569838)
We are actively working on supporting extension types. The mechanism is likely to be using the Arrow extension type mechanism (a logical annotation on top of existing Arrow types https://arrow.apache.org/docs/format/Columnar.html#format-me...)

I expect this to be used to support Variant https://github.com/apache/datafusion/issues/16116 and geometry types

(note I am an author)

Re:Apache DataFusion on Thursday January 16, 2025 @12:24PM (#42728160)
Specifically, DataFusion is faster when querying parquet directly.

Most of the leaderboard of ClickBench is for database specific file formats (that you first have to load the data into)

Re:Apache DataFusion on Thursday January 16, 2025 @12:23PM (#42728151)
I think you would pick DataFusion over DuckDB if you want to customize it substantially. Not just with user defined functions (which are quite easy to write in DataFusion and are very fast), but things like * custom file formats (e.g. Spiral or Lance) * custom query languages / sql dialects * custom catalogs (e.g. other than a local file or prebuilt duckdb connectors) * custom indexes (read only parts of parquet files based on extra information you store) * etc.

If you are looking for the nicest "run SQL on local files" experience, DuckDB is pretty hard to beat

Disclaimer: I am the PMC chair of DataFusion

There are some other interesting FAQs here too: https://datafusion.apache.org/user-guide/faq.html

Re:Building Databases over a Weekend on Thursday November 21, 2024 @09:55AM (#42204856)
BTW here is a fun exercise that takes this idea to the extreme. Who can build a custom file format that gets the best ClickHouse performance (on DataFusion):

https://github.com/apache/datafusion/issues/13448

Disclaimer I am on the PMC of Apache DataFusion, so am totally a fan boy.

Re:Using Parquet's Bloom Filters on Wednesday May 29, 2024 @05:33AM (#40510104)
In general, if you can partition your datasets on your predicate column, sorting is likely the best option

For example when you have a predicate like, `where id = 'fdhah-4311-ddsdd-222aa'` sorting on the `id` column will help

However, if you have predicates on multiple different sets of columns, such as another query on `state = 'MA'`, you can't pick an ideal sort order for all of them.

People often partition (sort) on the low cardinality columns first as that tends to improve compression signficantly

Re:Polars DataFrame Processing on GPU's on Friday April 05, 2024 @02:39PM (#39945607)
It would be amazing if the code for working with arrow on GPUs could be made open source -- I think that would drive a significant amount of adoption
So great to see another project built on DataFusion @!
Re:Apache Arrow DataFusion Comet on Wednesday March 06, 2024 @07:06AM (#39615023)
The Apache Arrow PMC is pleased to announce the donation of the Comet project, a native Spark SQL Accelerator built on Apache Arrow DataFusion.
BTW you can see a version of what an industrial strength query optimizer / execution engine looks like in Rust https://arrow.apache.org/datafusion/

(can also use it in your own projects)

It is quite similar to what is described in this post

Re:DuckDB performance improvements with the latest release on Monday November 06, 2023 @01:32PM (#38166682)
The following paper describes some of the tradeoffs between different formats

Deep Dive into Common Open Formats for Analytical DBMSs https://www.vldb.org/pvldb/vol16/p3044-liu.pdf

Re:DuckDB performance improvements with the latest release on Monday November 06, 2023 @01:20PM (#38166459)
I do think it was important for duckdb to put out a new version of the results as the earlier version of that benchmark [1] went dormant with a very old version of duckdb with very bad performance, especially against polars.

[1] https://h2oai.github.io/db-benchmark/

Re:DuckDB 0.8.0 on Friday May 19, 2023 @06:00AM (#35999734)
DuckDB is a great piece of software if you are

If you are looking for a query engine implemented in a safe language (Rust) I definitely suggest checking out DataFusion. It is comparable to DuckDB in performance, has all the standard built in SQL functionality, and is extensible in pretty much all areas (query language, data formats, catalogs, user defined functions, etc)

https://arrow.apache.org/datafusion/

Disclaimer I am a maintainer of DataFusion

Re:Demystifying Apache Arrow on Tuesday January 10, 2023 @01:26PM (#34329200)
Here is another blog post that offers some perspective on the growth of Arrow over the intervening years and future directions: https://www.datawill.io/posts/apache-arrow-2022-reflection/
Re:Database drivers: Naughty or nice? on Tuesday December 13, 2022 @09:07AM (#33969027)
For completeness, FlightSQL[1] (as mentioned elsewhere in this thread) aims to provide such an HTTP based protocol

https://arrow.apache.org/blog/2019/10/13/introducing-arrow-f...

Re:Welcome to InfluxDB IOx: InfluxData’s New Storage Engine on Wednesday October 26, 2022 @11:57AM (#33345638)
Ah -- got it! This is the beauty of aligning ourselves with technologies like Arrow, Parquet and DataFusion. We can share as well as benefit from the efforts of the broader community
Re:Welcome to InfluxDB IOx: InfluxData’s New Storage Engine on Wednesday October 26, 2022 @11:40AM (#33345387)
Author here -- it is "free" in the sense that all the effort we put into DataFusion flows directly into IOx. But we do put a lot of effort into DataFusion
Rust for the win!
Re:Apache Arrow DataFusion 7.0 released on Wednesday March 02, 2022 @10:18AM (#30528303)
Here is an announcement of the 5.0 release: https://news.ycombinator.com/item?id=28290616
Re:Apache Arrow Rust Implementation Highlights on Monday February 14, 2022 @06:55AM (#30330939)
Security, performance and async parquet reader for the rustlang implementation of Apache Arrow

Older »