phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Purtell <apurt...@apache.org>
Subject Re: Phoenix client maven dependencies
Date Mon, 22 Sep 2014 18:30:09 GMT
See PHOENIX-1272

On Mon, Sep 22, 2014 at 9:31 AM, James Taylor <jamestaylor@apache.org> wrote:
> +1 to doing the same for hbase-testing-util. Thanks for the analysis, Andrew!
>
>     James
>
> On Mon, Sep 22, 2014 at 9:18 AM, Andrew Purtell <apurtell@apache.org> wrote:
>> On Thu, Sep 18, 2014 at 3:01 PM, James Taylor <jamestaylor@apache.org> wrote:
>>> I see. That makes sense, but it's more of an HBase request than a
>>> Phoenix request. If HBase had a "client-only" pom, then Phoenix could
>>> have a "client-only" pom as well.
>>>
>>> Thanks,
>>> James
>>
>> If you specify only the 'hbase-client' Maven module as the HBase
>> dependency then this pulls in client-only deps (hbase-common,
>> hbase-protocol, commons-codec, commons-collections, commons-io,
>> commons-lang, commons-logging, guava, protobuf-java, netty, zookeeper,
>> htrace-core, jackson-mapper-asl, log4j)
>>
>> I think Phoenix might be pulling in all of the other HBase modules
>> because phoenix-core specifies the 'hbase-testing-util' HBase module
>> as a dependency, and not at test scope:
>>
>>       <dependencies>
>>           <dependency>
>>             <groupId>org.apache.hbase</groupId>
>>             <artifactId>hbase-testing-util</artifactId>
>>             <exclusions>
>>               <exclusion>
>>                 <groupId>org.jruby</groupId>
>>                 <artifactId>jruby-complete</artifactId>
>>               </exclusion>
>>             </exclusions>
>>           </dependency>
>>         ...
>>
>> hbase-testing-util doesn't contain any code. It is a module you can
>> use that will pull in *everything* needed to start up mini cluster
>> tests, all of the HBase modules including hbase-server and the compat
>> modules, with compile scope. Maven doc says about compile scope: "This
>> is the default scope, used if none is specified. Compile dependencies
>> are available in all classpaths of a project. Furthermore, those
>> dependencies are propagated to dependent projects."
>>
>> Other test dependencies in the phoenix-core POM are included at test
>> scope and tagged as optional, e.g.
>>
>>           <dependency>
>>             <groupId>org.apache.hadoop</groupId>
>>             <artifactId>hadoop-test</artifactId>
>>             <optional>true</optional>
>>             <scope>test</scope>
>>           </dependency>
>>
>> Perhaps the same should be done for hbase-testing-util ?
>>
>>
>>> On Thu, Sep 18, 2014 at 1:52 PM, Flavio Pompermaier
>>> <pompermaier@okkam.it> wrote:
>>>> Because it is not clear which are the exact dependencies to add to a pom.xml
>>>> that uses the Phoenix client.
>>>> For example, why do I need to transitively hold all depency of hbase-server
>>>> in the client side or both hadoop (1 and 2) compatibility jars?! Wouldn't
be
>>>> more easy to create a client jar that select only those needed classes of
>>>> such jar?
>>>>
>>>> On Sep 18, 2014 9:12 PM, "Mujtaba Chohan" <mujtaba@apache.org> wrote:
>>>>>
>>>>> Falvio - Client jar is composed on multiple dependency jars extracted
in
>>>>> one and is for convenience available in binary download only. This type
of
>>>>> bundled jars are not supposed to go in maven repo. as maven automatically
>>>>> resolves required dependencies. To use maven repo., use the phoenix-core
as
>>>>> artifact id and maven will pull in all the required dependencies for
your
>>>>> project. Then if you want a single jar for your project, you can bundle
your
>>>>> project jars in one.
>>>>>
>>>>>     <dependency>
>>>>>         <groupId>org.apache.phoenix</groupId>
>>>>>         <artifactId>phoenix-core</artifactId>
>>>>>         <version>4.1.0</version>
>>>>>     </dependency>
>>>>>
>>>>> //mujtaba
>>>>>
>>>>> On Thu, Sep 18, 2014 at 11:54 AM, Flavio Pompermaier
>>>>> <pompermaier@okkam.it> wrote:
>>>>>>
>>>>>> Is the client jar available on maven central?
>>>>>>
>>>>>> On Sep 18, 2014 8:46 PM, "anil gupta" <anilgupta84@gmail.com>
wrote:
>>>>>>>
>>>>>>> Hi Flavio,
>>>>>>>
>>>>>>> Phoenix-core is for sever side. If this app is for client side
then you
>>>>>>> can use client jars. Maybe you can try to use
>>>>>>> phoenix-client-without-hbase.jar. In this case, i think you will
at least
>>>>>>> need hbase-client jar in your client app to be added in your
pom.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Anil Gupta
>>>>>>>
>>>>>>> On Thu, Sep 18, 2014 at 6:13 AM, Flavio Pompermaier
>>>>>>> <pompermaier@okkam.it> wrote:
>>>>>>>>
>>>>>>>> Is it really necessary the dependency to hbase-server..?
Then if I try
>>>>>>>> to run my application from a webapp using resteasy I get
this error:
>>>>>>>>
>>>>>>>> Caused by:
>>>>>>>> org.jboss.as.server.deployment.DeploymentUnitProcessingException:
>>>>>>>> JBAS011232: Only one JAX-RS Application Class allowed.
>>>>>>>> com.sun.jersey.api.core.ClasspathResourceConfig
>>>>>>>> com.sun.jersey.server.impl.application.DeferredResourceConfig
>>>>>>>> com.sun.jersey.api.core.ScanningResourceConfig
>>>>>>>> org.apache.hadoop.hbase.rest.ResourceConfig
>>>>>>>> com.sun.jersey.api.core.ClassNamesResourceConfig
>>>>>>>> com.sun.jersey.api.core.ApplicationAdapter
>>>>>>>> com.sun.jersey.api.core.WebAppResourceConfig
>>>>>>>> com.sun.jersey.api.core.PackagesResourceConfig
>>>>>>>> com.sun.jersey.api.core.DefaultResourceConfig
>>>>>>>> com.sun.jersey.api.core.ResourceConfig
>>>>>>>> at
>>>>>>>> org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scan(JaxrsScanningProcessor.java:209)
>>>>>>>>
>>>>>>>> On Thu, Sep 18, 2014 at 11:40 AM, Flavio Pompermaier
>>>>>>>> <pompermaier@okkam.it> wrote:
>>>>>>>>>
>>>>>>>>> I was able to obtain a minimal set of dependencies *for
hadoop1)
>>>>>>>>> using:
>>>>>>>>>                 <dependency>
>>>>>>>>> <groupId>org.apache.phoenix</groupId>
>>>>>>>>> <artifactId>phoenix</artifactId>
>>>>>>>>> <version>4.1.0</version>
>>>>>>>>> </dependency>
>>>>>>>>> <dependency>
>>>>>>>>> <groupId>org.apache.hbase</groupId>
>>>>>>>>> <artifactId>hbase-client</artifactId>
>>>>>>>>> <version>0.98.4-hadoop1</version>
>>>>>>>>> </dependency>
>>>>>>>>>                 <!-- Need hbase server just for
>>>>>>>>> ConstantSizeRegionSplitPolicy class.. -->
>>>>>>>>> <dependency>
>>>>>>>>> <groupId>org.apache.hbase</groupId>
>>>>>>>>> <artifactId>hbase-server</artifactId>
>>>>>>>>> <version>0.98.4-hadoop1</version>
>>>>>>>>> <exclusions>
>>>>>>>>> <exclusion>
>>>>>>>>> <artifactId>*</artifactId>
>>>>>>>>> <groupId>*</groupId>
>>>>>>>>> </exclusion>
>>>>>>>>> </exclusions>
>>>>>>>>> </dependency>
>>>>>>>>> <dependency>
>>>>>>>>> <groupId>org.apache.phoenix</groupId>
>>>>>>>>> <artifactId>phoenix-hadoop-compat</artifactId>
>>>>>>>>> <version>4.1.0</version>
>>>>>>>>> <exclusions>
>>>>>>>>>                                  <!-- conflict with
>>>>>>>>> hbase-client-0.98.4-hadoop1 version -->
>>>>>>>>> <exclusion>
>>>>>>>>> <artifactId>hbase-common</artifactId>
>>>>>>>>> <groupId>org.apache.hbase</groupId>
>>>>>>>>> </exclusion>
>>>>>>>>> </exclusions>
>>>>>>>>> </dependency>
>>>>>>>>>
>>>>>>>>> but I still get this exception (that however seems not
causing any
>>>>>>>>> issue):
>>>>>>>>> java.lang.RuntimeException: Could not create  interface
>>>>>>>>> org.apache.phoenix.trace.PhoenixSpanReceiver Is the hadoop
compatibility jar
>>>>>>>>> on the classpath?
>>>>>>>>> at
>>>>>>>>> org.apache.hadoop.hbase.CompatibilityFactory.getInstance(CompatibilityFactory.java:60)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.trace.TracingCompat.newTraceMetricSource(TracingCompat.java:40)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.trace.util.Tracing.addTraceMetricsSource(Tracing.java:294)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.jdbc.PhoenixConnection.<clinit>(PhoenixConnection.java:125)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.query.ConnectionQueryServicesImpl$9.call(ConnectionQueryServicesImpl.java:1516)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.query.ConnectionQueryServicesImpl$9.call(ConnectionQueryServicesImpl.java:1489)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:77)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:1489)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:162)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.connect(PhoenixEmbeddedDriver.java:129)
>>>>>>>>> at
>>>>>>>>> org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:133)
>>>>>>>>> at java.sql.DriverManager.getConnection(DriverManager.java:571)
>>>>>>>>> at java.sql.DriverManager.getConnection(DriverManager.java:233)
>>>>>>>>> Caused by: java.util.NoSuchElementException
>>>>>>>>> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:357)
>>>>>>>>> at java.util.ServiceLoader$1.next(ServiceLoader.java:445)
>>>>>>>>> at
>>>>>>>>> org.apache.hadoop.hbase.CompatibilityFactory.getInstance(CompatibilityFactory.java:46)
>>>>>>>>> ... 14 more
>>>>>>>>>
>>>>>>>>> How can I fix those problems?
>>>>>>>>>
>>>>>>>>> On Thu, Sep 18, 2014 at 10:34 AM, Flavio Pompermaier
>>>>>>>>> <pompermaier@okkam.it> wrote:
>>>>>>>>>>
>>>>>>>>>> Hi to all,
>>>>>>>>>>
>>>>>>>>>> I'm trying to write a J2EE application that uses
the Phoenix JDBC
>>>>>>>>>> driver for HBase 0.98 (not on yarn for tests but
it will be in production)
>>>>>>>>>> through maven.
>>>>>>>>>> Do I really need all the jars of the hbase-server
side contained in
>>>>>>>>>> the phoenix core jar..?
>>>>>>>>>> I can't see a phoenix-client jar on the central maven
repository
>>>>>>>>>> while in the documentation there's to use that jar!
>>>>>>>>>>
>>>>>>>>>> Thanks in advance,
>>>>>>>>>> Flavio
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Thanks & Regards,
>>>>>>> Anil Gupta
>>>>>
>>>>>
>>>>
>>
>>
>>
>> --
>> Best regards,
>>
>>    - Andy
>>
>> Problems worthy of attack prove their worth by hitting back. - Piet
>> Hein (via Tom White)



-- 
Best regards,

   - Andy

Problems worthy of attack prove their worth by hitting back. - Piet
Hein (via Tom White)

Mime
View raw message