apache / druid

Apache Druid: a high performance real-time analytics database.
https://druid.apache.org/
Apache License 2.0
13.46k stars 3.7k forks source link

Lookup uses with postgresql : CACHE NOT INITIALIZED #7353

Closed ghost closed 5 years ago

ghost commented 5 years ago

Affected Version

0.13.0-incubating

Description

Step to reproduce

Step 1

Create a table postgresql country :

Country

key value
fr France
us United States
gb United Kingdom

Step 2

Create a datasource which contains value like that (the image is a visualisation of datasource in metabase): Screenshot from 2019-03-27 16-27-15

Step 3

I do a query on my datasource without lookups

{
    "queryType": "topN",
    "dataSource": "meetup-country",
    "intervals": "1900-01-01/2100-01-01",
    "granularity": "all",
    "dimension": {
        "dimension": "country_code",
        "outputName": "Country Code"
    },
    "aggregations": [
        {
            "name": "Count",
            "type": "doubleSum",
            "fieldName": "count"
        }
    ],
    "filter": {
        "type": "or",
        "fields": [
            {
                "type": "selector",
                "dimension": "country_code",
                "value": "fr"
            },
            {
                "type": "selector",
                "dimension": "country_code",
                "value": "us"
            },
            {
                "type": "selector",
                "dimension": "country_code",
                "value": "gb"
            }
        ]
    },
    "metric": "Count",
    "threshold": 10
}

with the following result:

[
    {
        "timestamp": "2018-08-12T13:48:33.000Z",
        "result": [
            {
                "Count": 10009,
                "Country Code": "us"
            },
            {
                "Count": 1838,
                "Country Code": "gb"
            },
            {
                "Count": 721,
                "Country Code": "fr"
            }
        ]
    }
]

Step 4

Do a POST on http://localhost:8081/druid/coordinator/v1/lookups/config with the following json

{
    "__default": {
        "country": {
            "version": "v1",
            "lookupExtractorFactory": {
                "type": "cachedNamespace",
                "extractionNamespace": {
                    "type": "jdbc",
                    "namespace":"country",
                    "connectorConfig": {
                        "createTables": true,
                        "connectURI": "jdbc:mysql://localhost:3306/mydatabase",
                        "user": "root",
                        "password": "*******"
                    },
                    "table": "country",
                    "keyColumn": "key",
                    "valueColumn": "value"
                },
                "firstCacheTimeout": 0,
                "injective": true
            }
        }
    }
}

The lookup is created.

Step 4

I do again a query on my datasource but i use the lookup

{
  "queryType": "topN",
  "dataSource": "meetup-country",
  "intervals": "1900-01-01/2100-01-01",
  "granularity": "all",
  "dimension": {
    "type": "extraction",
    "dimension": "country_code",
    "outputName": "Country Name",
    "extractionFn": {
      "type": "registeredLookup",
      "lookup": "country"
    }
  },
  "aggregations": [
    {
      "name": "Count",
      "type": "doubleSum",
      "fieldName": "count"
    }
  ],
    "filter": {
        "type": "or",
        "fields": [
            {
                "type": "selector",
                "dimension": "country_code",
                "value": "fr"
            },
            {
                "type": "selector",
                "dimension": "country_code",
                "value": "us"
            },
            {
                "type": "selector",
                "dimension": "country_code",
                "value": "gb"
            }
        ]
    },
  "metric": "Count",
  "threshold": 10
}

And i get the following error:

