Hi Ashutosh,
Yes, you can use HBase APIs to write to the HBase-backed Phoenix tables,
but you have to do it in the way Phoenix expects, using the Phoenix
serialization format. Also, you won't be able to leverage some Phoenix
features such as secondary indexing which rely on you going through the
Phoenix APIs so that Phoenix can maintain the index to be in sync with the
data table. The easiest way to write, of course, is to just use the Phoenix
APIs.
Thanks,
James

On Sat, Sep 19, 2015 at 12:21 PM, anil gupta <anilgupt...@gmail.com> wrote:

> 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.in...@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" <anilgupt...@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.in...@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.in...@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
>

Reply via email to