Hi,
I am trying to connect Drill to MongoDB via the storage plugin but I have
some issues.
When I enable the plugin from the Web UI and I run a simple "show
databases;" command from the shell, I get the following exception:
0: jdbc:drill:zk=local> show databases;
Exception in thread "WorkManager-1"
com.google.common.util.concurrent.ExecutionError:
java.lang.NoSuchMethodError:
com.mongodb.MongoClient.listDatabaseNames()Lcom/mongodb/client/MongoIterable;
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2261)
at com.google.common.cache.LocalCache.get(LocalCache.java:4000)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4004)
at
com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
at
org.apache.drill.exec.store.mongo.schema.MongoSchemaFactory$MongoSchema.getSubSchemaNames(MongoSchemaFactory.java:172)
at
org.apache.drill.exec.store.mongo.schema.MongoSchemaFactory$MongoSchema.setHolder(MongoSchemaFactory.java:159)
at
org.apache.drill.exec.store.mongo.schema.MongoSchemaFactory.registerSchemas(MongoSchemaFactory.java:127)
at
org.apache.drill.exec.store.mongo.MongoStoragePlugin.registerSchemas(MongoStoragePlugin.java:85)
at
org.apache.drill.exec.store.StoragePluginRegistry$DrillSchemaFactory.registerSchemas(StoragePluginRegistry.java:330)
at
org.apache.drill.exec.ops.QueryContext.getRootSchema(QueryContext.java:165)
at
org.apache.drill.exec.ops.QueryContext.getRootSchema(QueryContext.java:154)
at
org.apache.drill.exec.ops.QueryContext.getRootSchema(QueryContext.java:142)
at
org.apache.drill.exec.ops.QueryContext.getNewDefaultSchema(QueryContext.java:128)
at
org.apache.drill.exec.planner.sql.DrillSqlWorker.<init>(DrillSqlWorker.java:91)
at org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:901)
at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:242)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NoSuchMethodError:
com.mongodb.MongoClient.listDatabaseNames()Lcom/mongodb/client/MongoIterable;
at
org.apache.drill.exec.store.mongo.schema.MongoSchemaFactory$DatabaseLoader.load(MongoSchemaFactory.java:91)
at
org.apache.drill.exec.store.mongo.schema.MongoSchemaFactory$DatabaseLoader.load(MongoSchemaFactory.java:82)
at
com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
at
com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
at
com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257)
... 18 more
I double checked and I can see the mongo driver in
jars/3rdparty/mongo-java-driver-3.0.2.jar, but not sure why Drill can't
find it.
I am using apache-drill-1.1.0 and mongo v3.0.6 on Mac OSX 10.8.
Another odd thing is when I start drill embedded mode it says "apache drill
1.0.0" instead of 1.1.0:
bin/drill-embedded
2015-08-31 11:19:46.955 java[1304:f0f] Unable to load realm info from
SCDynamicStore
Aug 31, 2015 11:19:54 AM org.glassfish.jersey.server.ApplicationHandler
initialize
INFO: Initiating Jersey application, version Jersey: 2.8 2014-04-29
01:25:26...
apache drill 1.0.0
"what ever the mind of man can conceive and believe, drill can query"
0: jdbc:drill:zk=local>
Thanks for your help.
Vincenzo