Phoenix快速入門系列(2) | 一文教你如何使用Phoenix

  大家好,我是不溫卜火,是一名計算機學院大數據專業大二的學生,暱稱來源於成語—不溫不火,本意是希望自己性情溫和。作爲一名互聯網行業的小白,博主寫博客一方面是爲了記錄自己的學習過程,另一方面是總結自己所犯的錯誤希望能夠幫助到很多和自己一樣處於起步階段的萌新。但由於水平有限,博客中難免會有一些錯誤出現,有紕漏之處懇請各位大佬不吝賜教!暫時只有csdn這一個平臺,博客主頁:https://buwenbuhuo.blog.csdn.net/

  此篇爲大家帶來的是一文教你如何使用Phoenix。


20

一. Phoenix 表操作

  • 1. 顯示所有表
!tables

# 或者
!table

1

  • 2 創建表
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));

說明:

  1. char類型必須添加長度限制
  2. varchar 可以不用長度限制
  3. 主鍵映射到 HBase 中會成爲 Rowkey. 如果有多個主鍵(聯合主鍵), 會把多個主鍵的值拼成 rowkey
  4. 在 Phoenix 中, 默認會把表名,字段名等自動轉換成大寫. 如果要使用消息, 需要把他們用雙引號括起來.

2

  • 3 插入記錄
// Phoenix內不支持inset插入,要不然會出錯
insert into us_population values('NY','NewYork',8143197);

upsert into us_population values('NY','NewYork',8143197);
upsert into us_population values('CA','Los Angeles',3844829);
upsert into us_population values('IL','Chicago',2842518);

3
4

說明: upset可以看成是update和insert的結合體.

  • 4. 查詢記錄
select * from US_POPULATION;

select * from us_population where state='NY';

5

  • 5. 刪除記錄
delete from us_population where state='NY';

6

  • 6. 刪除表
drop table us_population;
  • 7. 退出命令行
! quit

二. Phoenix 表映射

1. Phoenix 表和 HBase 表的關係

  默認情況下, 直接在 HBase 中創建的表通過 Phoenix 是查不到的.

7
8

如果要在 Phoenix 中操作直接在 HBase 中創建的表,則需要在 Phoenix 中進行表的映射。
映射方式有兩種:

  1. 視圖映射
  2. 表映射

2 準備工作

  在 HBase 中創建表: test, 兩個列簇name、company.
9

  • 1. 啓動 HBase shell
// 另開一臺窗口啓動Hbase
[bigdata@hadoop002 hbase]$ bin/hbase shell
  • 2. 創建表: test
create 'test', 'name', 'company'

  在 Phoenix 中是看不到這個表的:
10

3. 視圖映射

  Phoenix 創建的視圖是隻讀的, 所以只能用來查詢, 無法通過視圖對數據進行修改等操作.

// 1. 創建
create view "test"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar);

// 2. 查找
select * from "test";

11

4. 表映射

  使用 Phoenix創建對 HBase 的表映射,有兩種方法:

  1. 當 HBase 中已經存在表時,可以以類似創建視圖的方式創建關聯表,只需要將create view 改爲 create table 即可。

在 HBase 中創建表:

create 'test1', 'name', 'company'

在 Phoenix 中創建關聯表:

create table "test1"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar) column_encoded_bytes=0;

說明: 添加這個參數之後, 在 HBase 中添加的數據在 Phoenix 中也可以查詢到. 否則 HBase 中添加的數據在Phoenix 中查詢不到.

  1. 當 HBase 中不存在表時,可以直接使用 create table 指令創建需要的表,系統將會自動在 Phoenix 和 HBase 中創建 person_infomation 的表,並會根據指令內的參數對錶結構進行初始化。

5. 視圖映射和表映射的對比與總結

  相比於直接創建映射表,視圖的查詢效率會低, 原因是:創建映射表的時候,Phoenix 會在表中創建一些空的鍵值對,這些空鍵值對的存在可以用來提高查詢效率。
  使用create table創建的關聯表,如果對錶進行了修改,源數據也會改變,同時如果關聯表被刪除,源表也會被刪除。但是視圖就不會,如果刪除視圖,源數據不會發生改變。

  本次的分享就到這裏了,


11

  好書不厭讀百回,熟讀課思子自知。而我想要成爲全場最靚的仔,就必須堅持通過學習來獲取更多知識,用知識改變命運,用博客見證成長,用行動證明我在努力。
  如果我的博客對你有幫助、如果你喜歡我的博客內容,請“點贊” “評論”“收藏”一鍵三連哦!聽說點讚的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我博客看看。
  碼字不易,大家的支持就是我堅持下去的動力。點贊後不要忘了關注我哦!

13
12

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章