Abdulaziz Alqahtani
08/14/2025, 11:02 AMavailabilityLagMsMap from /consumingSegmentsInfo → reports ~200–400 ms for me.
• endToEndRealtimeIngestionDelayMs from Prometheus → shows a “saw-tooth” pattern, peaking around 5 seconds.
Can someone explain the difference between these two metrics, why they report different values, and whether the saw-tooth pattern is expected?Idlan Amran
08/18/2025, 2:38 AMprofile, each JSON will have around 5M rows so it will have consistent JSON and segment size:
SELECT shop, svid, spid, type, profile, "key", message, product,
CAST(MAX(created_at) AS TIMESTAMP) AS created_at,
ARRAY_AGG(product_log, 'STRING', TRUE) AS product_log
FROM product_tracking
WHERE profile = {profile}
AND created_at >= CAST(DATE_TRUNC('DAY', timestampAdd(DAY,{-lookback_days},NOW()), 'MILLISECONDS','GMT-04:00') AS TIMESTAMP)
AND created_at < CAST(DATE_TRUNC('DAY', timestampAdd(DAY,0,NOW()), 'MILLISECONDS','GMT-04:00') AS TIMESTAMP)
GROUP BY shop, svid, spid, type, profile, "key", message, product
LIMIT 999999999
need help for any insights/feedback from other Pinot OSS users, thanks.Rishabh Sharma
08/18/2025, 12:37 PMSan Kumar
08/19/2025, 5:28 AMSan Kumar
08/19/2025, 5:54 AMkranthi kumar
08/19/2025, 1:29 PMMilind Chaudhary
08/20/2025, 5:49 AMIndira Vashisth
08/21/2025, 12:52 PMShubham Kumar
08/21/2025, 1:00 PMtar.gz, such as zstd or Snappy?
2. I created an index on a column (col1) and ingested data. Suppose a segment contains 50 records, and I run a query with the condition col1 = 'xyz'. In this case, does Pinot load the entire segment into memory and then filter the records, or does it directly fetch only the matching data from the segment?Sandeep R
08/25/2025, 11:36 PMJan Siekierski
08/27/2025, 11:33 AMJohn Solomon J
08/28/2025, 7:17 PMVatsal Agrawal
08/29/2025, 5:43 AMArnav
08/29/2025, 5:52 PM{
"start_time_new": {
"long": 1756489188000
},
"event_time_new": {
"long": 1756489188000
}
}
i tried below configuration but it's not parsing
"ingestionConfig": {
"transformConfigs": [
{
"columnName": "start_time_new",
"transformFunction": "jsonPathLong(__raw__start_time_new, '$.long', 0)"
},
{
"columnName": "event_time_new",
"transformFunction": "jsonPathLong(__raw__event_time_new, '$.long', 0)"
}
],
"continueOnError": false,
"rowTimeValueCheck": false,
"segmentTimeValueCheck": true
}Rajkumar
08/30/2025, 6:23 PMArnav
09/01/2025, 7:07 AM"stream.kafka.decoder.prop.format": "AVRO",
"stream.kafka.decoder.prop.schema.registry.schema.name": "schema-name",
"stream.kafka.decoder.class.name": "org.apache.pinot.plugin.inputformat.avro.confluent.KafkaConfluentSchemaRegistryAvroMessageDecoder",
"stream.kafka.decoder.prop.schema.registry.rest.url": "schema-url",
"stream.kafka.decoder.prop.key.format": "AVRO",
"stream.kafka.decoder.prop.key.schema.registry.schema.name": "schema-name-key",
"stream.kafka.decoder.prop.key.schema.registry.rest.url": "schema-url",
data is also properly deserialised. Only __key is blank. My guess is that below configs i added is not able to deserialise it. Is there any other way to deserialise the key?
"stream.kafka.decoder.prop.key.format": "AVRO",
"stream.kafka.decoder.prop.key.schema.registry.schema.name": "schema-name-key",
"stream.kafka.decoder.prop.key.schema.registry.rest.url": "schema-url",Abdulaziz Alqahtani
09/01/2025, 7:17 PMtenant_id (ULID). The column is low cardinality, and most queries include a tenant_id predicate. What’s the best way to index this column?cesho
09/04/2025, 2:16 PMAbdulaziz Alqahtani
09/07/2025, 8:34 PMmg
09/08/2025, 8:09 PM<https://example.com/pinot/>. The main UI works fine and most links are correctly routed. Those that works open on <https://example.com/pinot/#/>... However, the Swagger REST API UI link is not. Swagger API button, it tries to access <https://example.com/help> instead of <https://example.com/pinot/help>, resulting in a 404 Not Found error.
I don't see an obvious way to enforce the swagger link subpath to something other than (/) ? I am using helm, and I have been looking for different options in https://github.com/apache/pinot/blob/master/helm/pinot/README.md but nothing worked..
thanks in advance..Soon
09/11/2025, 5:19 PMFILTER_SORTED_INDEX would it be the same as using FILTER_INVERTED_INDEX like sorted inverted index?Indira Vashisth
09/15/2025, 9:57 AMIndira Vashisth
09/15/2025, 10:02 AMTrust Okoroego
09/17/2025, 4:49 PMselect
ORDER_ID,
ORDER_NUMBER,
CUSTORDER_ID,
ORDER_VALIDATION_CODE,
POD_CODE,
DELIVERY_FROM_DAT,
DELIVERY_TO_DAT,
CTL_CRE_TS,
CTL_MOD_TS,
ORDER_STATUS_CD,
SAREA_ID,
LAG(ON_HOLD_ORDER_AND_LOCKED_FLAG, 1, 0) OVER (PARTITION BY ORDER_ID ORDER BY CTL_MOD_TS) AS prev_is_active
from
Orders
)
If default is not set, the result return correctly with the last row returning a NULL for prev_is_active since no row before it. However setting the default of 0 throws an unrelated timestamp error. Could this be related to NULL handling?
at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)
at org.apache.pinot.query.service.server.QueryServer.submit(QueryServer.java:156)
at org.apache.pinot.common.proto.PinotQueryWorkerGrpc$MethodHandlers.invoke(PinotQueryWorkerGrpc.java:284)
...
Caused by: java.lang.RuntimeException: Caught exception while submitting request: 1473823763000000159, stage: 2
at org.apache.pinot.query.service.server.QueryServer.lambda$submit$1(QueryServer.java:144)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
... 3 more
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Failed to instantiate WindowFunction for function: LAG
at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096)
at org.apache.pinot.query.service.server.QueryServer.lambda$submit$1(QueryServer.java:141)
... 4 more
...
Caused by: java.lang.RuntimeException: Failed to instantiate WindowFunction for function: LAG
at org.apache.pinot.query.runtime.operator.window.WindowFunctionFactory.construnctWindowFunction(WindowFunctionFactory.java:56)
at org.apache.pinot.query.runtime.operator.WindowAggregateOperator.<init>(WindowAggregateOperator.java:145)
at org.apache.pinot.query.runtime.plan.PhysicalPlanVisitor.visitWindow(PhysicalPlanVisitor.java:107)
at org.apache.pinot.query.runtime.plan.PhysicalPlanVisitor.visitWindow(PhysicalPlanVisitor.java:65)
...
Caused by: java.lang.reflect.InvocationTargetException
at jdk.internal.reflect.GeneratedConstructorAccessor151.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
...
Caused by: java.lang.UnsupportedOperationException: Cannot convert value from INTEGER to TIMESTAMP
at org.apache.pinot.common.utils.PinotDataType$5.toTimestamp(PinotDataType.java:300)
at org.apache.pinot.common.utils.PinotDataType$10.convert(PinotDataType.java:593)
at org.apache.pinot.common.utils.PinotDataType$10.convert(PinotDataType.java:545)
at org.apache.pinot.query.runtime.operator.window.value.LagValueWindowFunction.<init>(LagValueWindowFunction.java:63)
org.apache.pinot.query.service.dispatch.QueryDispatcher.submit(QueryDispatcher.java:198)
org.apache.pinot.query.service.dispatch.QueryDispatcher.submitAndReduce(QueryDispatcher.java:95)
org.apache.pinot.broker.requesthandler.MultiStageBrokerRequestHandler.handleRequest(MultiStageBrokerRequestHandler.java:219)
org.apache.pinot.broker.requesthandler.BaseBrokerRequestHandler.handleRequest(BaseBrokerRequestHandler.java:133)mg
09/18/2025, 10:16 AM"ingestionConfig": {
"batchIngestionConfig": {
"batchConfigMaps": [
{
"input.fs.className": "org.apache.pinot.plugin.filesystem.S3PinotFS",
"input.fs.prop.region": "us-west-2",
"input.fs.prop.secretKey": "....",
"input.fs.prop.accessKey": "....",
"inputDirURI": "<s3://my.s3.bucket/batch/airlineStats/rawdata/>",
...
we have updated className to: org.apache.pinot.plugin.filesystem.GcsPinotFS , but we cannot fiure how to set the gcpKey instead of secretKey and accessKey properties. Probably we need to set gcp projectId as well.mg
09/23/2025, 9:38 AMNicolas
09/24/2025, 2:46 PMmg
09/29/2025, 8:39 AM...,
"tableIndexConfig": {
"streamConfigs": {
"security.protocol": "SSL",
"ssl.truststore.location": "/opt/pinot/kafka-cert-jks/truststore.jks",
"ssl.truststore.password": "P6cz00RPASSWORDPLAINTEXT006OTF5",
"ssl.truststore.type": "JKS",
"ssl.keystore.location": "/opt/pinot/kafka-cert-jks/keystore.jks",
"ssl.keystore.password": "P6cz00RPASSWORDPLAINTEXT006OTF5",
"ssl.keystore.type": "JKS",
"ssl.key.password": "P6cz00RPASSWORDPLAINTEXT006OTF5"Sankaranarayanan Viswanathan
09/29/2025, 5:57 PMBrook E
09/30/2025, 3:29 PM