大数据之视图操作和二级索引
创始人
2024-06-02 08:22:02
0

文章目录

  • 前言
  • 一、Phoenix视图操作
    • (一)视图介绍
    • (二)语法说明
    • (三)注意点
    • (四)SQL语句参考
    • (五)尝试查询一条数据
  • 二、二级索引
    • (一)索引分类


前言

#博学谷IT学习技术支持#
本文接着介绍Phoenix视图操作以及基于Phoenix实现HBase的二级索引,按照惯例引入Phoenix的环境搭建步骤链接:Phoenix环境搭建

一、Phoenix视图操作

HBase中如果已经创建了 数据表,而且数据添加的方式都是以PUT方式原生API来添加的。此时,如果需要使用Phoenix来操作HBase中的表,此时我们不再需要使用Phoenix创建新的表,而是使用Phoenix中的视图,通过视图来建立与HBase表之间的映射,从而实现数据快速查询。

(一)视图介绍

可以在现有的HBase或Phoenix表上创建一个视图;需要注意的是表、列族和列名必须与现有元数据完全匹配,否则会出现异常。当创建视图后,就可以像操作Table一样使用SQL查询视图。

(二)语法说明

使用CREATE VIEW语法映射HBase中的表:

CREATE VIEW  “HBase中的表名”  ( k VARCHAR primary key, "v" UNSIGNED_LONG) default_column_family='a'

(三)注意点

  1. 映射到HBase的表时,视图的名字必须是:命名空间.表名
  2. 视图中的列映射到HBase的列蔟和列,列名必须是:列蔟.列名
  3. 视图中的类映射到HBase的RowKey时,指定某个列为primary key,自动映射RowKey

(四)SQL语句参考

create view if not exists “WATER_BILL" ("pk" varchar primary key, -- 指定ROWKEY映射到主键"C1". "ADDRESS" varchar,"C1". "LATEST_DATE" varchar,"C1". "NAME" varchar,"C1". "NUM_CURRENT"  UNSIGNED_DOUBLE,"C1". "NUM_PREVIOUS"  UNSIGNED_DOUBLE,"C1". "NUM_USAGE"  UNSIGNED_DOUBLE,"C1". "PAY_DATE" varchar,"C1". "RECORD_DATE" varchar,"C1". "SEX" varchar,"C1". "TOTAL_MONEY" UNSIGNED_DOUBLE);

(五)尝试查询一条数据

SQL语句:SELECT * FROM “WATER_BILL” LIMIT 1;
效果:
在这里插入图片描述

二、二级索引

通过Phoenix,可以非常方便快速地创建二级索引,Phoenix中的索引,其底层还是表现为HBase中的表结构,通过这些索引表可以加快数据查询速度

(一)索引分类

索引主要有四种类型:全局索引、本地索引、覆盖索引和函数索引,

  • 全局索引
    全局索引适用于读多写少的业务,绝大多数负载都发生在写入时,当构建了全局索引时,Phoenix会拦截写入(DELETE、UPSERT值和UPSERT SELECT)上的数据表更新,构建索引更新,同时更新所有相关的索引表,开销较大
    读取时,Phoenix将选择最快能够查询出数据的索引表,全局索引一般和覆盖索引搭配使用,读的效率很高,但写入效率会受影响。
  • 本地索引
    本地索引适合写操作频繁,读相对少的业务,当使用SQL查询数据时,Phoenix会自动选择是否使用该索引查询数据;
    本地索引中,索引数据和业务表数据存储在同一个服务器上,避免写入期间的网络开销,本地索引查询即使SELECT语句中引用了非索引中的字段,也会自动应用索引的,需要注意的是:创建表的时候如果指定了SALT_BUCKETS,是不支持本地索引的。
  • 覆盖索引
    Phoenix提供了覆盖索引,不需要在找到索引条目后返回到主表,可以将关心的数据捆绑在索引行中,从而节省了读取时间的开销。
  • 函数索引
    函数索引支持在列上创建索引,还可以基于任意表达式创建索引。当查询使用该表达式时,可以使用索引来检索结果,而不是数据表。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...