Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Find exception when use thetaSketch INTERSECT topN Query type with Broker result level Cache #7940

Closed
JackyYangPassion opened this issue Jun 21, 2019 · 6 comments
Labels

Comments

@JackyYangPassion
Copy link

JackyYangPassion commented Jun 21, 2019

Affected Version

0.14.2.

Description

Query
`{
"queryType":"topN",
"dataSource":{
"type":"table",
"name":"table1"
},
"virtualColumns":[

],
"dimension":{
    "type":"listFiltered",
    "delegate":{
        "type":"default",
        "dimension":"id",
        "outputName":"id",
        "outputType":"STRING"
    },
    "values":[
        "top_sports-5",
        "top_sports-2",
        "top_sports-1"
    ],
    "isWhitelist":true
},
"metric":{
    "type":"numeric",
    "metric":"final_0_1"
},
"threshold":10,
"intervals":{
    "type":"LegacySegmentSpec",
    "intervals":[
        "2019-06-11T16:00:00.000Z/2019-06-12T15:59:59.000Z",
        "2019-06-12T16:00:00.000Z/2019-06-13T15:59:59.000Z"
    ]
},
"filter":{
    "type":"and",
    "fields":[
        {
            "type":"and",
            "fields":[
                {
                    "type":"selector",
                    "dimension":"type",
                    "value":"Recommend",
                    "extractionFn":null
                },
                {
                    "type":"selector",
                    "dimension":"is_valid_sub_session",
                    "value":"true",
                    "extractionFn":null
                }
            ]
        }
    ]
},
"granularity":{
    "type":"all"
},
"aggregations":[
    {
        "type":"filtered",
        "aggregator":{
            "type":"thetaSketch",
            "name":"source_0_0",
            "fieldName":"id_member_hash_id",
            "size":1048576,
            "shouldFinalize":true,
            "isInputThetaSketch":true,
            "errorBoundsStdDev":null
        },
        "filter":{
            "type":"interval",
            "dimension":"__time",
            "intervals":[
                "2019-06-11T16:00:00.000Z/2019-06-12T15:59:59.000Z"
            ],
            "extractionFn":null
        },
        "name":"source_0_0"
    },
    {
        "type":"filtered",
        "aggregator":{
            "type":"thetaSketch",
            "name":"target_0_1",
            "fieldName":"id_member_hash_id",
            "size":1048576,
            "shouldFinalize":true,
            "isInputThetaSketch":true,
            "errorBoundsStdDev":null
        },
        "filter":{
            "type":"interval",
            "dimension":"__time",
            "intervals":[
                "2019-06-12T16:00:00.000Z/2019-06-13T15:59:59.000Z"
            ],
            "extractionFn":null
        },
        "name":"target_0_1"
    }
],
"postAggregations":[
    {
        "type":"thetaSketchEstimate",
        "name":"final_0_1",
        "field":{
            "type":"thetaSketchSetOp",
            "name":"temp_0_1",
            "func":"INTERSECT",
            "size":1048576,
            "fields":[
                {
                    "type":"fieldAccess",
                    "name":"source_0_0",
                    "fieldName":"source_0_0"
                },
                {
                    "type":"fieldAccess",
                    "name":"target_0_1",
                    "fieldName":"target_0_1"
                }
            ]
        },
        "errorBoundsStdDev":null
    }
],
"context":{
    "minTopNThreshold":190,
    "timeout":60000
},
"descending":false

}`

Error Log

