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"]

 

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