我刚到Hive,一般来说,hadoop生态系统。根据我对hive基础知识的了解,你可以基于某些属性在hive表上创建分区。如果一个查询提到了该属性,那么它应该会得到性能提升,因为hive只扫描特定的分区文件,而不是扫描整个表。我的问题是假设我们在数据中有一些层次结构。例如,我根据唯一的状态值对表进行分区,并且每次查询基于状态时,配置单元将只扫描该特定的状态分区,而不是扫描整个表。但是,如果每个状态也有唯一的区域名称,则如果我仅根据区域值进行查询,配置单元将扫描整张table?
如果是这样的话,那么是否有某种方法来更改查询,使我可以手动指示配置单元查询分区所属的特定状态文件,然后仅对该分区文件执行其他操作,而不是扫描整个表以查找匹配的分区值。
1条答案
按热度按时间8gsdolmq1#
hive的优点之一是它对分区有很强的支持。然而,当你写查询时,它无法读懂你的心思。
如果你有一个分区
state
,那么你需要state
在where
用于分区修剪的子句。所以,如果你只查询district
,整个table都会被扫描。如果你有一个分区
district
,那么你需要这个地区。对…的质询state
会扫描整张table。如果两者都有分区。好吧,那么声明就有点复杂了,但是您的查询将读取少数分区,其中一个分区
state
或者district
.如果您只是在学习分区,我建议您从日期分区开始。这些都是最常见的和一个很好的方式来熟悉这个概念。