蜂巢中分区和索引之间的区别

时间:2015-02-09 14:37:29

标签: indexing hive partition

我是hadoop和hive的新手,我知道 hive中的索引和分区有什么区别?当我使用索引和分区时?

谢谢!

2 个答案:

答案 0 :(得分:3)

索引是新的和不断发展的(正在添加功能)但目前索引仅限于单个表,不能与外部表一起使用。创建索引会创建一个单独的表。可以对索引进行分区(匹配基表的分区)。索引用于加速表内数据的搜索。

分区提供hdfs级别的数据隔离,为每个分区创建子目录。分区允许限制读取的文件数量和查询中搜索的数据量。但是,要发生这种情况,必须在WHERE子句中指定分区列。

在构建数据模型时,您可以根据数据大小和预期使用模式确定索引和/或分区的最佳使用。

答案 1 :(得分:2)

索尼娅,

以下是一本可能对您有用的书中的部分。

  

" Hive的索引功能有限。通常的关系数据库意义上没有键,但您可以在列上构建索引以加速某些操作。表的索引数据存储在另一个表中。   此外,该功能相对较新,因此它还没有很多选项。但是,索引过程旨在通过插件Java代码进行自定义,因此团队可以扩展该功能以满足其需求。   当逻辑分区实际上太多而且很小而无用时,索引也是分区的一个很好的替代方法。索引可以帮助修剪表中的某些块作为MapReduce作业的输入。并非所有查询都可以从索引中受益 - EXPLAIN语法和Hive可用于确定给定查询是否由索引辅助。   Hive中的索引与关系数据库中的索引一样,需要仔细评估。

     

维护索引需要额外的磁盘空间,构建索引会产生处理成本。用户必须权衡这些成本与查询表时提供的好处。"

编程Hive Book第117页

相关问题