【Phoenix】简介、架构、存储、入门、常用表操作、表的映射方式、配置二级索引

一、Phoenix简介

1、定义

构建在 HBase 之上的开源 SQL 层

可以使用标准的 JDBC API 去建表, 插入数据和查询 HBase 中的数据

避免使用 HBase 的客户端 API

位置:应用和 HBase 之间

2、特点

SQl 查询编译为 HBase 扫描

扫描并行执行

DML命令以及通过DDL命令创建和操作表

容易集成

3、架构

4、数据存储

将 HBase 的数据模型映射关系型世界

二、Phoenix快速入门

1、安装部署

配置环境变量:export PATH=$PATH:$PHOENIX_HOME/bin

启动Phoenix:/opt/module/phoenix » bin/sqlline.py hadoop201,hadoop202,hadoop203:2181

2、Phoenix表操作

显示所有表:!tables# 或者!table

创建表

 

 插入记录

upsert into us_population values('IL','Chicago',2842518);

查询记录

 删除记录

delete from us_population where state='NY';

删除表

drop table us_population;

退出命令行

! quit

3、Phoenix表映射

Phoenix 表和 HBase 表的关系

 使用Phoenix操作在HBASE中创建的表,需要进行映射,映射方式有两种: 1. 视图映射 2. 表映射

 

 视图映射:创建的视图是只读的, 所以只能用来查询

 

 表映射

create table "test1"(empid varchar primary key,"name"."firstname" varchar,"name"."lastname" varchar,"company"."name" varchar,"company"."address" varchar) column_encoded_bytes=0;

区别:使用create table创建的关联表,如果对表进行了修改,源数据也会改变

三、Phoenix创建HBASE二级索引

1、HBase 的二级索引

把 rowkey 称作一级索引,非 rowkey 字段进行数据检索和查询, 往往要通过 MapReduce/Spark 等分布式计算框架进行,硬件资源消耗和时间延迟都会比较高。

从 0.94 版本开始, HBase 开始支持二级索引,并且有多种支持方案

2、配置 HBase 支持 Phoenix 创建二级索引

修改Hregionerver 和Hmaster 节点的配置文件:hbase-site.xml

测试其他字段是否支持索引(全表扫描)

create index idx_user_1 on user_1(name)

查询的时候也必须只查询 name 字段.

3、Phoenix 创建索引

全局索引global index :多读少写,写数据的时候会消耗大量开销,索引表是分布在不同的数据节点上

读数据的时候 Phoenix 会选择索引表来降低查询消耗的时间。

CREATE INDEX my_index ON my_table (my_col)

局部索引:写操作频繁,索引数据和数据表的数据是存放在相同的服务器中

CREATE LOCAL INDEX my_index ON my_table (my_index)

全局索引, 也支持查询其他字段

删除索引
DROP INDEX my_index ON my_table

posted @ 2021-11-28 21:38  哥们要飞  阅读(361)  评论(0编辑  收藏  举报