Phoenix映射Hbase中的表

一、說明

phoenix雖然可以使用sql對hbase進行很方便的查詢,但時在使用中會存在這樣的一個問題:經過hbase創建的表在phoenix中卻查不出來,phoenix默認卻只能顯示phoenix自己創建的表。如果要在phoenix中也查詢並操作hbase創建的表及加入數據就需要在phoenix中映射hbase的表;

二、創建測試表

1、在hbase創建一個測試表user_phoenix

hbase(main):023:0> create 'user_phoenix','info'
0 row(s) in 2.3760 seconds

=> Hbase::Table - user_phoenix
hbase(main):024:0>
=> Hbase::Table - user_phoenix
hbase(main):024:0> list
TABLE                                                                                                                                  
STU                                                                                                                                    
STUDENT                                                                                                                                
STUDENT01                                                                                                                              
STU_AGE                                                                                                                                
STU_AGE_02                                                                                                                             
STU_AGE_03                                                                                                                             
SYSTEM.CATALOG                                                                                                                         
SYSTEM.FUNCTION                                                                                                                        
SYSTEM.MUTEX                                                                                                                           
SYSTEM.SEQUENCE                                                                                                                        
SYSTEM.STATS                                                                                                                           
location_sure                                                                                                                          
location_sure0                                                                                                                         
student01                                                                                                                              
test                                                                                                                                   
test00                                                                                                                                 
test01                                                                                                                                 
test02                                                                                                                                 
test03                                                                                                                                 
userWalkInfo                                                                                                                           
user_phoenix                                                                                                                           
21 row(s) in 0.0070 seconds

=> ["STU", "STUDENT", "STUDENT01", "STU_AGE", "STU_AGE_02", "STU_AGE_03", "SYSTEM.CATALOG", "SYSTEM.FUNCTION", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "location_sure", "location_sure0", "student01", "test", "test00", "test01", "test02", "test03", "userWalkInfo", "user_phoenix"]

2、加一條測試數據

hbase(main):028:0> put 'user_phoenix' ,'rk001' ,'info:name','xiaoming'
0 row(s) in 0.1320 seconds

hbase(main):029:0> put 'user_phoenix' ,'rk001' ,'info:age','20'
0 row(s) in 0.0160 seconds

hbase(main):030:0> scan 'user_phoenix'
ROW                                COLUMN+CELL                                                                                         
 rk001                             column=info:age, timestamp=1592967133685, value=20                                                  
 rk001                             column=info:name, timestamp=1592967121856, value=xiaoming                                           
1 row(s) in 0.0170 seconds

hbase(main):031:0>

3、在pnoenix中查看是否存在這個表

結果顯示,卻不存在!

三、創建phoenix視圖映射Hbase表

0: jdbc:phoenix:master,slaves1,slaves2:2181> create view "user_phoenix"("rwk" varchar primary key,"info"."name" varchar,"info"."age" varchar);
No rows affected (6.477 seconds)
0: jdbc:phoenix:master,slaves1,slaves2:2181> !tables
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
| TABLE_CAT  | TABLE_SCHEM  |   TABLE_NAME   |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION  | |
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
|            |              | STU_ADD        | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE        | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE_02     | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE_03     | INDEX         |          |            |                            |                 | |
|            | SYSTEM       | CATALOG        | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | FUNCTION       | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | SEQUENCE       | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | STATS          | SYSTEM TABLE  |          |            |                            |                 | |
|            |              | STU            | TABLE         |          |            |                            |                 | |
|            |              | STUDENT        | TABLE         |          |            |                            |                 | |
|            |              | STUDENT01      | TABLE         |          |            |                            |                 | |
|            |              | student01      | TABLE         |          |            |                            |                 | |
|            |              | location_sure  | VIEW          |          |            |                            |                 | |
|            |              | user_phoenix   | VIEW          |          |            |                            |                 | |
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
0: jdbc:phoenix:master,slaves1,slaves2:2181> select * from "user_phoenix";
+--------+-----------+------+
|  rwk   |   name    | age  |
+--------+-----------+------+
| rk001  | xiaoming  | 20   |
+--------+-----------+------+
1 row selected (0.113 seconds)
0: jdbc:phoenix:master,slaves1,slaves2:2181> 

