Hive分区表查询优化

问题描述 投票:0回答:1

我是Hive的新手,也是Hadoop生态系统的新手,从我所了解到的Hive的基础知识来看,你可以基于某些属性在Hive表上创建分区,如果一个查询中提到了该属性,那么它应该会得到性能提升,因为Hive只扫描那个特定的分区文件,而不是扫描整个表。 我的问题是,假设我们的数据有一些层次结构,比如说我根据唯一的状态值对表进行分区,每次基于状态的查询时,hive只会扫描那个特定的状态分区,而不是扫描整张表,但是如果说每个状态也有唯一的区名,如果我只基于区名进行查询,hive会扫描整张表吗?

如果是这样的话,那么有没有什么方法可以改变查询方式,让我可以手动指示hive查询该地区所属的特定状态文件,然后只对该分区文件执行其他操作,而不是扫描整个表来寻找匹配的地区值。

hadoop hive hiveql
1个回答
0
投票

Hive的优势之一是它对分区的支持很强。 但是,当你写查询时,它不能读懂你的想法。

如果你有一个分区,在 state那么你需要 statewhere 子句进行分区修剪。 所以,如果你只查询 district,整个表都会被扫描。

如果你有一个分区在 district,那么你需要区。 查询 state 会扫描整个表。

如果你在这两个......上都有一个分区,那么声明起来就比较复杂了,但是你的查询会读取少数分区,其中有一个 statedistrict.

如果你刚刚了解分区,我建议你从日期分区开始。 这是最常见的,也是熟悉概念的好方法。

© www.soinside.com 2019 - 2024. All rights reserved.