我对蜂巢是新来的,而且对hadoop生态系统也很熟悉。从我了解到的蜂巢的基础上,您可以基于某些属性在蜂巢表上创建分区。如果查询中提到了该属性,那么应该可以由于蜂巢仅扫描特定分区文件而不是扫描整个表,因此性能得到提高。我的问题是假设数据中具有某种层次结构。例如,我基于唯一的状态值对表进行分区,并且每次查询基于状态配置单元将只扫描特定的状态分区,而不扫描整个表。但是,每个状态也具有唯一的区名称。如果仅基于区值进行查询,配置单元将扫描整个表吗?
如果是这样,那么有某种方法可以更改查询,以便我可以手动指示配置单元查询该分区所属的特定状态文件,然后仅对该分区文件执行其他操作,而不是扫描整个表以查找匹配的区域值。
答案 0 :(得分:0)
Hive的优势之一是它对分区具有强大的支持。但是,当您编写查询时,它无法读懂您的想法。
如果state
上有一个分区,则需要state
子句中的where
来进行分区修剪。因此,如果仅在district
上进行查询,则会扫描整个表格。
如果district
上有一个分区,则需要分区。在state
上进行的查询将扫描整个表格。
如果两个都有分区。 。 。好了,然后声明起来会有点复杂,但是您的查询将读取带有state
或district
的少数分区。
如果您只是在学习分区,我建议您从日期分区开始。这些是熟悉该概念的最常见也是很好的方法。