hive为什么抛弃了索引
时间: 2023-08-15 16:26:50 浏览: 124
Hive没有完全抛弃索引,而是使用了一种不同的索引机制,称为“基于Bloom Filter的索引”。这种索引机制的思想是将索引数据存储在一个Bloom Filter中,而不是建立传统的索引表。Bloom Filter是一种数据结构,可以用来快速判断某个元素是否存在于一个集合中。基于Bloom Filter的索引可以用来加速Hive表的查询,但是它只能用于等值查询,不能用于范围查询。另外,Bloom Filter的精确度也会受到一定影响,因此在使用基于Bloom Filter的索引时需要权衡索引的精确度和查询性能。
相关问题
hive索引什么情况下会失效
Hive索引在以下情况下可能会失效:
1. 数据更新:当表中的数据被更新时,与该数据相关的索引也需要更新,否则索引可能会失效。
2. 数据删除:当表中的数据被删除时,与该数据相关的索引也需要更新,否则索引可能会失效。
3. 数据插入:当表中的数据被插入时,如果索引没有被正确地创建和更新,那么索引可能会失效。
4. 数据压缩:如果表中的数据被压缩,那么索引也需要被重新计算,否则索引可能会失效。
5. 数据排序:如果表中的数据被重新排序,那么索引也需要被重新计算,否则索引可能会失效。
6. 数据格式转换:如果表中的数据被转换为另一种格式,那么索引也需要被重新计算,否则索引可能会失效。
7. 数据分区:如果表被分区,那么索引也需要被重新计算,否则索引可能会失效。
综上所述,Hive索引在数据更新、删除、插入、压缩、排序、格式转换和分区等情况下可能会失效。因此,在使用Hive索引的过程中,需要注意这些情况并及时更新索引。
hive为什么一般不用缩影
引用提到了Hive使用默认服务启动,引用提到了Hive的CBO通过Apache Calcite来实现。根据我的专业知识,Hive一般不使用索引的原因是因为Hive是基于Hadoop的分布式数据仓库工具,主要面向大规模数据处理,而不是实时查询。在Hadoop的分布式环境下,索引的维护和查询效率并不高,而且会占用大量的存储空间。因此,Hive更多地侧重于批量处理和分析,而不是实时查询,所以在设计上没有像传统的关系型数据库那样支持索引的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [《MY大数据开发笔记》----hive知识点总结](https://blog.csdn.net/qq1319713925/article/details/86559798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [Hive 通过关闭CBO (Cost based Optimizer) 来优化特定的SQL执行](https://blog.csdn.net/zhouyan8603/article/details/100927486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]