logoalt Hacker News

tomjakubowski • today at 8:15 PM • 1 reply • view on HN

This week I've been debugging a performance issue in a Ducklake and knocking out some good improvements, but this precise symptom—read_parquet() making tons of tiny range requests to load a parquet's footer from S3—was still baffling me. How lucky am I that I stumbled on your comment! Amazing, thank you for the pointer.


Replies

gopalv • today at 8:43 PM

> read_parquet() making tons of tiny range requests to load a parquet's footer from S3

This is somewhat unavoidable if you have a number of files and a tight filter which rejects most of them. The footer choice was a bad one in hindsight (not for HDFS), but for anything which uses XOR or other kind of erasure coding. The other other file format I worked with used headers only instead of footers, to save a few ms in latency for the initial GET

I don't think Ducklake can maintain a zone-map or ART index over parquet files, but there is no equivalent of iceberg metadata/something which has min/max/HLL compacted across multiple files yet.

The secondary indexes with file identifiers stored in a sequential file is most likely the next useful thing duckdb can make.