1. 程式人生 > 其它 >phoenix操作HBase

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;

查詢資料:

做自己的太陽,成為別人的光!