apache/pinot

[Segment ingestion job] Multi-threaded segment copy from staging dir to final destination

Open

#7,510 opened on Oct 4, 2021

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Java (1,234 forks)batch import
enhancementhelp wantedingestion

Repository metrics

Stars
 (4,937 stars)
PR merge metrics
 (Avg merge 6d 7h) (186 merged PRs in 30d)

Description

SparkIngestionJob uses single threaded copy for segments copy from staging dir to final deep store dir(e.g. S3): https://github.com/apache/pinot/blob/7ce8b756dff2b153151517afd552759e44d46c75/pinot-plugins/pinot-batch-ingestion/pinot-batch-ingestion-spark/src/main/java/org/apache/pinot/plugin/ingestion/batch/spark/SparkSegmentGenerationJobRunner.java#L345

For a few hundred segments being uploaded, it can take forever. In this case, we should consider generating a list of source and destination paths for segment copy then use RDD to parallel this job.

Contributor guide