文章来自:http://lxw1234.com/archives/2015/05/207.htm
Hive是支持索引的,但基本没用过,只做了下试验。
为什么大家都不用,肯定有它的弊端。
Hive索引机制:
在指定列上建立索引,会产生一张索引表(Hive的一张物理表),里面的字段包括,索引列的值、该值对应的HDFS文件路径、该值在文件中的偏移量;
在执行索引字段查询时候,首先额外生成一个MR job,根据对索引列的过滤条件,从索引表中过滤出索引列的值对应的hdfs文件路径及偏移量,输出到hdfs上的一个文件中,然后根据这些文件中的 hdfs路径和偏移量,筛选原始input文件,生成新的split,作为整个job的split,这样就达到不用全表扫描的目的。
Hive索引建立过程:
-
创建索引:
create index lxw1234_index on table lxw1234(key) as 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' with deferred rebuild;
之后在Hive中会创建一张索引表,也是物理表:
其中,索引表中key字段,就是原表中key字段的值,_bucketname 字段,代表数据文件对应的HDFS文件路径,_offsets 代表该key值在文件中的偏移量,有可能有多个偏移量,因此,该字段类型为数组。
其实,索引表就相当于一个在原表索引列上的一个汇总表。
-
生成索引数据
alter index lxw1234_index on lxw1234 rebuild;
用一个MR任务,以table lxw1234的数据作为input,将索引字段key中的每一个值及其对应的HDFS文件和偏移量输出到索引表中。
-
自动使用索引
-
SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; SET hive.optimize.index.filter=true; SET hive.optimize.index.filter.compact.minsize=0;
查询时候索引如何起效:
select * from lxw1234 where key = '13400000144_1387531071_460606566970889';
剩下的流程图不贴了,到原文看吧: http://lxw1234.com/archives/2015/05/207.htm
相关推荐
3. **SQL优化技巧**:熟悉 Hive 的执行流程可以帮助编写更高效的 SQL 语句,如合理使用索引、优化 Join 语句等。 4. **定制需求**:针对特定的需求,可能需要对 Hive 进行扩展或定制,这需要深入了解其实现原理。 #...
6. **使用索引**:虽然Hive的索引功能有限,但在某些场景下,例如优化join条件,使用bucketing和sort by可以提升性能。 7. **SQL语句优化**:避免使用子查询,使用连接(JOIN)代替子查询,合理使用WHERE和HAVING,...
2. **MapReduce与Hive的交互**:Hive默认使用MapReduce执行查询,了解MapReduce的工作原理有助于理解Hive查询的执行流程。 3. **Hive与Spark集成**:Spark作为更快的计算框架,与Hive集成后,能提升查询效率,尤其...
- 通过具体的案例演示Hive的使用方法与技巧,包括但不限于表的设计、HiveQL语句的编写与优化等。 3. **Hive高级话题** - 生产环境中问题的分析与解决; - Hive源代码的调试与bug修复; - Hive元数据表结构的...
4. **索引机制**:Hive在数据加载时并不创建索引,这与数据库的索引机制不同,影响了查询速度。 总的来说,Hive是为大数据分析而设计的工具,它的出现极大地简化了非实时大数据处理的复杂性,但也存在性能和功能上...
### 尚硅谷大数据技术之Hive课程教学文档 #### 第一章 Hive基本概念 ##### 1.1 Hive简介 **Hive** 是一个基于 **Hadoop**...了解Hive的基本概念、架构原理及其与传统数据库的区别,对于充分利用Hive的优势至关重要。
总的来说,学习 Hive 的实现原理有助于我们更好地理解大数据处理背后的机制,从而更好地利用 Hive 进行数据分析和管理,尤其是在面对淘宝这样的大型电商平台海量数据时,有效运用 Hive 可以极大地提升数据处理效率。
3. 根据value过滤:对于value过滤,Hive on HBase的性能与Hive on HDFS相近,因为这需要全表扫描,而HBase的缓存机制在此类查询中的效果不如rowkey过滤明显。 三、性能瓶颈与优化策略 1. Map Task:由于HBase默认...
Hive与Hbase的区别: * Hive是基于Hadoop的大数据仓库工具,可以将结构化的数据文件映射为一个表,并提供简单的SQL查询功能。 * HBase是Hadoop的数据库,一个面向列、分布式、可扩展、大数据的存储。 * Hive是逻辑...
9. **性能优化**:Hive-0.8.1可以通过创建合适的索引、使用Bucketing(分桶)和Sorting(排序)等技术来提升查询性能。此外,还可以通过调整MapReduce的参数,如mapred.reduce.tasks数量,来优化执行效率。 10. **...
7. **安全性与权限**:讨论 Hive 的安全特性,如 Hive Metastore 的访问控制、SQL 标准授权和认证机制,以及与 Kerberos 集成的安全实践。 8. **Hive 与其他工具集成**:介绍如何将 Hive 与 Pig、Presto、Impala 等...
#### 一、Hive简介及原理 **Hive**是由Facebook开源的一款强大的数据仓库工具,主要用于处理海量结构化日志数据,提供类似于SQL的查询功能,使用户能够更加便捷地进行数据分析工作。它通过将结构化的数据文件映射为...
### 知识点二:Hive执行原理与优化 Hive的工作流程主要分为以下几个步骤: 1. **解析阶段**:将HQL查询转换成抽象语法树(AST),并对AST进行优化。 2. **编译阶段**:基于优化后的AST生成执行计划。 3. **执行阶段*...
通过《Hive编程指南》,读者可以深入理解Hive的工作原理,学习如何有效地使用HQL进行大数据分析,并掌握Hive在实际项目中的应用技巧。这本书对于想要提升Hadoop环境中数据分析能力的开发者和数据分析师来说,是一份...
Hive由于没有索引机制和MapReduce框架固有的高延迟,查询延迟相对较高,对于实时性要求不高的大数据分析是一个好的选择。在执行延迟方面,数据库执行延迟较低,这是在数据规模较小的情况下。当数据规模超出数据库...
综上,"hive,阿帕奇蜂巢.zip"提供的内容对于理解Hive的工作原理、学习如何使用HQL进行大数据处理,以及深入了解Hadoop生态系统的运作,都是非常宝贵的资源。无论是数据工程师、数据分析师还是数据科学家,都可以从中...
此外,还会介绍Hive的系统架构、工作原理、高可用性(HA)机制以及与Hadoop生态系统中的其他组件的关系。最后,通过实际的编程实践和企业应用案例,来说明Hive的实际部署和应用情况。 数据仓库概念起源于面向主题的...
例如,Hadoop 的数据块大小设置、Zookeeper 的会话超时机制、HBase 的 Region 分裂、Hive 的分区表设计、Spark 的容错机制、Kafka 的生产者消费者模型、Flink 的状态持久化和ClickHouse 的索引策略等都是常见的面试...