hive扫描分区不超过400个

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive扫描分区不超过400个相关的知识,希望对你有一定的参考价值。

参考技术A 可以不超过一千个。一般来说hive的扫描分区不超过一千个。通过Hive的元数据库可以统计目前整个Hive中的表和分区数量。经过查看,目前存在一些分区数量超过1000个分区的表,这些表可能会影响集群的整体访问效率。Hive中的数据库中总分区数量建议控制在10万个以内,目前存在的数据库尚未有超过该值的。

Hive 分区表查询优化

【中文标题】Hive 分区表查询优化【英文标题】:Hive partition table query optimisation 【发布时间】:2020-06-02 22:01:55 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

如果您在state 上有一个分区,那么您需要在where 子句中使用state 进行分区修剪。因此,如果您只查询district,则会扫描整个表。

如果您在district 上有一个分区,那么您需要该分区。对state 的查询将扫描整个表。

如果您在两个 . . .好吧,那么声明起来会稍微复杂一些,但是您的查询会读取带有statedistrict 的少数分区。

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

【讨论】:

我已经根据唯一的状态值对文件进行了分区。我的建议是如果用户对区进行查询。我希望 hive 获取该区所属的匹配状态分区。我尝试做一些事情类似的方法是首先在该选定状态分区上创建一个视图,然后在该视图上运行实际查询。它在查询时间方面显示出一点改进,但​​是由于构建表的原始 csv 文件很小(26mb )。我猜是获取整个表而不是分区的时间,没有太大区别?我的方法应该是什么?

以上是关于hive扫描分区不超过400个的主要内容,如果未能解决你的问题,请参考以下文章

什么是hive的静态分区和动态分区,hive动态分区详解

Hive的分区和分桶

由于 Hive 元存储中的许多分区而导致的错误

Hive分区的作用

hive的分区和分桶

Hive的分区操作~~~~~~