Phoenix 操作HBase基本命令

为什么使用Phoenix?

    Phoenix是HBase的一层包装,通过这层包装,我们可以像使用MySQL一样特别方便的操作HBase。此外,Phoenix还可以很方便的创建二级索引。

连接HBase

sqlline.py hadoop01,hadoop02,hadoop03:2181
    注意:主机名是zookeeper所在的节点。

显示所有表

!tables!table

    注意:此命令最后没有分号

建表

CREATE TABLE STUDENT(id integer PRIMARY KEY,name VARCHAR);
CREATE TABLE "grade"(id integer PRIMARY KEY,class VARCHAR);

    注意:

  • 必须指定主键,主键是HBase表中的rowkey。
  • 如果表名是小写,那么必须用双引号。

UPSERT INTO STUDENT VALUES(1001,'Tom');
UPSERT INTO "grade" VALUES(1,'grade1');

    注意:插入数据要用upsert。

删除数据

DELETE FROM STUDENT WHERE name='Jerry';

删除表

DROP TABLE STUDENT;

UPSERT INTO STUDENT VALUES(1001,'JoJo');

    注意: 要修改的rowkey要存在,否则就是插入数据。

SELECT * FROM STUDENT;

映射

    默认情况下,在HBase中创建的表,在Phoenix中是看不到的。如果想在Phoenix中操作HBase的表,我们就需要创建表的映射,映射方式有两种,视图映射和表映射。

视图映射

    视图映射不能操作表数据,只能进行查询。

-- 先在HBase创建测试表
create 'TEST','info'
put 'TEST','1001','info:name','zhangsan'
put 'TEST','1001','info:age','21'
-- 在Phoenix创建视图
CREATE VIEW TEST(
id VARCHAR PRIMARY KEY,
"info"."name" VARCHAR,
"info"."age" VARCHAR);

-- 查询信息
SELECT * FROM TEST;

表映射

  • 如果HBase中表不存在,直接在Phoenix中创建表即可自动创建映射。
  • 如果HBase中表存在,像创建视图映射那样创建表映射,把view改为table即可。
CREATE TABLE TEST(
id VARCHAR PRIMARY KEY,
"info"."name" VARCHAR,
"info"."age" VARCHAR) column_encoded_bytes=0;

    注意: 表映射一定要加上column_encoded_bytes=0。

二级索引

全局二级索引

    默认的索引格式,全局索引会在HBase创建新的索引表,索引表和数据表是分开存储的。适用于读多写少的场景

-- 创建单个字段的全局索引
CREATE INDEX stu_name_index ON STUDENT(name);
-- 创建携带其他字段的全局索引
CREATE INDEX stu_name_index ON STUDENT(name) INCLUDE(address);

本地二级索引

    本地索引索引和数据是在同一张表中存储。相对于全局索引来说,查询更慢,但是插入数据更快。

-- 创建本地索引
CREATE LOCAL INDEX stu_name_index ON STUDENT(name);

猜你喜欢

转载自blog.csdn.net/FlatTiger/article/details/114276455