phoenix操作HBase
phoenix操作HBase
一、Phoenix簡介
Phoenix,由saleforce.com 開源的一個專案,後又捐給了Apache。
它相當於一個Java 中介軟體,幫助開發者,像使用jdbc 訪問關係型資料庫一樣,訪問NoSql 資料庫HBase。
Apache Phoenix 與其他Hadoop 產品完全整合,如Spark,Hive,Pig,Flume 和MapReduce。
二、安裝pheonix
2.1 下載pheonix
http://phoenix.apache.org/download.html
注意:下載Phoenix 的時候,請注意對應的版本,其中4.14 版本可以執行在HBase0.98、1.1、1.2、1.3、1.4 上。
下載時也可以直接使用:
wget http://mirrors.shu.edu.cn/apache/phoenix/apache-phoenix-4.14.0-HBase-1.2/bin/apache-phoenix-4.14.0-HBase-1.2-bin.tar.gz
2.2 解壓pheonix
tar -zxvf apache-phoenix-4.14.0-HBase-1.2-bin.tar.gz
2.3 整合phoenix到hbase
檢視Phoenix下的所有的檔案,將phoenix-4.14.0-HBase-1.2-server.jar 拷貝到所有HBase節點(包括Hmaster以及HregionServer)的lib目錄下:
重啟HBase:
bin/stop-hbase.sh
bin/start-hbase.sh
2.4 使用phoenix SQL命令列
進入Phoenix 的安裝包,執行:
bin/sqlline.py bigdata1:2181
2.4.1 建立表
在Phoenix 終端下建立us_population 表:
>> CREATE TABLE IF NOT EXISTS us_population ( state CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINT CONSTRAINT my_pk PRIMARY KEY (state, city));
使用!tables 檢視建立的表:
>> !tables
2.4.2 編輯並匯入資料
在Phoenix 目錄下建立一個data 目錄,在data 目錄下建立:
vi us_population.csv
NY,New York,8143197
CA,Los Angeles,3844829
IL,Chicago,2842518
TX,Houston,2016582
PA,Philadelphia,1463281
AZ,Phoenix,1461575
TX,San Antonio,1256509
CA,San Diego,1255540
TX,Dallas,1213825
CA,San Jose,912332
執行bin/psql.py data/us_population.csv 匯入資料。
# 除了匯入資料外,還可以使用Phoenix 的語法插入資料:upsert into us_population values('NY','NewYork',8143197);
1.4.3 查詢資料
方式一:在data 目錄下建立us_population_queries.sql 檔案:
SELECT state as "State",count(city) as "City Count",sum(population) as "Population Sum"
FROM us_population
GROUP BY state
ORDER BY sum(population) DESC;
執行bin/psql.py data/us_population_queries.sql 檢索資料。
方式二:使用命令列終端
bin/sqlline.py bigdata1:2181
>> select * from us_populcation;
三、Squirrel-sql 連線Phoenix
3.1下載Squirrel-sql
http://www.squirrelsql.org/#installation
3.2設定Squirrel-sql 連線Phoenix
拷貝Phoenix Client jar【phoenix-4.14.0-HBase-1.2-client.jar】到Squirrel-sql 的lib 目錄;
設定Phoenix 連線的Driver 資訊,其中localhost 為zookeeper 所在的主機地址,填寫一個即可。
四、Phoenix 對映Hbase 表
進入Hbase 命令列終端bin/hbase shell
建立Hbase 表'phoenix':
-- 建立Hbase 表Phoenix,列族info
create 'phoenix','info'
-- 新增資料
put 'phoenix', 'row001','info:name','phoenix'
put 'phoenix', 'row002','info:name','hbase'
對映HBase 表的方式有兩種,一直是檢視對映,一種是表對映。
兩者的區別就是對HBase 的物理表有沒有影響;
刪除Phoenix 檢視對映不會對Hbase 的表造成影響;
刪除Phoenix 表對映會將Hbase 的表也刪除;
非必要情況下一般建立檢視對映。
4.1檢視對映
在Phoenix 下建立檢視對映HBase 表:
-- 建立檢視關聯對映Hbase 表
create view "phoenix" (
pk VARCHAR primary key,
"info"."name" VARCHAR
);
查詢建立好的Phoenix 檢視:
-- 刪除檢視後,在hbase shell 終端下檢視phoenix 依然存在
drop view "phoenix";
4.2 表對映
在Phoenix 下建立表對映HBase 表:
-- 建立表關聯對映Hbase 表,4.10 以後Phoenix 優化了列對映,COLUMN_ENCODED_BYTES=0 禁用列對映。
create table "phoenix" (
pk VARCHAR primary key,
"info"."name" VARCHAR
) COLUMN_ENCODED_BYTES = 0;
查詢資料:
做自己的太陽,成為別人的光!