2019-03-27T15:42:57,830 ERROR [qtp391575500-136[topN_[meetup-country]_322e7dc1-bf1a-455b-9992-233509823154]] org.apache.druid.server.QueryResource - Exception handling request: {class=org.apache.druid.server.QueryResource, exceptionType=class org.apache.druid.java.util.common.ISE, exceptionMessage=namespace [JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}] : org.apache.druid.server.lookup.namespace.cache.CacheScheduler$EntryImpl@3af638a: CACHE_NOT_INITIALIZED, extractorID = namespace-factory-JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}-dedd1f2d-5ec5-45f0-a076-0dea3111cfca, exception=org.apache.druid.java.util.common.ISE: namespace [JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}] : org.apache.druid.server.lookup.namespace.cache.CacheScheduler$EntryImpl@3af638a: CACHE_NOT_INITIALIZED, extractorID = namespace-factory-JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}-dedd1f2d-5ec5-45f0-a076-0dea3111cfca, query=TopNQuery{dataSource='meetup-country', dimensionSpec=ExtractionDimensionSpec{dimension='country_code', extractionFn=RegisteredLookupExtractionFn{delegate=null, lookup='country', retainMissingValue=false, replaceMissingValueWith='null', injective=null, optimize=true}, outputName='Country Name', outputType='STRING'}, topNMetricSpec=NumericTopNMetricSpec{metric='Count'}, threshold=10, querySegmentSpec=LegacySegmentSpec{intervals=[1900-01-01T00:00:00.000Z/2100-01-01T00:00:00.000Z]}, virtualColumns=[], dimFilter=null, granularity='AllGranularity', aggregatorSpecs=[DoubleSumAggregatorFactory{fieldName='count', expression='null', name='Count'}], postAggregatorSpecs=[]}, peer=172.22.0.1}
org.apache.druid.java.util.common.ISE: namespace [JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}] : org.apache.druid.server.lookup.namespace.cache.CacheScheduler$EntryImpl@3af638a: CACHE_NOT_INITIALIZED, extractorID = namespace-factory-JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}-dedd1f2d-5ec5-45f0-a076-0dea3111cfca
at org.apache.druid.query.lookup.NamespaceLookupExtractorFactory.get(NamespaceLookupExtractorFactory.java:209) ~[?:?]
at org.apache.druid.query.lookup.NamespaceLookupExtractorFactory.get(NamespaceLookupExtractorFactory.java:44) ~[?:?]
at org.apache.druid.query.lookup.RegisteredLookupExtractionFn.ensureDelegate(RegisteredLookupExtractionFn.java:150) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.lookup.RegisteredLookupExtractionFn.getExtractionType(RegisteredLookupExtractionFn.java:137) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.topn.TopNQueryEngine.canApplyExtractionInPost(TopNQueryEngine.java:169) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.topn.TopNQueryQueryToolChest$8.run(TopNQueryQueryToolChest.java:445) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.IntervalChunkingQueryRunner.run(IntervalChunkingQueryRunner.java:71) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.UnionQueryRunner.run(UnionQueryRunner.java:68) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.ResultMergeQueryRunner.doRun(ResultMergeQueryRunner.java:46) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.BySegmentSkippingQueryRunner.run(BySegmentSkippingQueryRunner.java:47) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.topn.TopNQueryQueryToolChest$ThresholdAdjustingQueryRunner.run(TopNQueryQueryToolChest.java:561) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.topn.TopNQueryQueryToolChest$9.run(TopNQueryQueryToolChest.java:481) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.FinalizeResultsQueryRunner.run(FinalizeResultsQueryRunner.java:104) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.CPUTimeMetricQueryRunner.run(CPUTimeMetricQueryRunner.java:64) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.FluentQueryRunnerBuilder$FluentQueryRunner.run(FluentQueryRunnerBuilder.java:56) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.ResultLevelCachingQueryRunner.run(ResultLevelCachingQueryRunner.java:150) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.query.QueryPlus.run(QueryPlus.java:158) ~[druid-processing-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.server.QueryLifecycle.execute(QueryLifecycle.java:255) ~[druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.server.QueryResource.doPost(QueryResource.java:192) [druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_151]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_151]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
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:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.apache.druid.server.security.PreResponseAuthorizationCheckFilter.doFilter(PreResponseAuthorizationCheckFilter.java:84) [druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.apache.druid.server.security.AllowOptionsResourceFilter.doFilter(AllowOptionsResourceFilter.java:76) [druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.apache.druid.server.security.AllowAllAuthenticator$1.doFilter(AllowAllAuthenticator.java:85) [druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.apache.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:60) [druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.apache.druid.server.security.SecuritySanityCheckFilter.doFilter(SecuritySanityCheckFilter.java:88) [druid-server-0.13.0-incubating.jar:0.13.0-incubating]
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) [jetty-servlet-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.Server.handle(Server.java:531) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [jetty-server-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) [jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) [jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [jetty-io-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678) [jetty-util-9.4.10.v20180503.jar:9.4.10.v20180503]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
2019-03-27T15:42:57,832 INFO [qtp391575500-136[topN_[meetup-country]_322e7dc1-bf1a-455b-9992-233509823154]] org.apache.druid.java.util.emitter.core.LoggingEmitter - Event [{"feed":"alerts","timestamp":"2019-03-27T15:42:57.832Z","service":"druid/broker","host":"7a653216c461:8082","version":"0.13.0-incubating","severity":"component-failure","description":"Exception handling request","data":{"class":"org.apache.druid.server.QueryResource","exceptionType":"org.apache.druid.java.util.common.ISE","exceptionMessage":"namespace [JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}] : org.apache.druid.server.lookup.namespace.cache.CacheScheduler$EntryImpl@3af638a: CACHE_NOT_INITIALIZED, extractorID = namespace-factory-JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}-dedd1f2d-5ec5-45f0-a076-0dea3111cfca","exceptionStackTrace":"org.apache.druid.java.util.common.ISE: namespace [JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}] : org.apache.druid.server.lookup.namespace.cache.CacheScheduler$EntryImpl@3af638a: CACHE_NOT_INITIALIZED, extractorID = namespace-factory-JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}-dedd1f2d-5ec5-45f0-a076-0dea3111cfca\n\tat org.apache.druid.query.lookup.NamespaceLookupExtractorFactory.get(NamespaceLookupExtractorFactory.java:209)\n\tat org.apache.druid.query.lookup.NamespaceLookupExtractorFactory.get(NamespaceLookupExtractorFactory.java:44)\n\tat org.apache.druid.query.lookup.RegisteredLookupExtractionFn.ensureDelegate(RegisteredLookupExtractionFn.java:150)\n\tat org.apache.druid.query.lookup.RegisteredLookupExtractionFn.getExtractionType(RegisteredLookupExtractionFn.java:137)\n\tat org.apache.druid.query.topn.TopNQueryEngine.canApplyExtractionInPost(TopNQueryEngine.java:169)\n\tat org.apache.druid.query.topn.TopNQueryQueryToolChest$8.run(TopNQueryQueryToolChest.java:445)\n\tat org.apache.druid.query.IntervalChunkingQueryRunner.run(IntervalChunkingQueryRunner.java:71)\n\tat org.apache.druid.query.UnionQueryRunner.run(UnionQueryRunner.java:68)\n\tat org.apache.druid.query.ResultMergeQueryRunner.doRun(ResultMergeQueryRunner.java:46)\n\tat org.apache.druid.query.BySegmentSkippingQueryRunner.run(BySegmentSkippingQueryRunner.java:47)\n\tat org.apache.druid.query.topn.TopNQueryQueryToolChest$ThresholdAdjustingQueryRunner.run(TopNQueryQueryToolChest.java:561)\n\tat org.apache.druid.query.topn.TopNQueryQueryToolChest$9.run(TopNQueryQueryToolChest.java:481)\n\tat org.apache.druid.query.FinalizeResultsQueryRunner.run(FinalizeResultsQueryRunner.java:104)\n\tat org.apache.druid.query.CPUTimeMetricQueryRunner.run(CPUTimeMetricQueryRunner.java:64)\n\tat org.apache.druid.query.FluentQueryRunnerBuilder$FluentQueryRunner.run(FluentQueryRunnerBuilder.java:56)\n\tat org.apache.druid.query.ResultLevelCachingQueryRunner.run(ResultLevelCachingQueryRunner.java:150)\n\tat org.apache.druid.query.QueryPlus.run(QueryPlus.java:158)\n\tat org.apache.druid.server.QueryLifecycle.execute(QueryLifecycle.java:255)\n\tat org.apache.druid.server.QueryResource.doPost(QueryResource.java:192)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)\n\tat com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)\n\tat com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)\n\tat com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)\n\tat com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)\n\tat com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)\n\tat com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)\n\tat com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)\n\tat com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)\n\tat com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)\n\tat com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n\tat com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:286)\n\tat com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:276)\n\tat com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:181)\n\tat com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)\n\tat com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)\n\tat com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120)\n\tat com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:135)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\tat org.apache.druid.server.security.PreResponseAuthorizationCheckFilter.doFilter(PreResponseAuthorizationCheckFilter.java:84)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\tat org.apache.druid.server.security.AllowOptionsResourceFilter.doFilter(AllowOptionsResourceFilter.java:76)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\tat org.apache.druid.server.security.AllowAllAuthenticator$1.doFilter(AllowAllAuthenticator.java:85)\n\tat org.apache.druid.server.security.AuthenticationWrappingFilter.doFilter(AuthenticationWrappingFilter.java:60)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\tat org.apache.druid.server.security.SecuritySanityCheckFilter.doFilter(SecuritySanityCheckFilter.java:88)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)\n\tat org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:724)\n\tat org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61)\n\tat org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:169)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:531)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)\n\tat org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678)\n\tat java.lang.Thread.run(Thread.java:748)\n","exception":"org.apache.druid.java.util.common.ISE: namespace [JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}] : org.apache.druid.server.lookup.namespace.cache.CacheScheduler$EntryImpl@3af638a: CACHE_NOT_INITIALIZED, extractorID = namespace-factory-JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='jdbcpostgresql://localhost:3306/mydatabase', user='root', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider}, table='country', keyColumn='key', valueColumn='value', tsColumn='null', filter='null', pollPeriod=PT0S}-dedd1f2d-5ec5-45f0-a076-0dea3111cfca","query":"TopNQuery{dataSource='meetup-country', dimensionSpec=ExtractionDimensionSpec{dimension='country_code', extractionFn=RegisteredLookupExtractionFn{delegate=null, lookup='country', retainMissingValue=false, replaceMissingValueWith='null', injective=null, optimize=true}, outputName='Country Name', outputType='STRING'}, topNMetricSpec=NumericTopNMetricSpec{metric='Count'}, threshold=10, querySegmentSpec=LegacySegmentSpec{intervals=[1900-01-01T00:00:00.000Z/2100-01-01T00:00:00.000Z]}, virtualColumns=[], dimFilter=null, granularity='AllGranularity', aggregatorSpecs=[DoubleSumAggregatorFactory{fieldName='count', expression='null', name='Count'}], postAggregatorSpecs=[]}","peer":"172.22.0.1"}}]

Expected result:

[
    {
        "timestamp": "2018-08-12T13:48:33.000Z",
        "result": [
            {
                "Count": 10009,
                "Country Code": "United States"
            },
            {
                "Count": 1838,
                "Country Code": "United Kingdom"
            },
            {
                "Count": 721,
                "Country Code": "France"
            }
        ]
    }
]

Can someone help me to understand what is the problem ?

I use docker (with docker-compose) to launch druid and postgresql.

Thank's

KevenLee229 commented 4 years ago

I also have the same problem with mysql. Could you please tell me how to fix it?

KevenLee229 commented 4 years ago

In the historical server, the log shows that the values have been load

org.apache.druid.server.lookup.namespace.JdbcCacheGenerator - Finished loading 1137 values for namespace...

But when I conducted a query to lookup the table, the following error was return:

Unknown exception / namespace [JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='', user='**', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider, dbcpProperties=null}, table='crowd_customer', keyColumn='id', valueColumn='membership_level', tsColumn='null', filter='null', pollPeriod=PT0S}] : org.apache.druid.server.lookup.namespace.cache.CacheScheduler$EntryImpl@2a815d3b: CACHE_NOT_INITIALIZED, extractorID = namespace-factory-JdbcExtractionNamespace{connectorConfig=DbConnectorConfig{createTables=true, connectURI='', user='', passwordProvider=org.apache.druid.metadata.DefaultPasswordProvider, dbcpProperties=null}, table='', keyColumn='id', valueColumn='membership_level', tsColumn='null', filter='null', pollPeriod=PT0S}-63656cc9-36d8-4c8e-ac9b-a0df4878a510 / org.apache.druid.java.util.common.ISE / on host

KevenLee229 commented 4 years ago

Problem fixed. Though historical server loaded values successfully, broker failed to propagate due to lack of mysql connector. So I put mysql connector into broker server and fixed the problem.