Hi Ashutosh, Phoenix uses a 0 byte value as a separator between fields of a composite row key.
Regards Ravi On Sat, Sep 19, 2015 at 7:03 PM, Ashutosh Sharma < ashu.sharma.in...@gmail.com> wrote: > Another question. > at hbase shell. > hbase(main):002:0> scan 'WEB_STAT' > ROW COLUMN+CELL > > EUApple.com\x00Mac\x00\x80\x00\x01;\ column=STATS:ACTIVE_VISITOR, > timestamp=1442636717013, value=\x80\x00\x00" > > xF3\xA04\xC8 > > EUApple.com\x00Mac\x00\x80\x00\x01;\ column=USAGE:CORE, > timestamp=1442636717013, value=\x80\x00\x00\x00\x00\x00\x00# > > xF3\xA04\xC8 > > EUApple.com\x00Mac\x00\x80\x00\x01;\ column=USAGE:DB, > timestamp=1442636717013, value=\x80\x00\x00\x00\x00\x00\x00\x16 > > xF3\xA04\xC8 > > EUApple.com\x00Mac\x00\x80\x00\x01;\ column=USAGE:_0, > timestamp=1442636717013, value= > > xF3\xA04\xC8 > > EUApple.com\x00Store\x00\x80\x00\x01 column=STATS:ACTIVE_VISITOR, > timestamp=1442636717013, value=\x80\x00\x00\xAA > > ;\xFD\xEC\xEC\xC8 > > EUApple.com\x00Store\x00\x80\x00\x01 column=USAGE:CORE, > timestamp=1442636717013, value=\x80\x00\x00\x00\x00\x00\x01Y > > ;\xFD\xEC\xEC\xC8 > > EUApple.com\x00Store\x00\x80\x00\x01 column=USAGE:DB, > timestamp=1442636717013, value=\x80\x00\x00\x00\x00\x00\x02\xD2 > > what are these \x00 etc...are these the unwanted characters inserted due > to load by python scripts? > > On Sat, Sep 19, 2015 at 4:49 PM, Ashutosh Sharma < > ashu.sharma.in...@gmail.com> wrote: > >> Thanks a lot for your response and help. >> I have been struggling for almost 3 days with the HBase connectivity from >> Java client. Tried HBase definitive Guide examples also to connect to the >> HBase and the sample provided at Apache HBase. >> Here is the most simple stuff i tried to do: >> import java.io.IOException; >> import org.apache.hadoop.conf.Configuration; >> import org.apache.hadoop.hbase.HBaseConfiguration; >> import org.apache.hadoop.hbase.TableName; >> import org.apache.hadoop.hbase.client.Connection; >> import org.apache.hadoop.hbase.client.ConnectionFactory; >> import org.apache.hadoop.hbase.client.Get; >> import org.apache.hadoop.hbase.client.Table; >> import org.apache.hadoop.hbase.client.Put; >> import org.apache.hadoop.hbase.client.Result; >> import org.apache.hadoop.hbase.client.ResultScanner; >> import org.apache.hadoop.hbase.client.Scan; >> import org.apache.hadoop.hbase.util.Bytes; >> import org.apache.hadoop.hbase.protobuf.generated.*; >> >> >> public class FirstHBaseClient { >> public static void main(String[] args) throws IOException { >> >> Configuration config = HBaseConfiguration.create(); >> >> Connection connection = ConnectionFactory.createConnection(config); >> try { >> >> >> Table table = connection.getTable(TableName.valueOf("test")); >> try { >> >> Scan s = new Scan(); >> ResultScanner scanner = table.getScanner(s); >> try { >> >> for (Result rr = scanner.next(); rr != null; rr = >> scanner.next()) { >> // print out the row we found and the columns we were >> looking for >> System.out.println("Found row: " + rr); >> } >> >> } finally { >> >> scanner.close(); >> } >> >> } finally { >> if (table != null) table.close(); >> } >> } finally { >> connection.close(); >> } >> } >> } >> >> But never gone beyond the connectivity. Posted into StackExchange but not >> much luck. >> 15/09/17 19:37:18 INFO zookeeper.ZooKeeper: Client >> environment:user.dir=/root/workspace_hbase/HBaseIntro >> 15/09/17 19:37:18 INFO zookeeper.ZooKeeper: Initiating client connection, >> connectString=localhost:2181 sessionTimeout=90000 >> watcher=hconnection-0xea4a92b0x0, quorum=localhost:2181, baseZNode=/hbase >> 15/09/17 19:37:18 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/17 19:37:18 INFO zookeeper.ClientCnxn: Socket connection >> established to localhost/127.0.0.1:2181, initiating session >> 15/09/17 19:37:18 INFO zookeeper.ClientCnxn: Session establishment >> complete on server localhost/127.0.0.1:2181, sessionid = >> 0x14fde0f7576000e, negotiated timeout = 40000 >> >> Any idea - what i am doing wrong? I tried this with Apache Hbase running >> in my Ubutnu, Apache HBase running within Cloudera QuickStart VM and at >> work - M7(which is MapR layer on top of HBase)....no success. did a lot of >> googling and tried out everything. This SASL error is happening and let >> going beyond the handshake. >> >> *What I liked about Apache Phoenix is that - it's very simple to start >> with - which is a very important factor when getting into any new open >> source for me. And the examples and documentation are very high >> quality...above all user forum is good...So for me it's the way to go with >> Apache Phoenix.* >> >> *Thanks once again.* >> >> On Sat, Sep 19, 2015 at 1:08 PM, James Taylor <jamestay...@apache.org> >> wrote: >> >>> 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 >>>> >>> >>> >> >> >> -- >> With best Regards: >> Ashutosh Sharma >> > > > > -- > With best Regards: > Ashutosh Sharma >