phoenix-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From anil gupta <anilgupt...@gmail.com>
Subject Re: Problems getting started with Apache Phoenix
Date Sat, 19 Sep 2015 19:21:40 GMT
Yes, Phoenix provides a SQL and JDBC interface to talk to HBase. Phoenix
runs on top of HBase.
HBase is the datastore for Phoenix table.

**Every Phoenix table is backed by HBase table(s).**

On Sat, Sep 19, 2015 at 12:09 PM, Ashutosh Sharma <
ashu.sharma.india@gmail.com> wrote:

> But when I am writing  into Phoenix tables using Java application it is
> reflecting in the corresponding Hbase table also. So Phoenix and Hbase
> tables are one and the same,  right
> On Sep 19, 2015 11:35 AM, "anil gupta" <anilgupta84@gmail.com> wrote:
>
>> Phoenix api has to be used to read/write data to Phoenix tables.
>> However, in a HBase cluster, you have the freedom to have both Phoenix
>> and Non-Phoenix(hbase) tables in HBase.
>>
>> On Sat, Sep 19, 2015 at 8:50 AM, Ashutosh Sharma <
>> ashu.sharma.india@gmail.com> wrote:
>>
>>> *Problem is resolved now.*
>>> It was class file version mismatch due to some conflicting version
>>> jars....
>>>
>>> Followed all these links thoroughly:
>>> follow these links:
>>> https://phoenix.apache.org/installation.html
>>>
>>> https://phoenix.apache.org/Phoenix-in-15-minutes-or-less.html
>>>
>>>
>>> https://phoenix.apache.org/faq.html#I_want_to_get_started_Is_there_a_Phoenix_Hello_World
>>>
>>> Created a brand new Eclipse workspace and then successfully executed
>>> this one:
>>> import java.sql.Connection;
>>> import java.sql.DriverManager;
>>> import java.sql.ResultSet;
>>> import java.sql.SQLException;
>>> import java.sql.PreparedStatement;
>>> import java.sql.Statement;
>>>
>>>
>>> //Folllow this one:
>>> //
>>> https://phoenix.apache.org/faq.html#I_want_to_get_started_Is_there_a_Phoenix_Hello_World
>>> public class TestPhoenix {
>>>
>>> public static void main(String[] args) throws SQLException {
>>> Statement stmt = null;
>>> ResultSet rset = null;
>>> Connection con = DriverManager.getConnection("jdbc:phoenix:localhost");
>>> stmt = con.createStatement();
>>> //The below lines are commented as the table already exists in the DB
>>> /*
>>> stmt.executeUpdate("create table test (mykey integer not null primary
>>> key, mycolumn varchar)");
>>> stmt.executeUpdate("upsert into test values (1,'Hello')");
>>> stmt.executeUpdate("upsert into test values (2,'World!')");
>>> con.commit();*/
>>> PreparedStatement statement = con.prepareStatement("select * from test");
>>> rset = statement.executeQuery();
>>> while (rset.next()) {
>>> System.out.println(rset.getString("mycolumn"));
>>> }
>>> //Add some more rows for testing
>>> stmt.executeUpdate("upsert into test values (3,'Ashu')");
>>> stmt.executeUpdate("upsert into test values (4,'Sharma')");
>>> stmt.executeUpdate("upsert into test values (5,'Ayush')");
>>> stmt.executeUpdate("upsert into test values (6,'Shivam')");
>>> con.commit();
>>> //Now read it further
>>> rset = statement.executeQuery();
>>> while (rset.next()) {
>>> System.out.println(rset.getString("mycolumn"));
>>> }
>>> statement.close();
>>> con.close();
>>> }
>>> }
>>>
>>>
>>> Working fine. Only Phoenix client JAR is needed...nothing more than that.
>>> Few questions, I can see that table that i created using Phoenix is also
>>> created into HBase. But how they are working internally....means if any
>>> update happens at Hbase side...are they reflected at Phoenix side or not?
>>> and vice versa....
>>>
>>> On Sat, Sep 19, 2015 at 7:59 AM, Ashutosh Sharma <
>>> ashu.sharma.india@gmail.com> wrote:
>>>
>>>> Hi,
>>>> I am very new to HBase as well as Apache Phoenix.
>>>> Tried making use of this basic program to do the connectivity check
>>>> etc...
>>>> import java.sql.*;
>>>> import java.util.*;
>>>>
>>>> public class phoenixTest
>>>> {
>>>> public static void main(String args[]) throws Exception
>>>> {
>>>> Connection conn;
>>>> Properties prop = new Properties();
>>>> Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
>>>> //conn =
>>>> DriverManager.getConnection("jdbc:phoenix:localhost:/hbase-unsecure");
>>>> //conn =
>>>> DriverManager.getConnection("jdbc:phoenix:localhost:2181/hbase-unsecure");
>>>> conn = DriverManager.getConnection("jdbc:phoenix:localhost");
>>>> System.out.println("got connection");
>>>> ResultSet rst = conn.createStatement().executeQuery(
>>>> "select * from stock_symbol");
>>>> while (rst.next())
>>>> {
>>>> System.out.println(rst.getString(1) + " " + rst.getString(2));
>>>> }
>>>> System.out.println(conn.createStatement().executeUpdate(
>>>> "delete from stock_symbol"));
>>>> conn.commit();
>>>> rst = conn.createStatement().executeQuery("select * from stock_symbol");
>>>> while (rst.next())
>>>> {
>>>> System.out.println(rst.getString(1) + " " + rst.getString(2));
>>>> }
>>>> System.out
>>>> .println(conn
>>>> .createStatement()
>>>> .executeUpdate(
>>>> "upsert into stock_symbol values('IBM','International Business
>>>> Machines')"));
>>>> conn.commit();
>>>> }
>>>> }
>>>>
>>>> But getting this issue:
>>>> SLF4J: Class path contains multiple SLF4J bindings.
>>>> SLF4J: Found binding in
>>>> [jar:file:/hbase-1.1.2/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
>>>> SLF4J: Found binding in
>>>> [jar:file:/home/ashu/Downloads/phoenix-4.5.2-HBase-1.1-bin/phoenix-4.5.2-HBase-1.1-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
>>>> SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
>>>> explanation.
>>>> SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
>>>> Driver class loaded successfully
>>>> 15/09/19 07:54:01 INFO zookeeper.RecoverableZooKeeper: Process
>>>> identifier=hconnection-0x43738a82 connecting to ZooKeeper
>>>> ensemble=localhost:2181
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client environment:
>>>> host.name=ashu-700-430qe
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:java.version=1.8.0_25
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:java.vendor=Oracle Corporation
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:java.home=/jdk1.8.0_25/jre
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:java.class.path=/root/workspace_hbase/HBaseIntro/bin:/hbase-1.1.2/lib/hbase-client-1.1.2.jar:/hbase-1.1.2/lib/hbase-common-1.1.2.jar:/hbase-1.1.2/lib/zookeeper-3.4.6.jar:/usr/local/hadoop/hadoop-core-1.2.1.jar:/usr/local/hadoop/lib/commons-configuration-1.6.jar:/hbase-1.1.2/lib/commons-logging-1.2.jar:/hbase-1.1.2/lib/commons-lang-2.6.jar:/hbase-1.1.2/lib/protobuf-java-2.5.0.jar:/hbase-1.1.2/lib/hbase-protocol-1.1.2.jar:/hbase-1.1.2/lib/slf4j-log4j12-1.7.5.jar:/hbase-1.1.2/lib/slf4j-api-1.7.7.jar:/hbase-1.1.2/lib/log4j-1.2.17.jar:/hbase-1.1.2/lib/htrace-core-3.1.0-incubating.jar:/hbase-1.1.2/lib/guava-12.0.1.jar:/hbase-1.1.2/lib/guice-3.0.jar:/hbase-1.1.2/lib/netty-all-4.0.23.Final.jar:/hbase-1.1.2/lib/netty-3.2.4.Final.jar:/home/ashu/Downloads/phoenix-4.5.2-HBase-1.1-bin/phoenix-core-4.5.2-HBase-1.1.jar:/home/ashu/Downloads/phoenix-4.5.2-HBase-1.1-bin/phoenix-flume-4.5.2-HBase-1.1.jar:/home/ashu/Downloads/phoenix-4.5.2-HBase-1.1-bin/phoenix-pig-4.5.2-HBase-1.1.jar:/home/ashu/Downloads/phoenix-4.5.2-HBase-1.1-bin/phoenix-spark-4.5.2-HBase-1.1.jar:/home/ashu/Downloads/phoenix-4.5.2-HBase-1.1-bin/phoenix-server-4.5.2-HBase-1.1.jar:/home/ashu/Downloads/phoenix-4.5.2-HBase-1.1-bin/phoenix-server-client-4.5.2-HBase-1.1.jar:/home/ashu/Downloads/phoenix-4.5.2-HBase-1.1-bin/phoenix-4.5.2-HBase-1.1-client.jar
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:java.io.tmpdir=/tmp
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:java.compiler=<NA>
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client environment:os.name
>>>> =Linux
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:os.arch=amd64
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:os.version=3.13.0-63-generic
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client environment:
>>>> user.name=root
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:user.home=/root
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Client
>>>> environment:user.dir=/root/workspace_hbase/HBaseIntro
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Initiating client
>>>> connection, connectString=localhost:2181 sessionTimeout=90000
>>>> watcher=hconnection-0x43738a820x0, quorum=localhost:2181, baseZNode=/hbase
>>>> 15/09/19 07:54:01 INFO zookeeper.ClientCnxn: Opening socket connection
>>>> to server localhost/127.0.0.1:2181. Will not attempt to authenticate
>>>> using SASL (unknown error)
>>>> 15/09/19 07:54:01 INFO zookeeper.ClientCnxn: Socket connection
>>>> established to localhost/127.0.0.1:2181, initiating session
>>>> 15/09/19 07:54:01 INFO zookeeper.ClientCnxn: Session establishment
>>>> complete on server localhost/127.0.0.1:2181, sessionid =
>>>> 0x14fe3b6b1e40039, negotiated timeout = 40000
>>>> 15/09/19 07:54:01 INFO
>>>> client.ConnectionManager$HConnectionImplementation: Closing zookeeper
>>>> sessionid=0x14fe3b6b1e40039
>>>> 15/09/19 07:54:01 INFO zookeeper.ZooKeeper: Session: 0x14fe3b6b1e40039
>>>> closed
>>>> 15/09/19 07:54:01 INFO zookeeper.ClientCnxn: EventThread shut down
>>>> Exception in thread "main" java.lang.NoSuchMethodError:
>>>> org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.instance()Lorg/apache/hadoop/metrics2/MetricsSystem;
>>>> at org.apache.phoenix.metrics.Metrics.<clinit>(Metrics.java:29)
>>>> at
>>>> org.apache.phoenix.trace.TraceMetricSource.<init>(TraceMetricSource.java:86)
>>>> at
>>>> org.apache.phoenix.trace.util.Tracing.addTraceMetricsSource(Tracing.java:269)
>>>> at
>>>> org.apache.phoenix.jdbc.PhoenixConnection.<clinit>(PhoenixConnection.java:149)
>>>> at
>>>> org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1924)
>>>> at
>>>> org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:1896)
>>>> at
>>>> org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:77)
>>>> at
>>>> org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:1896)
>>>> at
>>>> org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:180)
>>>> at
>>>> org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.connect(PhoenixEmbeddedDriver.java:132)
>>>> at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:151)
>>>> at java.sql.DriverManager.getConnection(DriverManager.java:664)
>>>> at java.sql.DriverManager.getConnection(DriverManager.java:270)
>>>> at phoenixTest.main(phoenixTest.java:16)
>>>>
>>>>
>>>> Seems more like a JAR file version mismatch issue.
>>>> Here are the JAR files that I am using:
>>>> Please refer to the screen shot
>>>>
>>>> I have followed all the guidelines for setting up Phoenix at:
>>>> https://phoenix.apache.org/installation.html
>>>>
>>>> My connection from Squirrel is working fine...but from Java Program
>>>> getting the errors.
>>>> --
>>>> With best Regards:
>>>> Ashutosh Sharma
>>>>
>>>
>>>
>>>
>>> --
>>> With best Regards:
>>> Ashutosh Sharma
>>>
>>
>>
>>
>> --
>> Thanks & Regards,
>> Anil Gupta
>>
>


-- 
Thanks & Regards,
Anil Gupta

Mime
View raw message