Luis Fernandez
02/07/2022, 10:22 PM},
"tenants": {
"broker": "DefaultTenant",
"server": "DefaultTenant",
"tagOverrideConfig": {
"realtimeCompleted": "DefaultTenant_OFFLINE"
}
}
2. is there anywhere I can see a log that this is in fact working I have setup the configs but I’m unsure as to how to tell it’s doing what it’s supposed to be doing
3. documentation is a little bit misleading in the sense of the new updates that we have done to pinot as well as different examples doing different things that are not explained in the documentationMayank
Mayank
Mayank
Neha Pawar
Neha Pawar
Luis Fernandez
02/08/2022, 5:35 PMLuis Fernandez
02/08/2022, 5:35 PMLuis Fernandez
02/08/2022, 5:37 PM{
"REALTIME": {
"tableName": "ads_metrics_dev_REALTIME",
"tableType": "REALTIME",
"segmentsConfig": {
"schemaName": "ads_metrics_dev",
"retentionTimeUnit": "DAYS",
"retentionTimeValue": "7",
"replication": "1",
"timeColumnName": "serve_time",
"allowNullTimeValue": false,
"replicasPerPartition": "1"
},
"tenants": {
"broker": "DefaultTenant",
"server": "DefaultTenant",
"tagOverrideConfig": {
"realtimeCompleted": "DefaultTenant_OFFLINE"
}
},
"tableIndexConfig": {
"invertedIndexColumns": [],
"noDictionaryColumns": [
"click_count",
"order_count",
"impression_count",
"cost",
"revenue"
],
"streamConfigs": {
"streamType": "kafka",
"stream.kafka.topic.name": "ads-stats",
"stream.kafka.broker.list": "<http://kafka.dev.com:9092|kafka.dev.com:9092>",
"stream.kafka.consumer.type": "lowlevel",
"stream.kafka.consumer.prop.auto.offset.reset": "largest",
"stream.kafka.consumer.factory.class.name": "org.apache.pinot.plugin.stream.kafka20.KafkaConsumerFactory",
"stream.kafka.decoder.class.name": "org.apache.pinot.plugin.stream.kafka.KafkaJSONMessageDecoder",
"realtime.segment.flush.threshold.rows": "0",
"realtime.segment.flush.threshold.time": "24h",
"realtime.segment.flush.segment.size": "250M"
},
"enableDynamicStarTreeCreation": false,
"aggregateMetrics": true,
"nullHandlingEnabled": false,
"rangeIndexColumns": [],
"rangeIndexVersion": 2,
"autoGeneratedInvertedIndex": false,
"createInvertedIndexDuringSegmentGeneration": false,
"sortedColumn": [
"shop_id"
],
"bloomFilterColumns": [
"shop_id",
"listing_id"
],
"loadMode": "MMAP",
"onHeapDictionaryColumns": [],
"varLengthDictionaryColumns": [],
"enableDefaultStarTree": false
},
"metadata": {},
"quota": {},
"task": {
"taskTypeConfigsMap": {
"RealtimeToOfflineSegmentsTask": {
"bucketTimePeriod": "1d",
"bufferTimePeriod": "2d",
"roundBucketTimePeriod": "1h",
"mergeType": "concat",
"maxNumRecordsPerSegment": "5000000"
}
}
},
"routing": {},
"query": {},
"fieldConfigList": [],
"ingestionConfig": {},
"isDimTable": false
}
}Luis Fernandez
02/08/2022, 5:37 PMLuis Fernandez
02/08/2022, 5:37 PMLuis Fernandez
02/08/2022, 5:37 PM{
"OFFLINE": {
"tableName": "ads_metrics_dev_OFFLINE",
"tableType": "OFFLINE",
"segmentsConfig": {
"schemaName": "ads_metrics_dev",
"retentionTimeUnit": "DAYS",
"retentionTimeValue": "186",
"replication": "1",
"segmentPushType": "APPEND",
"timeColumnName": "serve_time",
"allowNullTimeValue": false,
"replicasPerPartition": "1",
"segmentPushFrequency": "HOURLY"
},
"tenants": {
"broker": "DefaultTenant",
"server": "DefaultTenant"
},
"tableIndexConfig": {
"invertedIndexColumns": [],
"noDictionaryColumns": [
"click_count",
"order_count",
"impression_count",
"cost",
"revenue"
],
"enableDynamicStarTreeCreation": false,
"aggregateMetrics": false,
"nullHandlingEnabled": false,
"rangeIndexColumns": [],
"rangeIndexVersion": 2,
"autoGeneratedInvertedIndex": false,
"createInvertedIndexDuringSegmentGeneration": false,
"sortedColumn": [
"shop_id"
],
"bloomFilterColumns": [
"shop_id",
"listing_id"
],
"loadMode": "MMAP",
"onHeapDictionaryColumns": [],
"varLengthDictionaryColumns": [],
"enableDefaultStarTree": false
},
"metadata": {},
"quota": {},
"routing": {},
"query": {},
"fieldConfigList": [],
"ingestionConfig": {},
"isDimTable": false
}
}Luis Fernandez
02/08/2022, 5:38 PMcontroller.task.frequencyInSeconds=3600 to my configmap.yaml in the controllerLuis Fernandez
02/08/2022, 5:38 PMLuis Fernandez
02/09/2022, 5:10 PMMayank
controller.task.frequencyInSeconds=3600 on the pod, or you restarted the pod? For controller to pick it up, it has to be restarted.Luis Fernandez
02/09/2022, 5:26 PMMayank
// Deprecated as of 0.8.0
@Deprecated
public static final String DEPRECATED_TASK_MANAGER_FREQUENCY_IN_SECONDS = "controller.task.frequencyInSeconds";
public static final String TASK_MANAGER_FREQUENCY_PERIOD = "controller.task.frequencyPeriod";Mayank
Luis Fernandez
02/09/2022, 7:00 PMNeha Pawar
Neha Pawar
<http://LOGGER.info|LOGGER.info>("Adding periodic task: {}", periodicTask);
and
<http://LOGGER.info|LOGGER.info>("Starting periodic task scheduler with tasks: {}", _tasksWithValidInterval);
and
<http://LOGGER.info|LOGGER.info>("Starting {} with running frequency of {} seconds.", periodicTask.getTaskName(),
and if yes do you see PinotTaskManager listed in it?Neha Pawar
controller.task.frequencyInSeconds config, which you have tried. Other is, adding a schedule directly into the task config. So, do these 2 steps
1. add schedule to you config, like this
"RealtimeToOfflineSegmentsTask": {
"bucketTimePeriod": "<your value>",
"bufferTimePeriod": "<your value>",
"schedule": "0 0/10 0 ? * * *"
}
2. add this config to controller cofig
controller.task.scheduler.enabled=trueNeha Pawar
Luis Fernandez
02/09/2022, 8:31 PMLuis Fernandez
02/09/2022, 9:40 PMLuis Fernandez
02/09/2022, 9:40 PMStarting periodic task scheduler with tasks: [Task: PinotTaskManager, Interval: 3600Luis Fernandez
02/09/2022, 9:41 PMLuis Fernandez
02/09/2022, 10:32 PMLuis Fernandez
02/09/2022, 10:32 PMStart generating task configs for table: ds_metrics_dev_REALTIME for task: Realtim
eToOfflineSegmentsTask
Window with start: 5919648480000000 and end: 5919648501600000 is not older than buffer
time: 25200000 configured as 7h ago. Skipping task generation: RealtimeToOfflineSegment
sTaskNeha Pawar
5919648480000000Luis Fernandez
02/09/2022, 10:51 PM"dateTimeFieldSpecs": [
{
"name": "serve_time",
"dataType": "LONG",
"format": "1:HOURS:EPOCH",
"granularity": "1:HOURS"
}
]Luis Fernandez
02/09/2022, 10:52 PMNeha Pawar
Luis Fernandez
02/09/2022, 10:55 PMLuis Fernandez
02/09/2022, 10:55 PM"task": {
"taskTypeConfigsMap": {
"RealtimeToOfflineSegmentsTask": {
"bucketTimePeriod": "6h",
"bufferTimePeriod": "7h",
"mergeType": "concat",
"maxNumRecordsPerSegment": "5000000",
"schedule": "0 0/10 0 ? * * *"
}
}
},Luis Fernandez
02/09/2022, 10:55 PMNeha Pawar
Neha Pawar
Luis Fernandez
02/09/2022, 10:56 PMLuis Fernandez
02/09/2022, 10:56 PMNeha Pawar
5919648480000000 . You ca confirm what the range is by doing select min(time column), max(time column) from tableLuis Fernandez
02/09/2022, 10:57 PM1644462000Neha Pawar
Luis Fernandez
02/09/2022, 10:58 PM1644433200Neha Pawar
Luis Fernandez
02/09/2022, 10:58 PMLuis Fernandez
02/09/2022, 10:59 PMNeha Pawar
Luis Fernandez
02/09/2022, 10:59 PMNeha Pawar
"dateTimeFieldSpecs": [
{
"name": "serve_time",
"dataType": "LONG",
"format": "1:SECONDS:EPOCH",
"granularity": "1:HOURS"
}Luis Fernandez
02/09/2022, 11:00 PMLuis Fernandez
02/09/2022, 11:00 PMLuis Fernandez
02/09/2022, 11:00 PMLuis Fernandez
02/09/2022, 11:01 PMNeha Pawar
Neha Pawar
Luis Fernandez
02/09/2022, 11:04 PMLuis Fernandez
02/09/2022, 11:04 PMNeha Pawar
Luis Fernandez
02/09/2022, 11:11 PMLuis Fernandez
02/09/2022, 11:12 PMLuis Fernandez
02/09/2022, 11:12 PM"segment.end.time": "5919959520000000",Neha Pawar
Luis Fernandez
02/09/2022, 11:13 PMLuis Fernandez
02/09/2022, 11:13 PMNeha Pawar
Neha Pawar
Luis Fernandez
02/10/2022, 3:42 PMLuis Fernandez
02/11/2022, 7:26 PMTrying to schedule task type: RealtimeToOfflineSegmentsTask, isLeader: true
Start generating task configs for table: metrics_dev_REALTIME for task: RealtimeToOfflineSegmentsTask
Window with start: 1644451200000 and end: 1644537600000 is not older than buffer time: 172800000 configured as 2d ago. Skipping task generation: RealtimeToOfflineSegmentsTaskLuis Fernandez
02/11/2022, 7:26 PMNeha Pawar
Luis Fernandez
02/11/2022, 7:34 PM"schedule" attribute on the table).
the periodic task scheduler is setup to run every 3600 seconds, so every hour so every hour this scheduler wakes up, and figures who has to run, when a controller is restarted this starts by default yes? so based on the message above ^ it will keep on trying to run till the buffer time > than the window start and beginning then it will run.
so with this current setup, it means that new data gets to the offline table every 2 days from the day before?Neha Pawar
the periodic task scheduler is setup to run every 3600 seconds, so every hour so every hour this scheduler wakes up, and figures who has to run, when a controller is restarted this starts by default yes? so based on the message above ^ it will keep on trying to run till the buffer time > than the window start and beginning then it will run.
correctNeha Pawar
so with this current setup, it means that new data gets to the offline table every 2 days from the day before? - not sure i follow this sentence. Your window looks like 1 day. And buffer 2 day. So every day, a new window will move to offline. This will start happening after 2 daysLuis Fernandez
02/11/2022, 8:43 PMLuis Fernandez
02/11/2022, 8:43 PMLuis Fernandez
02/11/2022, 9:31 PMWindow with start: 1644451200000 and end: 1644537600000 is not older than buffer time: 90000000 configured as 25h ago. Skipping task generation: RealtimeToOfflineSegmentsTask I changed the bugger to 25h given that the latest the data can reach is 1h does this mean that this will run after a day and an hour? cause I don’t see the difference 90000000 increasing as the hours go byNeha Pawar
i guess what i meant to say is say i started ingesting data wednesday, it will start uploading data from wednesday, today? -yes this is rightNeha Pawar
Luis Fernandez
02/14/2022, 3:56 PMLuis Fernandez
02/14/2022, 3:57 PMNeha Pawar
Luis Fernandez
02/14/2022, 4:03 PMWorkflow TaskQueue_RealtimeToOfflineSegmentsTask or job TaskQueue_RealtimeToO
fflineSegmentsTask_Task_RealtimeToOfflineSegmentsTask_1644853530578 is alread
y failed or completed, workflow state (IN_PROGRESS), job state (COMPLETED), c
lean up job IS.
Job: TaskQueue_RealtimeToOfflineSegmentsTask_Task_RealtimeToOfflineSegmentsTa
sk_1644853530578 has either finished already, never been scheduled, or been r
emoved from DAGLuis Fernandez
02/14/2022, 4:05 PMLuis Fernandez
02/14/2022, 4:05 PMMinion_pinot-minion-0.pinot-minion-headless.pinot.svc.cluster.local_9514 tra
nsit TaskQueue_RealtimeToOfflineSegmentsTask_Task_RealtimeToOfflineSegmentsTa
sk_1644853530578.TaskQueue_RealtimeToOfflineSegmentsTask_Task_RealtimeToOffli
neSegmentsTask_1644853530578_0|[] from:RUNNING to:TASK_ERROR, relayMessages:
0Luis Fernandez
02/14/2022, 4:16 PMLuis Fernandez
02/14/2022, 4:17 PMCaught exception while fetching segment from: <gs://pinot-data/me>
trics_dev/metrics_dev__0__0__20220210T1525Z to: /var/pinot/minion/dat
a/RealtimeToOfflineSegmentsTask/tmp-06a47855-b7e0-4dd2-9682-1f5bb2108d3f/tarr
edSegmentFile_0
java.lang.IllegalStateException: PinotFS for scheme: gs has not been initiali
zedLuis Fernandez
02/14/2022, 4:17 PMNeha Pawar
Luis Fernandez
02/14/2022, 5:44 PMLuis Fernandez
02/14/2022, 5:44 PMLuis Fernandez
02/14/2022, 5:44 PMLuis Fernandez
02/14/2022, 5:45 PMLuis Fernandez
02/14/2022, 5:50 PMLuis Fernandez
02/14/2022, 5:53 PMLuis Fernandez
02/14/2022, 5:54 PM"taskTypeConfigsMap": {
"RealtimeToOfflineSegmentsTask": {
"bucketTimePeriod": "24h",
"bufferTimePeriod": "25h",
"roundBucketTimePeriod": "1h",
"mergeType": "concat",
"maxNumRecordsPerSegment": "5000000"
}
}Luis Fernandez
02/14/2022, 5:55 PMmetrics_dev_1644505200_1644534000_0Luis Fernandez
02/14/2022, 5:56 PMLuis Fernandez
02/14/2022, 5:57 PM1644505200_1644534000 based on these timestampsLuis Fernandez
02/14/2022, 5:57 PMLuis Fernandez
02/14/2022, 5:58 PMNeha Pawar
Neha Pawar
Luis Fernandez
02/14/2022, 9:33 PMLuis Fernandez
02/14/2022, 9:34 PMLuis Fernandez
02/14/2022, 9:34 PMLuis Fernandez
02/14/2022, 9:34 PMLuis Fernandez
02/14/2022, 9:34 PMNeha Pawar
Neha Pawar
Luis Fernandez
02/15/2022, 4:20 PMLuis Fernandez
02/15/2022, 4:20 PMLuis Fernandez
02/15/2022, 4:21 PMmetrics_dev__0__0__20220210T1525Z in the realtime tableLuis Fernandez
02/15/2022, 4:21 PMLuis Fernandez
02/15/2022, 4:28 PMmetrics_dev_1644624000_1644624000_0 that’s the same timestamp o.o and it has 8 docsNeha Pawar
select min(<time column>), max(<time column>), $segmentName from <table>_OFFLINE group by $segmentName order by $segmentName It should show you that the min and max indeed are what you see in the segmentNameNeha Pawar
Luis Fernandez
02/15/2022, 5:03 PMLuis Fernandez
02/15/2022, 5:08 PMsegmentPushFrequency has to match in this case how often we push this offline segments?Luis Fernandez
02/15/2022, 5:13 PM1644624000 there’s a segment that was collecting data from that friday that did from 1pm to 9pm gmt ohhh i see cause then some data was processed on saturday so we got some data from saturday 1644624000 but is all GMT, so i guess that makes sense, i just got confused cause i’m on ESTLuis Fernandez
02/15/2022, 5:14 PMLuis Fernandez
02/15/2022, 5:15 PMNeha Pawar
segmentPushFrequency for your case. that’s only relevant for manual offline segment uploadsLuis Fernandez
02/15/2022, 10:02 PMLuis Fernandez
02/15/2022, 10:02 PMLuis Fernandez
02/22/2022, 6:17 PMNeha Pawar