hive 索引

一、Hive的索引

索引是标准的数据库技术,hive 0.7版本之后支持索引。Hive提供有限的索引功能,这不像传统的关系型数据库那样有“键(key)”的概念,用户可以在某些列上创建索引来加速某些操作,给一个表创建的索引数据被保存在另外的表中。 Hive的索引功能现在还相对较晚,提供的选项还较少。但是,索引被设计为可使用内置的可插拔的java代码来定制,用户可以扩展这个功能来满足自己的需求。 当然不是说有的查询都会受惠于Hive索引。用户可以使用EXPLAIN语法来分析HiveQL语句是否可以使用索引来提升用户查询的性能。像RDBMS中的索引一样,需要评估索引创建的是否合理,毕竟,索引需要更多的磁盘空间,并且创建维护索引也会有一定的代价。
用户必须要权衡从索引得到的好处和代价。

索引的建立

先创建hive表

hive> create table user( id int, namestring)

> ROW FORMAT DELIMITED

> FIELDS TERMINATED BY ‘\t‘

> STORED AS TEXTFILE;

导入数据

hive> load data local inpath ‘/usr/local/trl/row.txt‘

> overwrite into table user;

Select*from use---------------------------à耗时10秒

对user建立索引

hive> create index user_index on tableuser(id)

> as ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler‘

> with deferred rebuild

> IN TABLE user_index_table;

hive> alter index user_index on userrebuild;

hive> select * from user_index_table;

耗时9s这和没有创建索引的效果差不多

1. order by会对查询结果集做一次全局的排序,也就是说所有的数据都传给一个reduce来处理对于大数据集来说,这个过程可能很慢

2. sort by只会在每一个reduce中进行排序,这样只保证每个reduce的输出数据是有序的(并非全局排序),这样可以提高后面全局排序的效率。

3.union all 用于多表合并的场景,要求各表select出的字段类型必须完全匹配

用于多表不同字段的结果表进行合并操作

hive不支持顶层union,只能union封装在子查询中,而且必须有别名

4.hive索引

索引key冗余存储,提供基于key的数据视图

存储设计优化查询和检索性能

对某些查询减少IO

时间: 2024-08-10 23:50:05

hive 索引的相关文章

HIVE—索引、分区和分桶的区别

一.索引 简介 Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键. Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要读取的数据块的数量. 为什么要创建索引? Hive的索引目的是提高Hive表指定列的查询速度.没有索引时,类似'WHERE tab1.col1 = 10' 的查询,Hive会加载整张表或分区,然后处理所有的rows,但是如果在字段col1上面存在索引时,那么只会加载和处理文件的一部分

Hive索引

1.        Hive索引概述 Hive的索引目的是提高Hive表指定列的查询速度. 没有索引时,类似'WHERE tab1.col1 = 10' 的查询,Hive会加载整张表或分区,然后处理所有的rows,但是如果在字段col1上面存在索引时,那么只会加载和处理文件的一部分. 与其他传统数据库一样,增加索引在提升查询速度时,会消耗额外资源去创建索引和需要更多的磁盘空间存储索引. Hive 0.7.0版本中,加入了索引.Hive 0.8.0版本中增加了bitmap索引. 2.       

hive里的索引

Hive支持索引,但是Hive的索引与关系型数据库中的索引并不相同,比如,Hive不支持主键或者外键. Hive索引可以建立在表中的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要读取的数据块的数量. 在可以预见到分区数据非常庞大的情况下,索引常常是优于分区的. 博主我推荐各位博文们通过查阅Hive文档对Hive表的索引进行更深入的了解. 需要时刻记住的是,Hive并不像事物数据库那样针对个别的行来执行查询.更新.删除等操作.这些操作依赖高效的索引来实现高性能. Hive是一

第53课:Hive 第一课:Hive的价值、Hive的架构设计简介

一. Hive的历史价值 1, 大数据因Hadoop而知名,而Hadoop又因Hive而实用.Hive是Hadoop上的Killer Application,Hive是Hadoop上的数据仓库,同时Hive兼具有数据仓库中的存储和查询引擎.而Spark SQL是一个更加出色和高级的查询引擎,并不提供存储功能.所以Spark SQL无法取代Hive,在现在企业级应用中Spark SQL+Hive成为了业界使用的大数据最为高效和流行的趋势. 2,Hive是Facebook推出的,主要是为了让不懂ja

Hive基础(1)---Hive是什么

1. Hive是什么 Hive是基于Hadoop的数据仓库解决方案.由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性. 这是来自官方的解释. 简单来说,Hive就是在Hadoop上架了一层SQL接口,可以将SQL翻译成MapReduce去Hadoop上执行,这样就使得数据开发和分析人员很方便的使用SQL来完成海量数据的统计和分析,而不必使用编程语言开发MapReduce那么麻烦. 先上一张经典的Hive架构图: Hive架构图 如

Hive学习之路 (三)Hive元数据信息对应MySQL数据库表

概述 Hive 的元数据信息通常存储在关系型数据库中,常用MySQL数据库作为元数据库管理.上一篇hive的安装也是将元数据信息存放在MySQL数据库中. Hive的元数据信息在MySQL数据中有57张表 一.存储Hive版本的元数据表(VERSION) VERSION   -- 查询版本信息 该表比较简单,但很重要. VER_ID SCHEMA_VERSION VERSION_COMMENT ID主键 Hive版本 版本说明 1 0.13.0 Set by MetaStore 如果该表出现问题

Hive 官方手册翻译 -- Hive DDL(数据定义语言)

Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 翻译:Google Google翻译,金山软件 金山词霸 校对:南大通用 范振勇 (2018.9.26) 一.概述 这里是HiveQL DDL语句的文档,其中包括: CREATE 数据库/SCHEMA,表

老钱说大数据(1)----大数据OLAP与OLTP分析

1. 首先,咱们先不拿大数据说事,先分析一下OLAP及OLTP. OLAP: 联机分析处理(OLAP)系统是数据仓库系统最主要的应用,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持. OLTP: 联机事务处理(OLTP,On-line Transaction Processing)应用,它所存储的数据被称为操作数据或者业务数据. 所以从定位上来讲,OLAP的定位是用来做数据分析(类BI),OLTP适合做一些事务的类的数据管理如查询如订单数据的产生. 举个通俗的例子,一个小

hive创建索引

索引是hive0.7之后才有的功能,创建索引需要评估其合理性,因为创建索引也是要磁盘空间,维护起来也是需要代价的 hive> create index user_index on table user(id) > as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' > with deferred rebuild > IN TABLE user_index_table; hive> alter ind