原生的HBaseAPI使用起来真的比较麻烦,固然公司有架构师作一层封装,提供给开发人员使用应该还不错。若是么有架构师怎么办?Apache出的Phoenix就是干了架构师的工做,提供了jdbc接口对HBase表进行操做。java
1.下载sql
打开网址http://mirror.bit.edu.cn/apache/phoenix/,能够看到以下相似的页面。phoenix对hbase版本有严格的要求,所以在使用的时候要格外当心,若是公司的hbase升级后,使用phoenix编写的代码也须要更新jar,甚至修改代码(这个有点蛋疼,不知道会不会由于这一点致使其很难普遍被使用)apache
我本身的hbase是0.98,因此我下的第一个架构
2.上传解压maven
tar -xf apache-phoenix-4.13.1-HBase-0.98.tar.gzoop
3.复制以下两个jar包到hbase\lib目录下测试
hbase集群中的全部机器都要执行spa
cp apache-phoenix-4.13.1-HBase-0.98/phoenix-4.13.1-HBase-0.98-server.jar hbase-0.98.17-hadoop2/lib/phoenix-4.13.1-HBase-0.98-server.jar命令行
cp apache-phoenix-4.13.1-HBase-0.98/phoenix-4.13.1-HBase-0.98-client.jar hbase-0.98.17-hadoop2/lib/phoenix-4.13.1-HBase-0.98-client.jar设计
4.配置环境变量
####################### hbase ########################## export HBASE_HOME=/home/hadoop/proc/hbase-0.98.17-hadoop2 PATH=$PATH:$HBASE_HOME/bin export PATH
5.启动测试
启hadoop\zk\hbase
启动phoenix
在phoenix\bin目录下执行
sqlline.py hadoop01,hadoop02,hadoop03:2181
--hadoop01,hadoop02,hadoop03:2181是zk集群地址串
**建立表**
create table ph_test(id integer primary key,name varchar);
**查询表**
select * from ph_test;
建立的表字段虽然给的小写,但表的元信息其实默认是大写的,若是要想字段名是小写,能够在建立表的时候用双引号将列包含起来。
phoenix中建立的表实际上就是在hbase上建立了一张表,相似于hive中建立表在hdfs上建立了一个文件夹同样
phoenix表中的主键会成为hbase表的行键
若是不声明phoenix表中的普通列会成为hbase表中默认列族(名字叫0)中的普通列,也可使用语法指定列族的名字(通常没什么必要,几乎设计的表都是一个列族)
注:若是hbase中有一张存在的表,而phoenix中没有,则只须要建立一个表名同样,列数同样的表便可。
**插入数据**
upsert into ph_test(id) values(123);
upsert into ph_test(id,name) values(123,'Messi');
upsert表示插入和更新是同一个命令,由于id是行键,不容许不指定id的值
**删除数据**
delete from ph_test where id=124;
删除表
drop table ph_test;
1.新建一个maven工程
2.在pom文件中加入
<dependencies> <dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-core</artifactId> <version>4.13.0-HBase-0.98</version> </dependency> <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>C:\Users\jionsvolk\.m2\repository\jdk\tools\jdk.tools\1.8\jdk.tools-1.8.jar</systemPath> </dependency> </dependencies>
jdk.tools自动下载老是不成功,就我本身本机的jdk目录中把tools.jar复制到Maven本地仓库对应的目录下,文件名修改成jdk.tools-1.8.jar
3.写代码
package com.jv.phoenixm; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestPhoenix { public static void main(String[] args) throws Exception { Connection conn = DriverManager.getConnection("jdbc:phoenix:hadoop01,hadoop02,hadoop03:2181"); Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery("select * from ph_test"); while(rs.next()){ String v1 = rs.getString("ID"); System.out.println(v1); String v2 = rs.getString("NAME"); System.out.println(v2); } stat.close(); conn.close(); } }
执行输出结果
更多的增删改操做和jdbc同样,随便看看之前的jdbc的insert update delete就能够咯