java.lang.ClassCastException: java.lang.Double cannot be cast to io.druid.query.aggregation.datasketches.theta.SketchHolder at io.druid.query.aggregation.datasketches.theta.SketchHolder.sketchSetOperation(SketchHolder.java:265) ~[?:?] at io.druid.query.aggregation.datasketches.theta.SketchSetPostAggregator.compute(SketchSetPostAggregator.java:87) ~[?:?] at io.druid.query.aggregation.datasketches.theta.SketchEstimatePostAggregator.compute(SketchEstimatePostAggregator.java:86) ~[?:?] at io.druid.query.topn.TopNQueryQueryToolChest$7$2.apply(TopNQueryQueryToolChest.java:411) ~[druid-processing-0.12.1.jar:0.12.1] at io.druid.query.topn.TopNQueryQueryToolChest$7$2.apply(TopNQueryQueryToolChest.java:379) ~[druid-processing-0.12.1.jar:0.12.1] at io.druid.java.util.common.guava.MappingYieldingAccumulator.accumulate(MappingYieldingAccumulator.java:61) ~[java-util-0.12.1.jar:0.12.1] at io.druid.java.util.common.guava.BaseSequence.makeYielder(BaseSequence.java:89) ~[java-util-0.12.1.jar:0.12.1] at io.druid.java.util.common.guava.BaseSequence.toYielder(BaseSequence.java:68) ~[java-util-0.12.1.jar:0.12.1] at io.druid.java.util.common.guava.MappedSequence.toYielder(MappedSequence.java:49) ~[java-util-0.12.1.jar:0.12.1] at io.druid.java.util.common.guava.Yielders.each(Yielders.java:32) ~[java-util-0.12.1.jar:0.12.1] at io.druid.server.QueryResource.doPost(QueryResource.java:193) [druid-server-0.12.1.jar:0.12.1] at sun.reflect.GeneratedMethodAccessor78.invoke(Unknown Source) ~[?:?] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_171] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_171] at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) [jersey-server-1.19.3.jar:1.19.3] at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) [jersey-servlet-1.19.3.jar:1.19.3] at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) [jersey-servlet-1.19.3.jar:1.19.3] at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) [jersey-servlet-1.19.3.jar:1.19.3] at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api-3.1.0.jar:3.1.0] at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286) [guice-servlet-4.1.0.jar:?] at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276) [guice-servlet-4.1.0.jar:?] at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181) [guice-servlet-4.1.0.jar:?] at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) [guice-servlet-4.1.0.jar:?] at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85) [guice-servlet-4.1.0.jar:?] at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120) [guice-servlet-4.1.0.jar:?] at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135) [guice-servlet-4.1.0.jar:?] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502] at io.druid.server.security.PreResponseAuthorizationCheckFilter.doFilter(PreResponseAuthorizationCheckFilter.java:84) [druid-server-0.12.1.jar:0.12.1] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502] at io.druid.server.security.AllowOptionsResourceFilter.doFilter(AllowOptionsResourceFilter.java:76) [druid-server-0.12.1.jar:0.12.1] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502] at io.druid.server.security.AllowAllAuthenticator$1.doFilter(AllowAllAuthenticator.java:85) [druid-server-0.12.1.jar:0.12.1] at io.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:60) [druid-server-0.12.1.jar:0.12.1] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502] at io.druid.server.security.SecuritySanityCheckFilter.doFilter(SecuritySanityCheckFilter.java:86) [druid-server-0.12.1.jar:0.12.1] at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759) [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582) [jetty-servlet-9.3.19.v20170502.jar:9.3.19.v20170502]

@JackyYangPassion
Copy link
Author

JackyYangPassion commented Jun 26, 2019

I find this is topN postAggregation thetaSketch Bug when use Result Level Cache on broker
I hive fixd

@JackyYangPassion JackyYangPassion changed the title Find exception when use thetaSketch INTERSECT Query type with Broker result level Cache Find exception when use thetaSketch INTERSECT topN Query type with Broker result level Cache Jun 26, 2019
@AlexanderSaydakov
Copy link
Contributor

I believe your problem is caused by your aggregation parameter "shouldFinalize":true. This means that the result of the aggregation is not a sketch, but a distinct count estimate obtained from the sketch. So you are trying to intersect two double values instead of two sketches. Just remove that parameter from both aggregations and try again.

@AlexanderSaydakov
Copy link
Contributor

If your input column contains raw IDs, and you want to build sketches from them, then remove "isInputThetaSketch":true as well.

@JackyYangPassion
Copy link
Author

  1. The problem is not caused by aggregation parameter "shouldFinalize":true.
  2. It is caused by postAggregation in topN query use thetaSketch INTERSECT;
  3. The Bug really because by it should not compute when pull the result from Cache

I have fixed this Bug i will create a PR as soon as later

@stale
Copy link

stale bot commented Apr 2, 2020

This issue has been marked as stale due to 280 days of inactivity. It will be closed in 4 weeks if no further activity occurs. If this issue is still relevant, please simply write any comment. Even if closed, you can still revive the issue at any time or discuss it on the [email protected] list. Thank you for your contributions.

@stale stale bot added the stale label Apr 2, 2020
@stale
Copy link

stale bot commented Apr 30, 2020

This issue has been closed due to lack of activity. If you think that is incorrect, or the issue requires additional review, you can revive the issue at any time.

@stale stale bot closed this as completed Apr 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants