原生的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就能夠咯