中间件速查手册
数据仓库与 OLAPHive Partition

分区 是什么?

按目录切分数据(如 dt=2026-10-31),查询时只扫需要的目录

类比:文件柜按年份分抽屉,找 2026 年的只开一个抽屉

分区的本质是目录

建表时指定 `partitioned by (dt string)`,数据在 HDFS 上就是 `/table/dt=2026-10-31/` 这样的目录。查询带 `where dt=...` 时,Hive 直接跳过其他目录,这叫分区裁剪。

所以分区字段不是表里的普通列,而是路径的一部分——写数据时必须指定分区,否则数据无处可放。

粒度怎么定

按天是最常见的,数据量特别大可以按小时,数据量小按月。判断标准:单个分区目录的文件大小在几百 MB 到几 GB 之间比较健康。分区太细会产生大量小文件,压垮 NameNode。

动态分区

`insert overwrite ... partition(dt)` 可以从数据里自动推断分区值,写起来方便,但容易一次生成几千个分区。生产上要配 `hive.exec.max.dynamic.partitions` 限制,避免把集群写爆。

它出现在这些中间件里

相关问题

相关概念