Hi ! We are trying to use lookup join to get a mul...
# troubleshooting
m
Hi ! We are trying to use lookup join to get a multivalued String column from a small dimension table but we have this exception during request :
Copy code
"message": "QueryExecutionError:\njava.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String; ([Ljava.lang.Object; and [Ljava.lang.String; are in module java.base of loader 'bootstrap')\n\tat org.apache.pinot.core.operator.transform.function.LookupTransformFunction.transformToStringValuesMV(LookupTransformFunction.java:328)\n\tat org.apache.pinot.core.operator.docvalsets.TransformBlockValSet.getStringValuesMV(TransformBlockValSet.java:125)\n\tat org.apache.pinot.core.common.RowBasedBlockValueFetcher.createFetcher(RowBasedBlockValueFetcher.java:81)\n\tat org.apache.pinot.core.common.RowBasedBlockValueFetcher.<init>(RowBasedBlockValueFetcher.java:32)",
If you have any idea, thank you !
m
What’s the query and what version of Pinot are you using?
r
it can't be latest because line 328 is now
int numDocs = projectionBlock.getNumDocs();
so this may have been fixed
@Mathieu Druart can you try using the latest docker image
m
@Mayank @Richard Startin We are testing Pinot 0.9.3
we saw that this part of the code had changed but we didnt know if it was linked to our issue
we will try a more recent docker image and let you know
r
no it wasn't changed for that reason
looking at it, there must be a schema mismatch, I don't think it will CCE any more, but it probably won't produce the right result either (empty arrays)
please do try it, report back and I'll log a bug report if it isn't working
m
Thank you @Richard Startin we will try and let you know
Hi @Richard Startin we deployed the latest snapshot version and after restarting Pinot, lookup queries always get null values on single valued fields (that were working fine on 0.9.3). No specific errors, just null values. We also tried lookup on multi-valued fields and we always have this exception in controller :
Copy code
url string passed is : <http://pinot-broker-0.pinot-broker-headless.pinot-local.svc.cluster.local:8099/query/sql>
Caught exception while sending query request
java.io.IOException: Failed : HTTP error code : 500
at org.apache.pinot.controller.api.resources.PinotQueryResource.sendPostRaw(PinotQueryResource.java:305) ~[pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.apache.pinot.controller.api.resources.PinotQueryResource.sendRequestRaw(PinotQueryResource.java:343) ~[pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.apache.pinot.controller.api.resources.PinotQueryResource.getQueryResponse(PinotQueryResource.java:225) ~[pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.apache.pinot.controller.api.resources.PinotQueryResource.handlePostSql(PinotQueryResource.java:137) ~[pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at jdk.internal.reflect.GeneratedMethodAccessor253.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) ~[pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124) [pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167) [pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) [pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79) [pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469) [pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391) [pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80) [pinot-all-0.10.0-SNAPSHOT-jar-with-dependencies.jar:0.10.0-SNAPSHOT-98d781092136eeb3a80e9e54fc8736f4c3d270f5]
Maybe there are some incompatibilities between 0.9.3 and latest snapshots versions in parameters ? or maybe we have to reload segments ?
r
Hi @Mathieu Druart I think you need to rebuild the the dimension tables, I saw something like this recently
m
thank you @Richard Startin, after rebuilding the dimension table, the lookup works again on single-valued fields, but we still have the same issue on multi-valued fields
r
yes, I didn't expect it to work on MV columns, just expected it not to CCE, I will log an issue and make a fix
m
yes that's what you said, thank you really much
m
Should this go in to our FAQ @Richard Startin?
r
IMO this is a design flaw and we should probably just fix it, or seek an alternative solution for joins