1、視圖名稱需要和hbase表名稱一致,要養成爲表名和列簇、列名加雙引號的習慣,因爲在phoenix中如果不加雙引號默認都轉化爲大寫,極容易造成和hbase不一致的情況;

2、映射hbase中已有的表爲phoenix的視圖,在這個模式下,通過phoenix可以以SQL的形式只讀hbase的表。刪除視圖後,hbase的表仍存在。視圖名稱需要和hbase表名稱一致。

3、由於是隻讀,在phoenix中刪除則報錯

0: jdbc:phoenix:master,slaves1,slaves2:2181> delete from "user_phoenix";
Error: ERROR 505 (42000): Table is read only. (state=42000,code=505)
org.apache.phoenix.schema.ReadOnlyTableException: ERROR 505 (42000): Table is read only.
	at org.apache.phoenix.compile.DeleteCompiler.compile(DeleteCompiler.java:397)
''''

4、刪除視圖後,hbase的表仍存在

0: jdbc:phoenix:master,slaves1,slaves2:2181> drop view "user_phoenix";
No rows affected (0.039 seconds)
0: jdbc:phoenix:master,slaves1,slaves2:2181> !tables
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
| TABLE_CAT  | TABLE_SCHEM  |   TABLE_NAME   |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION  | |
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
|            |              | STU_ADD        | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE        | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE_02     | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE_03     | INDEX         |          |            |                            |                 | |
|            | SYSTEM       | CATALOG        | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | FUNCTION       | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | SEQUENCE       | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | STATS          | SYSTEM TABLE  |          |            |                            |                 | |
|            |              | STU            | TABLE         |          |            |                            |                 | |
|            |              | STUDENT        | TABLE         |          |            |                            |                 | |
|            |              | STUDENT01      | TABLE         |          |            |                            |                 | |
|            |              | student01      | TABLE         |          |            |                            |                 | |
|            |              | location_sure  | VIEW          |          |            |                            |                 | |
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
hbase(main):031:0> list
TABLE                                                                                                                                  
STU                                                                                                                                    
STUDENT                                                                                                                                
STUDENT01                                                                                                                              
STU_AGE                                                                                                                                
STU_AGE_02                                                                                                                             
STU_AGE_03                                                                                                                             
SYSTEM.CATALOG                                                                                                                         
SYSTEM.FUNCTION                                                                                                                        
SYSTEM.MUTEX                                                                                                                           
SYSTEM.SEQUENCE                                                                                                                        
SYSTEM.STATS                                                                                                                           
location_sure                                                                                                                          
location_sure0                                                                                                                         
student01                                                                                                                              
test                                                                                                                                   
test00                                                                                                                                 
test01                                                                                                                                 
test02                                                                                                                                 
test03                                                                                                                                 
userWalkInfo                                                                                                                           
user_phoenix                                                                                                                           
21 row(s) in 0.0170 seconds

=> ["STU", "STUDENT", "STUDENT01", "STU_AGE", "STU_AGE_02", "STU_AGE_03", "SYSTEM.CATALOG", "SYSTEM.FUNCTION", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "location_sure", "location_sure0", "student01", "test", "test00", "test01", "test02", "test03", "userWalkInfo", "user_phoenix"]

四、創建phoenix表映射Hbase已有的表

映射hbase中已有的表爲phoenix的表,在這個模式下,通過phoenix可以以SQL的形式對hbase表進行DDL和DML的操作,刪除phoenix表後,hbase裏對應的表也會被刪除。

hbase:

hbase(main):032:0> create 'user_phoenix01','info'
0 row(s) in 2.2760 seconds

=> Hbase::Table - user_phoenix01
hbase(main):036:0> put 'user_phoenix01' ,'rk001' ,'info:name','xiaoming'
0 row(s) in 0.0160 seconds

hbase(main):037:0> put 'user_phoenix01' ,'rk001' ,'info:age','25'
0 row(s) in 0.0060 seconds

hbase(main):038:0> scan 'user_phoenix01'
ROW                                COLUMN+CELL                                                                                         
 rk001                             column=info:age, timestamp=1592969230094, value=25                                                  
 rk001                             column=info:name, timestamp=1592969188995, value=xiaoming                                           
1 row(s) in 0.0170 seconds

phoenix: 

0: jdbc:phoenix:master,slaves1,slaves2:2181> create table "user_phoenix01"("rk" varchar primary key,"info"."name" varchar,"info"."age" varchar);
1 row affected (6.534 seconds)
0: jdbc:phoenix:master,slaves1,slaves2:2181> !tables
+------------+--------------+-----------------+---------------+----------+------------+----------------------------+------------------+
| TABLE_CAT  | TABLE_SCHEM  |   TABLE_NAME    |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION   |
+------------+--------------+-----------------+---------------+----------+------------+----------------------------+------------------+
|            |              | STU_ADD         | INDEX         |          |            |                            |                  |
|            |              | STU_AGE         | INDEX         |          |            |                            |                  |
|            |              | STU_AGE_02      | INDEX         |          |            |                            |                  |
|            |              | STU_AGE_03      | INDEX         |          |            |                            |                  |
|            | SYSTEM       | CATALOG         | SYSTEM TABLE  |          |            |                            |                  |
|            | SYSTEM       | FUNCTION        | SYSTEM TABLE  |          |            |                            |                  |
|            | SYSTEM       | SEQUENCE        | SYSTEM TABLE  |          |            |                            |                  |
|            | SYSTEM       | STATS           | SYSTEM TABLE  |          |            |                            |                  |
|            |              | STU             | TABLE         |          |            |                            |                  |
|            |              | STUDENT         | TABLE         |          |            |                            |                  |
|            |              | STUDENT01       | TABLE         |          |            |                            |                  |
|            |              | student01       | TABLE         |          |            |                            |                  |
|            |              | user_phoenix    | TABLE         |          |            |                            |                  |
|            |              | user_phoenix01  | TABLE         |          |            |                            |                  |
|            |              | location_sure   | VIEW          |          |            |                            |                  |
+------------+--------------+-----------------+---------------+----------+------------+----------------------------+------------------+
0: jdbc:phoenix:master,slaves1,slaves2:2181> select * from "user_phoenix01";
+--------+-----------+------+
|   rk   |   name    | age  |
+--------+-----------+------+
| rk001  | xiaoming  | 25   |
+--------+-----------+------+
1 row selected (0.035 seconds)

1、phoenix中刪除數據

phoenix:

0: jdbc:phoenix:master,slaves1,slaves2:2181> delete from "user_phoenix01";
1 row affected (0.031 seconds)
0: jdbc:phoenix:master,slaves1,slaves2:2181> select * from "user_phoenix01";
+-----+-------+------+
| rk  | name  | age  |
+-----+-------+------+
+-----+-------+------+
No rows selected (0.038 seconds)

hbase:

hbase(main):039:0> scan 'user_phoenix01'
ROW                                COLUMN+CELL                                                                                         
0 row(s) in 0.0250 seconds

2、phoenix中刪除表

phoenix

0: jdbc:phoenix:master,slaves1,slaves2:2181> drop table "user_phoenix01"
. . . . . . . . . . . . . . . . . . . . . .> ;
No rows affected (4.093 seconds)
0: jdbc:phoenix:master,slaves1,slaves2:2181> !tables
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
| TABLE_CAT  | TABLE_SCHEM  |   TABLE_NAME   |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION  | |
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
|            |              | STU_ADD        | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE        | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE_02     | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE_03     | INDEX         |          |            |                            |                 | |
|            | SYSTEM       | CATALOG        | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | FUNCTION       | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | SEQUENCE       | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | STATS          | SYSTEM TABLE  |          |            |                            |                 | |
|            |              | STU            | TABLE         |          |            |                            |                 | |
|            |              | STUDENT        | TABLE         |          |            |                            |                 | |
|            |              | STUDENT01      | TABLE         |          |            |                            |                 | |
|            |              | student01      | TABLE         |          |            |                            |                 | |
|            |              | user_phoenix   | TABLE         |          |            |                            |                 | |
|            |              | location_sure  | VIEW          |          |            |                            |                 | |
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
0: jdbc:phoenix:master,slaves1,slaves2:2181> 

hbase:

hbase(main):040:0> list
TABLE                                                                                                                                  
STU                                                                                                                                    
STUDENT                                                                                                                                
STUDENT01                                                                                                                              
STU_AGE                                                                                                                                
STU_AGE_02                                                                                                                             
STU_AGE_03                                                                                                                             
SYSTEM.CATALOG                                                                                                                         
SYSTEM.FUNCTION                                                                                                                        
SYSTEM.MUTEX                                                                                                                           
SYSTEM.SEQUENCE                                                                                                                        
SYSTEM.STATS                                                                                                                           
location_sure                                                                                                                          
location_sure0                                                                                                                         
student01                                                                                                                              
test                                                                                                                                   
test00                                                                                                                                 
test01                                                                                                                                 
test02                                                                                                                                 
test03                                                                                                                                 
userWalkInfo                                                                                                                           
user_phoenix                                                                                                                           
21 row(s) in 0.0090 seconds

=> ["STU", "STUDENT", "STUDENT01", "STU_AGE", "STU_AGE_02", "STU_AGE_03", "SYSTEM.CATALOG", "SYSTEM.FUNCTION", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "location_sure", "location_sure0", "student01", "test", "test00", "test01", "test02", "test03", "userWalkInfo", "user_phoenix"]

五、創建phoenix表

創建在hbase中不存在的phoenix的表,會自動在hbase中創建一個同名hbase表,此時可以對該hbase表做DML和DDL操作,且刪除phoenix表之後,hbase的表也會被刪除。

phoenix:

0: jdbc:phoenix:master,slaves1,slaves2:2181> create table "user_phoenix03"("rk" varchar primary key,"info"."name" varchar,"info"."age" varchar);
No rows affected (1.368 seconds)
0: jdbc:phoenix:master,slaves1,slaves2:2181> !tables
+------------+--------------+-----------------+---------------+----------+------------+----------------------------+------------------+
| TABLE_CAT  | TABLE_SCHEM  |   TABLE_NAME    |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION   |
+------------+--------------+-----------------+---------------+----------+------------+----------------------------+------------------+
|            |              | STU_ADD         | INDEX         |          |            |                            |                  |
|            |              | STU_AGE         | INDEX         |          |            |                            |                  |
|            |              | STU_AGE_02      | INDEX         |          |            |                            |                  |
|            |              | STU_AGE_03      | INDEX         |          |            |                            |                  |
|            | SYSTEM       | CATALOG         | SYSTEM TABLE  |          |            |                            |                  |
|            | SYSTEM       | FUNCTION        | SYSTEM TABLE  |          |            |                            |                  |
|            | SYSTEM       | SEQUENCE        | SYSTEM TABLE  |          |            |                            |                  |
|            | SYSTEM       | STATS           | SYSTEM TABLE  |          |            |                            |                  |
|            |              | STU             | TABLE         |          |            |                            |                  |
|            |              | STUDENT         | TABLE         |          |            |                            |                  |
|            |              | STUDENT01       | TABLE         |          |            |                            |                  |
|            |              | student01       | TABLE         |          |            |                            |                  |
|            |              | user_phoenix    | TABLE         |          |            |                            |                  |
|            |              | user_phoenix03  | TABLE         |          |            |                            |                  |
|            |              | location_sure   | VIEW          |          |            |                            |                  |
+------------+--------------+-----------------+---------------+----------+------------+----------------------------+------------------+
0: jdbc:phoenix:master,slaves1,slaves2:2181> 

Hbase:

hbase(main):048:0> list
TABLE                                                                                                                                  
STU                                                                                                                                    
STUDENT                                                                                                                                
STUDENT01                                                                                                                              
STU_AGE                                                                                                                                
STU_AGE_02                                                                                                                             
STU_AGE_03                                                                                                                             
SYSTEM.CATALOG                                                                                                                         
SYSTEM.FUNCTION                                                                                                                        
SYSTEM.MUTEX                                                                                                                           
SYSTEM.SEQUENCE                                                                                                                        
SYSTEM.STATS                                                                                                                           
location_sure                                                                                                                          
location_sure0                                                                                                                         
student01                                                                                                                              
test                                                                                                                                   
test00                                                                                                                                 
test01                                                                                                                                 
test02                                                                                                                                 
test03                                                                                                                                 
userWalkInfo                                                                                                                           
user_phoenix                                                                                                                           
user_phoenix03                                                                                                                         
22 row(s) in 0.0180 seconds

=> ["STU", "STUDENT", "STUDENT01", "STU_AGE", "STU_AGE_02", "STU_AGE_03", "SYSTEM.CATALOG", "SYSTEM.FUNCTION", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "location_sure", "location_sure0", "student01", "test", "test00", "test01", "test02", "test03", "userWalkInfo", "user_phoenix", "user_phoenix03"]

1、phoenix刪除此表

0: jdbc:phoenix:master,slaves1,slaves2:2181> drop table "user_phoenix03"
. . . . . . . . . . . . . . . . . . . . . .> ;
No rows affected (3.618 seconds)
0: jdbc:phoenix:master,slaves1,slaves2:2181> !tables
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
| TABLE_CAT  | TABLE_SCHEM  |   TABLE_NAME   |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION  | |
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
|            |              | STU_ADD        | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE        | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE_02     | INDEX         |          |            |                            |                 | |
|            |              | STU_AGE_03     | INDEX         |          |            |                            |                 | |
|            | SYSTEM       | CATALOG        | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | FUNCTION       | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | SEQUENCE       | SYSTEM TABLE  |          |            |                            |                 | |
|            | SYSTEM       | STATS          | SYSTEM TABLE  |          |            |                            |                 | |
|            |              | STU            | TABLE         |          |            |                            |                 | |
|            |              | STUDENT        | TABLE         |          |            |                            |                 | |
|            |              | STUDENT01      | TABLE         |          |            |                            |                 | |
|            |              | student01      | TABLE         |          |            |                            |                 | |
|            |              | user_phoenix   | TABLE         |          |            |                            |                 | |
|            |              | location_sure  | VIEW          |          |            |                            |                 | |
+------------+--------------+----------------+---------------+----------+------------+----------------------------+-----------------+-+
0: jdbc:phoenix:master,slaves1,slaves2:2181>

hbase:

hbase(main):049:0> list
TABLE                                                                                                                                  
STU                                                                                                                                    
STUDENT                                                                                                                                
STUDENT01                                                                                                                              
STU_AGE                                                                                                                                
STU_AGE_02                                                                                                                             
STU_AGE_03                                                                                                                             
SYSTEM.CATALOG                                                                                                                         
SYSTEM.FUNCTION                                                                                                                        
SYSTEM.MUTEX                                                                                                                           
SYSTEM.SEQUENCE                                                                                                                        
SYSTEM.STATS                                                                                                                           
location_sure                                                                                                                          
location_sure0                                                                                                                         
student01                                                                                                                              
test                                                                                                                                   
test00                                                                                                                                 
test01                                                                                                                                 
test02                                                                                                                                 
test03                                                                                                                                 
userWalkInfo                                                                                                                           
user_phoenix                                                                                                                           
21 row(s) in 0.0060 seconds

=> ["STU", "STUDENT", "STUDENT01", "STU_AGE", "STU_AGE_02", "STU_AGE_03", "SYSTEM.CATALOG", "SYSTEM.FUNCTION", "SYSTEM.MUTEX", "SYSTEM.SEQUENCE", "SYSTEM.STATS", "location_sure", "location_sure0", "student01", "test", "test00", "test01", "test02", "test03", "userWalkInfo", "user_phoenix"]

 

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