You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ambari.apache.org by Lian Jiang <ji...@gmail.com> on 2018/04/19 17:38:02 UTC

pheonix client

I am using HDP 2.6 hbase and pheonix. I created a play rest service using
hbase as the backend. However, I have trouble to get a working pheonix
client.

I tried the pheonix-client.jar given by HDP but its logging dependency
conflicts with play's. Then I tried:

libraryDependencies += "org.apache.phoenix" % "phoenix-core" %
"4.13.1-HBase-1.1"

libraryDependencies += "org.apache.phoenix" % "phoenix-server-client" %
"4.7.0-HBase-1.1"

libraryDependencies += "org.apache.phoenix" % "phoenix-queryserver-client"
% "4.13.1-HBase-1.1"

None of them worked: "No suitable driver found".

Any idea will be highly appreciated!

Re: pheonix client

Posted by Lian Jiang <ji...@gmail.com>.
```
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in
[jar:file:/Users/lianjia/repo/hbaseWS/lib/phoenix-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in
[jar:file:/Users/lianjia/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
explanation.

java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be
cast to ch.qos.logback.classic.LoggerContext
```

According to the error, slf4j simply uses the first binding it finds. The
workaround is to also add logback-classic-1.2.3.jar as an unmanaged
dependency which overrides the one provided by phoenix-client.jar. A better
way is to check if I can control the
visibility order of the runtime dependencies so that I don't need such
hacky workaround.

On Fri, Apr 20, 2018 at 11:07 AM, Lian Jiang <ji...@gmail.com> wrote:

> Thanks Gonzalo.
>
> pheonix-client.jar is added as an unmanaged jar in my sbt project and sbt
> cannot exclude its dependencies.
>
> Without the pheonix-client.jar's source code, how can I create a jar (e.g.
> myclient.jar) wrapping phoenix-client.jar while shading its logging
> dependency?
>
> Thanks for any clue!
>
> On Fri, Apr 20, 2018 at 12:30 AM, Gonzalo Herreros <gh...@gmail.com>
> wrote:
>
>> The newer versions don't include the client in the core, I think.
>> Otherwise 4.7.0 phoenix-core should contain the driver (but it doesn't
>> include tephra which it needs)
>>
>> However, what you should do is exclude or override the logging dependency
>> in phoenix (don't know how that is done in gradle) or as a last resort
>> shade the client jar
>>
>> On 19 April 2018 at 18:38, Lian Jiang <ji...@gmail.com> wrote:
>>
>>> I am using HDP 2.6 hbase and pheonix. I created a play rest service
>>> using hbase as the backend. However, I have trouble to get a working
>>> pheonix client.
>>>
>>> I tried the pheonix-client.jar given by HDP but its logging dependency
>>> conflicts with play's. Then I tried:
>>>
>>> libraryDependencies += "org.apache.phoenix" % "phoenix-core" %
>>> "4.13.1-HBase-1.1"
>>>
>>> libraryDependencies += "org.apache.phoenix" % "phoenix-server-client" %
>>> "4.7.0-HBase-1.1"
>>>
>>> libraryDependencies += "org.apache.phoenix" %
>>> "phoenix-queryserver-client" % "4.13.1-HBase-1.1"
>>>
>>> None of them worked: "No suitable driver found".
>>>
>>> Any idea will be highly appreciated!
>>>
>>>
>>
>

Re: pheonix client

Posted by Lian Jiang <ji...@gmail.com>.
Thanks Gonzalo.

pheonix-client.jar is added as an unmanaged jar in my sbt project and sbt
cannot exclude its dependencies.

Without the pheonix-client.jar's source code, how can I create a jar (e.g.
myclient.jar) wrapping phoenix-client.jar while shading its logging
dependency?

Thanks for any clue!

On Fri, Apr 20, 2018 at 12:30 AM, Gonzalo Herreros <gh...@gmail.com>
wrote:

> The newer versions don't include the client in the core, I think.
> Otherwise 4.7.0 phoenix-core should contain the driver (but it doesn't
> include tephra which it needs)
>
> However, what you should do is exclude or override the logging dependency
> in phoenix (don't know how that is done in gradle) or as a last resort
> shade the client jar
>
> On 19 April 2018 at 18:38, Lian Jiang <ji...@gmail.com> wrote:
>
>> I am using HDP 2.6 hbase and pheonix. I created a play rest service using
>> hbase as the backend. However, I have trouble to get a working pheonix
>> client.
>>
>> I tried the pheonix-client.jar given by HDP but its logging dependency
>> conflicts with play's. Then I tried:
>>
>> libraryDependencies += "org.apache.phoenix" % "phoenix-core" %
>> "4.13.1-HBase-1.1"
>>
>> libraryDependencies += "org.apache.phoenix" % "phoenix-server-client" %
>> "4.7.0-HBase-1.1"
>>
>> libraryDependencies += "org.apache.phoenix" %
>> "phoenix-queryserver-client" % "4.13.1-HBase-1.1"
>>
>> None of them worked: "No suitable driver found".
>>
>> Any idea will be highly appreciated!
>>
>>
>

Re: pheonix client

Posted by Gonzalo Herreros <gh...@gmail.com>.
The newer versions don't include the client in the core, I think.
Otherwise 4.7.0 phoenix-core should contain the driver (but it doesn't
include tephra which it needs)

However, what you should do is exclude or override the logging dependency
in phoenix (don't know how that is done in gradle) or as a last resort
shade the client jar

On 19 April 2018 at 18:38, Lian Jiang <ji...@gmail.com> wrote:

> I am using HDP 2.6 hbase and pheonix. I created a play rest service using
> hbase as the backend. However, I have trouble to get a working pheonix
> client.
>
> I tried the pheonix-client.jar given by HDP but its logging dependency
> conflicts with play's. Then I tried:
>
> libraryDependencies += "org.apache.phoenix" % "phoenix-core" %
> "4.13.1-HBase-1.1"
>
> libraryDependencies += "org.apache.phoenix" % "phoenix-server-client" %
> "4.7.0-HBase-1.1"
>
> libraryDependencies += "org.apache.phoenix" % "phoenix-queryserver-client"
> % "4.13.1-HBase-1.1"
>
> None of them worked: "No suitable driver found".
>
> Any idea will be highly appreciated!
>
>