数据仓库技术及应用(Hive索引)

1.概述

  • 将数据库表中的一列或者多列的值进行排序存储;
  • 用索引表记录字段的索引和偏移量,方便查询索引列时能快速定位到对应的行记录;
  • 索引类似于图书的目录,可以根据目录页码快速定位。

2.执行流程

(1)不使用索引时,hive执行流程

SELECT * FROM test_table WHERE key=‘xx’

 

(2)使用索引时,hive执行流程

3.使用场景 

  • 对于查询中经常被当做WHERE子句的判断条件的列;
  • 值不经常更新的列或者值是几个枚举值的列。
  • Hive3.0开始,索引将被移除,但提供了与索引类似的功能:

使用带有自动重写的物化视图 ;选择列式的文件格式(ORC),它们可以进行选择性扫描,甚至可以跳过整个文件块 。

4.Hive索引与分区、分桶的区别!

  • Hive索引与分区、分桶都是Hive的优化手段;
  • 索引时使用额外的存储空间换取查询时间;
  • 分区是将大的数据库按分区字段拆分成多个小数据库,对应HDFS上不同的文件夹;
  • 分桶是按照列的哈希函数进行分隔,对应于HDFS不同的文件。

5.索引操作 

(1)创建索引

#其中ROW FORMAT,STORED AS,STORED BY, LOCATION, PARTITION BY 等子句参照创建表的语法
#AS子句指定了索引处理器,Hive内置的索引处理器有CompactIndexHandler和BitMap
#WITH DEFERRED REBUILD延迟重建标识,指定该处,新索引将呈现空白状态,在任何时间用户都可  #以进行第一次索引创建或者使用ALTER INDEX对索引进行重建。
#IN TABLE 指定索引表的名称,可选值,如果不指定,Hive会默认生成索引表名。
CREATE INDEX index_name
ON TABLE base_table_name(col_name,…)
AS ‘index.handler.class.name’
[WITH DEFERRED REBUILD]
[IDXPROPERTIES(property_name=property_value,…)]
[IN TABLE index_table_name]
[PARTITION BY (col_name,…)]
[
	[ROW FORMAT …] STORED AS …
	| STORED BY…
]
[LOCATION hdfs_path]
[TBLPROPERTIES(…)]
[COMMENT “index comment”];

(2)重建索引

#使用ALTER INDEX命令可以重建索引,该语句主要用于重建使用“WITH DEFERRED REBUILD”子句创建的索引,或 #者重建已经创建的索引,如果制定了分区,则仅重新构建指定分区的索引
ALTER INDEX index_name ON table_name [PARTITION partition_spec] REBUILD;

(3)显示索引/删除索引

#索引创建后,可以使用SHOW INDEX命令查看索引
SHOW [FORMATTED] (INDEX|INDEXES) ON table_with_index [(FROM|IN)db_name];
#删除索引可以使用DROP INDEX语句
DROP INDEX [IF EXISTS] index_name ON table_name;

6.元数据表IDXS

Hive元数据表IDXS包含每个索引创建的实例信息,并且记录了与元数据表TBLS的关联信息。

元数据表字段说明实例数据
INDEX_ID索引ID3
CREATE_TIME创建时间1545118376
DEFERRED_REBUILD延迟重建标识
INDEX_HANDLER_CLASS索引处理类

org.apache.hadoop.hive.ql.index.

compact.CompactIndexHandler

INDEX_NAME索引名字order_item_product_id_index
INDEX_TBL_ID索引表的ID788
LAST_ACCESS_TIME最后访问时间1545118376
ORIG_TBL_ID原始表的ID782
SD_ID序列化配置信息791

7.元数据表INDEX_PARAMS 

INDEX_PARAMS表包含每个索引的属性信息

元数据表字段说明实例数据
INDEX_ID索引ID3
PARAM_KEY属性名base_timestamp
PARAM_VALUE属性值1545047366911

8.其他

(1)row group index(行组索引)

(2) Bloom Filter Index(布隆过滤索引)

在建表时候,通过表参数”orc.bloom.filter.columns”=”pcid”来指定为那些字段建立BloomFilter索引,这样,在生成数据的时候,会在每个stripe中,为该字段建立BloomFilter的数据结构,当查询条件中包含对该字段的=号过滤时候,先从BloomFilter中获取以下是否包含该值,如果不包含,则跳过该stripe。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/697612.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据挖掘丨轻松应用RapidMiner机器学习内置数据分析案例模板详解(上篇)

RapidMiner 案例模板 RapidMiner 机器学习平台提供了一个可视化的操作界面,允许用户通过拖放的方式构建数据分析流程。 RapidMiner目前内置了 13 种案例模板,这些模板是预定义的数据分析流程,可以帮助用户快速启动和执行常见的数据分析任务。…

linux:centos7升级libstdc++版本到3.4.26

下载,解压 wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip unzip libstdc.so_.6.0.26.zip 复制到【/usr/lib64】: cp libstdc.so.6.0.26 /usr/lib64创建软链接 cd /usr/lib64 sln libstdc.so.6.0.26 libstdc.so.6查看一…

876. 链表的中间结点-链表

