https://delta.io logo
c

Cole MacKenzie

06/13/2023, 5:36 PM
Does anyone here have experience running high-write throughput Delta Lake tables? One thing I've noticed is the size of the checkpoint files can quickly outgrow the dataset (like 10x). Curious to hear any learnings about these types of tables.
Obviously solution is to run cleanup functions more frequently
r

rtyler

06/13/2023, 5:37 PM
We run what I would consider some high throughput append only tables, what does high throughput mean to you? We have had memory challenges with checkpoint creation, but I expect some recent changes in delta-rs will have improved that but we haven't tested yet.
c

Cole MacKenzie

06/13/2023, 5:38 PM
For a table, commits every 30s or sooner depending on buffer size.
r

rtyler

06/13/2023, 5:40 PM
hm, I'm not sure how frequently we're seeing commits from our #kafka-delta-ingest processes 🤔 Is there a strong motivation to have checkpoints created so frequently? You can certainly disable it, originally the checkpoint lambda we have floating around in incubator was created so we could create checkpoints out of band from the appends to a table
c

Cole MacKenzie

06/13/2023, 5:43 PM
No strong reason to have them checkpoint so frequently, will likely increase it or change it to a regular interval.
Currently I checkpoint every 10 versions but might bump it to 50, 100 or higher
r

rtyler

06/13/2023, 5:43 PM
what's the read load look like on the table?
c

Cole MacKenzie

06/13/2023, 5:45 PM
Writes are append only, partitioned by
date=YYYY-MM-DD
and reads would typically be either most recent data (last N minutes) or historical ranges
r

rtyler

06/13/2023, 5:46 PM
that's very similar to my append only tables. An out of band checkpoint creation every few minutes could do quite well IMHO
c

Cole MacKenzie

06/13/2023, 5:47 PM
Yeah, thats what I am considering. Basically out of band compaction and checkpointing. I've got other work required before I get there but thats the goal
r

rtyler

06/13/2023, 5:48 PM
We have end of ds partition
optimize
happening in Spark for these tables too, that helps mucho
c

Cole MacKenzie

06/13/2023, 5:50 PM
Yeah, without an external locking source, multi-writer support is not possible on Cloudflare R2 (yet) https://github.com/delta-io/delta-rs/issues/1356 So right now I am doing checkpoints in the single writer flow but I imagine it will be combination of regular optimize and checkpointing once multi-writer is possible
r

rtyler

06/13/2023, 5:50 PM
why not make an external locking thingie?
c

Cole MacKenzie

06/13/2023, 5:52 PM
I would prefer to not have the additional component if the object store supported it out-of-the-box. I have some ideas around an external locker using etcd or https://developers.cloudflare.com/workers/learning/using-durable-objects/
(I work at Cloudflare, so no AWS Lambda for me haha)
@rtyler have you ever published any operational insights to running #kafka-delta-ingest? Would be interested in giving them a read 😄
r

rtyler

06/13/2023, 5:58 PM
I have not, though I don't have a good reason for that other than 🤷
5 Views