默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的,所以需要建立表的映射
例如先在Hbase中创建表,并put数据
create 'ns1:chenjibiao','course','address'
下面开始用phoenix来映射Hbase中已经存在的表
注意1 yuwen,shuxue,english 在hbase中传入的是数字,但这里用的是varchar,否则没有数据
2 主键可以任意指定字符串,这里用的empid
3 要加column_encoded_bytes=0,不然Phoenix用自己的编码,列的值就无法查看。
4 比较坑,如果创建错了,重新映射的话,只能删除映射表,会把HBase的表也删 了。所以千万不要创建错......
5 创建表前,如果HBase不是在默认default命名空间,需要在Phoenix创建对应的Schema。
创建schema(就是hbase中的namespace),就是数据库
create schema IF NOT EXISTS "ns1";
*************使用schema****************
USE "ns1";
CREATE TABLE "chenjibiao" (
"empid" VARCHAR NOT NULL PRIMARY KEY,
"course"."yuwen" VARCHAR,
"course"."shuxue" VARCHAR,
"course"."english" VARCHAR,
"address"."shen" VARCHAR,
"address"."shi" VARCHAR
) column_encoded_bytes=0;
//phoenix查询测试
select * from "chenjibiao" order by "empid" asc ;
select * from "ns1"."chenjibiao";
UPSERT INTO "ns1"."chenjibiao" ("empid","yuwen","shuxue","english","shen","shi") values('person-101','50','60','70','浙江','杭州');
select * from "ns1"."chenjibiao" where "empid"='person-101';
//hbase查询
get 'ns1:chenjibiao','person-101'
scan 'ns1:chenjibiao'
phoenix 和Hbase中数据结构如下:
整合后,后期都通过phoenix操作,如果又用hbase api或hbase shell操作,数据会不一致