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

son*_*nia 8 indexing hive partition

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

谢谢!

小智 6

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

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

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


Jav*_*vad 5

索尼娅,

\n\n

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

\n\n
\n

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

\n\n

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

\n
\n\n

编程 Hive 书第 117 页

\n