This is absolutely great news! Thanks for sharing, James!

We should have this as a presentation in one of our weekly Drill hangout 
sessions.

It’s about time for us to do a meetup. A joint meetup perhaps?

Saurabh

Sent from my iPhone



> On Feb 2, 2018, at 11:13 AM, James Taylor <jamestay...@apache.org> wrote:
> 
> There's also a much deeper integration between Phoenix + Drill (code named
> Drillix) underway that should be possible to complete now that Apache Drill
> is off of it's fork and on a later version of Apache Calcite. I'm hoping
> that the output of this will be a Phoenix adapter in Drill. See
> presentation here[1] and WIP code here[2].
> 
> Thanks,
> James
> 
> [1] http://phoenix.apache.org/presentations/Drillix.pdf
> [2] https://github.com/jacques-n/drill/tree/phoenix_plugin
> 
>> On Fri, Feb 2, 2018 at 10:21 AM, Kunal Khatua <kkha...@mapr.com> wrote:
>> 
>> That's great, Flavio!
>> 
>> You can create a Google doc for review and share it on the user list.
>> 
>> @Bridget handles the documentation on the Apache website, so she can do
>> the final touches and help it find a home on the website.
>> 
>> -----Original Message-----
>> From: Flavio Pompermaier [mailto:pomperma...@okkam.it]
>> Sent: Friday, February 02, 2018 9:04 AM
>> To: user@drill.apache.org
>> Cc: James Taylor <jamestay...@apache.org>
>> Subject: Re: Apache Phoenix integration
>> 
>> 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.createOrUpdatePlugi
>>> n(
>>> 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.ResourceMethodInvocationHan
>>> dle
>>> rFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
>>> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodD
>>> isp
>>> atcher$1.run(AbstractJavaResourceMethodDispatcher.java:151)
>>> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodD
>>> isp
>>> atcher.invoke(AbstractJavaResourceMethodDispatcher.java:171)
>>> org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatche
>>> rPr ovider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherPr
>>> ovider.java:195)
>>> org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodD
>>> isp
>>> 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:2
>>> 52) org.glassfish.jersey.server.ApplicationHandler.handle(
>>> ApplicationHandler.java:1023)
>>> org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:37
>>> 2) 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:4
>>> 78) 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
>> 

Reply via email to