Eventually I made it to integrate Phoenix with Drill! I debugged remotely the drill-embedded via Eclipse and I discovered that the problem was that you need some extra jars to make it work! Where can I write some documentation about debugging remotely Drill from Eclipse and integration with Drill?
On Fri, Feb 2, 2018 at 5:28 PM, Flavio Pompermaier <pomperma...@okkam.it> wrote: > 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.createPoolableConnectionFactor > y(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.ResourceMethodInvocationHandle > rFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDisp > atcher$1.run(AbstractJavaResourceMethodDispatcher.java:151) > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDisp > atcher.invoke(AbstractJavaResourceMethodDispatcher.java:171) > org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherPr > ovider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherPr > ovider.java:195) > org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDisp > atcher.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 <pomperma...@okkam.it> > 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 < >> saurabhmahapatr...@gmail.com> 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 <kkha...@mapr.com> 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:pomperma...@okkam.it] >>> > Sent: Thursday, February 01, 2018 9:39 AM >>> > To: user@drill.apache.org >>> > 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> >> > > > -- Flavio Pompermaier Development Department OKKAM S.r.l. Tel. +(39) 0461 041809