Priyank Bagrecha
10/02/2025, 10:27 PM2025-10-02 12:09:58.319
25/10/02 19:09:58 [dag-scheduler-event-loop] INFO DAGScheduler: Got job 1 (foreach at SparkSegmentMetadataPushJobRunner.java:219) with 2 output partitions
2025-10-02 12:09:58.319
25/10/02 19:09:58 [main] INFO SparkContext: Starting job: foreach at SparkSegmentMetadataPushJobRunner.java:219
2025-10-02 12:09:58.301
25/10/02 19:09:58 [main] INFO ConsistentDataPushUtils: Consistent data push is: disabled
2025-10-02 12:09:58.273
25/10/02 19:09:58 [main] INFO GcsPinotFS: Listed 654 files from URI: <gs://segment-store/pinot/controller-data/lego_gc>, is recursive: true
which makes me believe that it is trying to push all segments and not just the most recent hour's segments to pinot.
this is what the batch ingestion spec yaml looks like
executionFrameworkSpec:
name: "spark"
segmentGenerationJobRunnerClassName: "org.apache.pinot.plugin.ingestion.batch.spark3.SparkSegmentGenerationJobRunner"
segmentTarPushJobRunnerClassName: "org.apache.pinot.plugin.ingestion.batch.spark3.SparkSegmentTarPushJobRunner"
segmentUriPushJobRunnerClassName: "org.apache.pinot.plugin.ingestion.batch.spark3.SparkSegmentUriPushJobRunner"
segmentMetadataPushJobRunnerClassName: "org.apache.pinot.plugin.ingestion.batch.spark3.SparkSegmentMetadataPushJobRunner"
jobType: "SegmentCreationAndMetadataPush"
inputDirURI: "<gs://input-store/lego_gc/date_key=2025-10-01/hour=00/>"
includeFileNamePattern: "glob:**/*.parquet"
outputDirURI: "<gs://segment-store/pinot/controller-data/lego_gc>"
overwriteOutput: true
pinotFSSpecs:
- scheme: "gs"
className: "org.apache.pinot.plugin.filesystem.GcsPinotFS"
pinotClusterSpecs:
- controllerURI: "pinot.something.com"
recordReaderSpec:
dataFormat: "PARQUET"
className: "org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader"
tableSpec:
tableName: "lego_gc"
schemaURI: "pinot.something.com/tables/lego_gc/schema"
tableConfigURI: "pinot.something.com/tables/lego_gc"
segmentNameGeneratorSpec:
type: "simple"
configs:
segment.name.prefix: "lego_gc_2025-10-01-00"
exclude.sequence.id: true
pushJobSpec:
pushParallelism: 2
pushAttempts: 2
pushRetryIntervalMillis: 1000
do i need to configure outputDirURI to be partitioned as well? like gs://segment-store/pinot/controller-data/lego_gc/date_key=2025-10-01/hour=00/? Please note that gs://segment-store/pinot/controller-data/ is the location of segment store as configured in servers.Mayank
Priyank Bagrecha
10/02/2025, 10:34 PMPriyank Bagrecha
10/02/2025, 10:35 PMMayank
Priyank Bagrecha
10/02/2025, 10:38 PMoutputDirURI to be partitioned as well? like <gs://segment-store/pinot/controller-data/lego_gc/date_key=2025-10-01/hour=00/>? Please note that <gs://segment-store/pinot/controller-data/> is the location of segment store as configured in servers. that won't create an issue for servers right? or does segment store needs to have a flat structure, and hence i should use a different location for uploading segments for ingestion?Mayank
Priyank Bagrecha
10/02/2025, 10:46 PM25/10/02 20:37:24 [Executor task launch worker for task 1.0 in stage 1.0 (TID 14)] INFO SegmentPushUtils: Pushing segment: lego_gc_OFFLINE_1758772800000_1758772800000_9 to location: <https://pinot.something.com> for table lego_gcPriyank Bagrecha
10/02/2025, 10:46 PMPriyank Bagrecha
10/02/2025, 10:57 PMsegment.name.prefix: "lego_gc_2025-10-01-00" is not getting applied to segment file name....Priyank Bagrecha
10/03/2025, 1:46 AMoutputDirURI = <gs://segment-store/pinot/controller-data/lego_gc/date_key=2025-10-01/hour=00/> and so forth reduced the ingestion time for each hour to be ~10-15 minsPriyank Bagrecha
10/03/2025, 1:47 AMMayank
Priyank Bagrecha
10/03/2025, 8:52 AMMayank
Priyank Bagrecha
10/03/2025, 8:43 PM