What is the fastest way to debug the JDBC plugin from Eclipse? I don't see anything in the logs that could help... Is it possible to connect directly to the external embedded drill running on my machine if I enable jmx? it seems that the JDBC connection is established correctly but Drill throws an Exception (that is not well unwrapped by Jersey):
2018-02-02 16:54:04,520 [qtp159619134-56] INFO o.a.p.q.ConnectionQueryServicesImpl - HConnection established. Stacktrace for informational purposes: hconnection-0x1b9fe9f8 java.lang.Thread.getStackTrace(Thread.java:1552) org.apache.phoenix.util.LogUtil.getCallerStackTrace(LogUtil.java:55) org.apache.phoenix.query.ConnectionQueryServicesImpl.openConnection(ConnectionQueryServicesImpl.java:410) org.apache.phoenix.query.ConnectionQueryServicesImpl.access$400(ConnectionQueryServicesImpl.java:256) org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2408) org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2384) org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76) org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2384) org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:255) org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:150) org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:221) org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556) org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) org.apache.calcite.adapter.jdbc.JdbcUtils$DialectPool.get(JdbcUtils.java:73) org.apache.calcite.adapter.jdbc.JdbcSchema.createDialect(JdbcSchema.java:138) org.apache.drill.exec.store.jdbc.JdbcStoragePlugin.<init>(JdbcStoragePlugin.java:103) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) org.apache.drill.exec.store.StoragePluginRegistryImpl.create(StoragePluginRegistryImpl.java:346) org.apache.drill.exec.store.StoragePluginRegistryImpl.createOrUpdate(StoragePluginRegistryImpl.java:239) org.apache.drill.exec.server.rest.PluginConfigWrapper.createOrUpdateInStorage(PluginConfigWrapper.java:57) org.apache.drill.exec.server.rest.StorageResources.createOrUpdatePluginJSON(StorageResources.java:162) org.apache.drill.exec.server.rest.StorageResources.createOrUpdatePlugin(StorageResources.java:177) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:498) org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:195) org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:104) org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387) org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331) org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103) org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:269) org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) org.glassfish.jersey.internal.Errors.process(Errors.java:315) org.glassfish.jersey.internal.Errors.process(Errors.java:297) org.glassfish.jersey.internal.Errors.process(Errors.java:267) org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297) org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:252) org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1023) org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:382) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:345) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:220) org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:738) org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:551) org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:219) org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111) org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478) org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045) org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) org.eclipse.jetty.server.Server.handle(Server.java:462) org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:279) org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232) org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534) org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) java.lang.Thread.run(Thread.java:745) On Fri, Feb 2, 2018 at 10:21 AM, Flavio Pompermaier <[email protected]> wrote: > Hi Saurabh, > I'd like to use Drill because in my use case I have multiple sources > (HDFS, HBase, Phoenix, Oracle, Mysql) and I'd like to allow the user to see > the data. > Without writing a plugin for each storage system I'd like to leverage > Apache Drill as a broker towards all of them. > > Right now I've tried to puth the phoenix-core.jar into the jar/3rdparty > folder but when I try to create the Phoenix storage I get the following > error: > Please retry: error (unable to create/ update storage) > > I'm trying to debug but I don't see anything wrong.. > > > On Fri, Feb 2, 2018 at 1:42 AM, Saurabh Mahapatra < > [email protected]> wrote: > >> Hi Flavio, >> >> I was curious what your use case is. Phoenix provides SQL access with >> secondary indexes on HBase. Why would you want to use Drill? >> >> Thanks, >> Saurabh >> >> On Thu, Feb 1, 2018 at 3:08 PM, Kunal Khatua <[email protected]> wrote: >> >> > The JDBC storage plugin allows Drill to leverage any SQL system that has >> > JDBC drivers, so it should work. >> > >> > That said, the JDBC storage plugin is a community developed storage >> > plugin, so it might not be fully tested. >> > >> > If you are looking to simply have the Phoenix JDBC driver bundled into >> the >> > Drill 3rd party directory, I (think) the reason it is not bundled is >> > because we're not actively tracking compatibility of different JDBC >> drivers >> > with Drill. There could also be license issues, which is why we can't >> > bundle drivers for platforms like Oracle, etc. >> > >> > ~ Kunal >> > >> > -----Original Message----- >> > From: Flavio Pompermaier [mailto:[email protected]] >> > Sent: Thursday, February 01, 2018 9:39 AM >> > To: [email protected] >> > Subject: Apache Phoenix integration >> > >> > Hi all, >> > looking at https://urldefense.proofpoint.com/v2/url?u=https-3A__drill. >> > apache.org_docs_apache-2Ddrill-2Dcontribution-2Dideas_&d=DwIBaQ&c= >> > cskdkSMqhcnjZxdQVpwTXg&r=-cT6otg6lpT_XkmYy7yg3A&m=daBPP_ >> > PaenGs721v8erkPwwO543kYzW-gKUv-c1jVWM&s=KMq_T0hogIOIv_ >> > ttrCLCxBeEt-AUKKxpcQt3PpeNSbs&e= >> > it seems that Apache Phoenix is not integrated with Drill right now. In >> > theory the integration should be quite straightforward using the JDBC >> > Phoenix connector, isn't it? >> > Right now there are just a few problem of class loading when putting the >> > phoenix jar into jars/3rdparty but it shouldn't be too hard to shade >> > conflicting classes away. >> > >> > Has anyone attempted to connect to to Apache before? >> > >> > Best, >> > Flavio >> > >> > > > > -- > Flavio Pompermaier > Development Department > > OKKAM S.r.l. > Tel. +(39) 0461 041809 <+39%200461%20041809> >
