See PHOENIX-1272 On Mon, Sep 22, 2014 at 9:31 AM, James Taylor <[email protected]> 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 <[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)
-- Best regards, - Andy Problems worthy of attack prove their worth by hitting back. - Piet Hein (via Tom White)
