配置单元分区表查询优化

时间:2020-06-02 22:01:55

标签: hadoop hive hiveql

我对蜂巢是新来的,而且对hadoop生态系统也很熟悉。从我了解到的蜂巢的基础上,您可以基于某些属性在蜂巢表上创建分区。如果查询中提到了该属性,那么应该可以由于蜂巢仅扫描特定分区文件而不是扫描整个表,因此性能得到提高。我的问题是假设数据中具有某种层次结构。例如,我基于唯一的状态值对表进行分区,并且每次查询基于状态配置单元将只扫描特定的状态分区,而不扫描整个表。但是,每个状态也具有唯一的区名称。如果仅基于区值进行查询,配置单元将扫描整个表吗?

如果是这样,那么有某种方法可以更改查询,以便我可以手动指示配置单元查询该分区所属的特定状态文件,然后仅对该分区文件执行其他操作,而不是扫描整个表以查找匹配的区域值。

1 个答案:

答案 0 :(得分:0)

Hive的优势之一是它对分区具有强大的支持。但是,当您编写查询时,它无法读懂您的想法。

如果state上有一个分区,则需要state子句中的where来进行分区修剪。因此,如果仅在district上进行查询,则会扫描整个表格。

如果district上有一个分区,则需要分区。在state上进行的查询将扫描整个表格。

如果两个都有分区。 。 。好了,然后声明起来会有点复杂,但是您的查询将读取带有statedistrict的少数分区。

如果您只是在学习分区,我建议您从日期分区开始。这些是熟悉该概念的最常见也是很好的方法。