Hi Druid Team,
I'm currently facing a workload were a kafka indexing task runs into OOM while allocating direct memory for segment decompression buffers.
Here some context on why this happens:
• While publishing, it tries to merge many small (<1000 rows) intermediate persists with 1000+ dimensions for around 1 Mio rows in total.
• These small intermediate segments are created during intermediate persists were 99+% of the rows belong to large segments in the past (backfill) while the remaining (live) records only make up for 500-1000 rows per intermediate persist.
• All of the live rows will end up in the same segment for publishing.
• I'm aware that this backfill may better be performed as a batch ingestion - but in my application it will be quite common that large chunks of data containing old data will be added to the kafka topic without warning.
Long story short:
This problem could be easily solved by using the hierarchical segment merging algorithm that is used for batch ingestions and compaction tasks (by configuring
maxColumnsToMerge != -1
).
Unfortunately, this setting is not available in the kafka ingestion spec.
Are there any plans to make the hierarchical segment merging also available for kafka ingestion / stream ingestion in general?