- 在HBase已经存在表,需要使用 Phoenix 建立与 HBase的映射,从而以SQL的方式,通过Phoenix 操作HBase。
- 案例:
1、在HBase中,建立employee的映射表—数据准备
create 'employee','company','family'
put 'employee','row1','company:name','ted'
put 'employee','row1','company:position','worker'
put 'employee','row1','family:tel','13600912345'
put 'employee','row2','company:name','michael'
put 'employee','row2','company:position','manager'
put 'employee','row2','family:tel','1894225698'
scan 'employee'
2、建立映射视图
- 在HBase中已有表,在Phoenix中建立映射,必须要使用 create view
- Phoenix是
大小写敏感
的 - 所有命令都是大写
- 如果表名不用双引号括起来,无论输入大写或小写,建立的表名都是大写
- 如果要建立同时包含大写和小写的表名和字段名,用双引号把表名或者字段名括起来
- 在Phoenix中打开命令行
CREATE VIEW IF NOT EXISTS "employee" (
"rowid" VARCHAR NOT NULL PRIMARY KEY,
"company"."name" VARCHAR,
"company"."position" VARCHAR,
"family"."tel" VARCHAR
);
-
这个语句有几个注意点
- IF NOT EXISTS可以保证如果已经有建立过这个表,配置不会被覆盖
- 作为rowkey的字段用 PRIMARY KEY标定
- 列簇用 columnFamily.columnName 来表示
- 建立好后,查询一下数据
3、查询所有映射表数据
0: jdbc:phoenix:node01> SELECT * FROM "employee";
+-------+----------+-----------+--------------+-------+
| no | name | position | tel | age |
+-------+----------+-----------+--------------+-------+
| row1 | ted | worker | 13600912345 | null |
| row2 | michael | manager | 1894225698 | null |
+-------+----------+-----------+--------------+-------+
4、查询职位为 ‘worker’ 的所有员工数据
select * from "employee" where "position" = 'worker'