+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 <[email protected]> wrote:
> On Thu, Sep 18, 2014 at 3:01 PM, James Taylor <[email protected]> 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
>> <[email protected]> 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" <[email protected]> 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
>>>> <[email protected]> wrote:
>>>>>
>>>>> Is the client jar available on maven central?
>>>>>
>>>>> On Sep 18, 2014 8:46 PM, "anil gupta" <[email protected]> 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
>>>>>> <[email protected]> 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
>>>>>>> <[email protected]> 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
>>>>>>>> <[email protected]> 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)