876. 链表的中间结点 - 力扣(LeetCode) 快慢指针 class Solution { public:ListNode* middleNode(ListNode* head) {ListNode* slow head;ListNode* fast head;while(fast ! nullptr && fast->next ! nullptr){slow slow->next;fast …

备战 清华大学 上机编程考试-冲刺前50%,倒数第5天

T1:多项式求和 小K最近刚刚习得了一种非常酷炫的多项式求和技巧,可以对某几类特殊的多项式进行运算。非常不幸的是,小K发现老师在布置作业时抄错了数据,导致一道题并不能用刚学的方法来解,于是希望你能帮忙写一个程序…

数据结构(常见的排序算法)

1.插入排序 1.1直接插入排序 在[0 end]区间上有序,然后将(end1)的数据与前面有序的数据进行比较,将(end1)的数据插入,这样[0 end1]区间上就是有序的,然后再向后进行比较。 例如&a…

验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口

验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口 本文提供一个基于OCR和机器学习的验证码识别接口,能够识别较复杂的中文、英文验证码,在OCR的基础上针对验证码进行算法优化。本接口是收费的(最低0.5分1次调用,试…

单片机(STM32)与上位机传输浮点数

目录 单片机(STM32)与上位机传输数据的方法1. 传输整形数据2. 传输浮点数据3. 如何打包与解包 单片机(STM32)与上位机传输数据的方法 在进行单片机程序的开发时,常常需要与其他设备进行通信。一种情况是与其他电路板通信,比如STM32主机与STM32从机通信&…

CentOS7 MySQL5.7.35主从 不停机搭建 以及配置

如需安装MySQL,参照MySQL 5.7.35 安装教程 https://blog.csdn.net/CsethCRM/article/details/119418841一、主&从 环境信息准备 1.1.查看硬盘信息,确保磁盘够用(主&从) df -h1.2.查看内存信息 (主&从&am…

基尼系数计算过程

引言 在探讨经济公平性时,基尼系数是一个不可忽视的指标。它不仅反映了一个国家或地区内部的收入分配状况,还对政策制定和社会稳定有着深远的影响。 基尼系数的定义 基尼系数是由意大利统计学家科拉多基尼在1912年提出的,用来衡量一个国家…

【T3】畅捷通T3软件查询明细账等账簿,出现某些列串位置。

【问题描述】 查询畅捷通T3软件科目明细账的时候, 出现某些行的数据串位置, 摘要、金额、方向都没有在对应的列。 【解决方案】 根据跟踪发现,最终在客户档案上发现问题。 数据串位中对应的客户名称、简称中的对后面多了一个【tab】键的空格…

Nodejs 第七十七章(MQ高级)

MQ介绍和基本使用在75章介绍过了,不再重复 MQ高级用法-延时消息 什么是延时消息? Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费,该消息即延时消息 插件安装 R…

【深度学习】NLP,Transformer讲解,代码实战

文章目录 1. 前言2. Transformer结构训练过程1. 输入嵌入和位置编码2. 编码器层2.1 单头的注意力机制(便于理解)2.2 多头的注意力机制(Transformer真实使用的)2.3 残差连接和层归一化2.4 前馈神经网络(FFN)2.5 残差连接和层归一化2.6 总结 3. 解码器层 推…

Jenkins构建 Maven项目(微服务)并自动发布

前面讲了docker 安装Jenkins和gitlab代码管理工具,接下来我们讲一下Jenkins怎么构建 Maven项目。 1. 首先Jenkins配置下面3中工具类 首先是在本地安装三个jenkins自动配置相关的工具 1.1 JDK 由于我们使用docker来启动jenkins,其自带有jdk,…

摩托罗拉手机在中国以外的市场复兴,在欧洲和美国大幅增长

摩托罗拉曾是全球手机行业的领导者,不过自从被诺基亚击败后,它就辗转被卖了又卖,曾经辉煌的品牌堕落了,让人颇为可惜,不过如今摩托罗拉手机似乎看到了复兴的希望,在中国以外的市场都取得了快速增长。 市调机…

BC11 学生基本信息输入输出

BC11 学生基本信息输入输出 废话不多说上题目&#xff1a; 这道题表面上很简单&#xff0c;但是里面有很重要的点先给大家上正确的代码&#xff1a; #include<stdio.h> int main() {int stu 0;float c 0;float English 0;float math 0;scanf("%d;%f,%f,%f"…

Unity API学习之消息机制理论与应用

目录 消息机制 示例1&#xff1a;同一物体中不同组件之间发送消息 示例2&#xff1a;父与子对象之间的消息发送(BroadcastMassage) 父对象向子对象发送消息 ​编辑 子对象向父对象发送消息 消息机制 在Unity中&#xff0c;SendMessage 方法用于在游戏对象及其所有子对象上…

Zabbix6.0自动发现Linux服务器并添加主机

文章目录 一、整体流程二、操作过程 一、整体流程 Zabbix自动发现主机功能是Zabbix监控系统的一个重要功能&#xff0c;它能够自动发现并添加新的主机到监控系统中&#xff0c;从而减少人为繁琐的操作&#xff01; 步骤操作1️⃣ 第一步创建自动发现规则2️⃣ ​第二步创建自…

汇编语言作业(五)

目录 一、实验目的 二、实验内容 三、实验步骤以及结果 四、实验结果与分析 五、 实验总结 一、实验目的 1.熟悉掌握汇编语言的程序结构&#xff0c;能正确书写数据段、代码段等 2&#xff0c;利用debug功能&#xff0c;查看寄存器&#xff08;CS,IP,AX,DS..)及数据段的…

Python集合的基本概念和使用方法

目录 集合&#xff08;Set&#xff09; 基本概念 基本特性 基本操作 集合运算 成员测试 高级操作 集合推导式 总结 集合&#xff08;Set&#xff09; Python集合&#xff08;Set&#xff09;是Python语言中一个非常实用且强大的数据结构&#xff0c;它用于存储多个不…

Python实现删除Word文档中带有“指定内容”的段落文本(7)

前言 本文是该专栏的第7篇,后面会持续分享Python办公自动化干货知识,记得关注。 在处理word文档内容的时候,有时候我们需要一个干净整洁的文本内容。比如说,如下图所示的情况: 在处理上述word文档内容的时候,我们希望将文本底部的“下载链接”以及“附件信息”两个段落,…