Hive Statistics与Analyze Table命令
hive 使用基于成本的优化器,所以表的统计信息作为成本函数的输入信息,从而优化器可以判断不同执行计划之间的成本,进而选择最佳的执行计划。
hive 使用统计信息例如表或者分区的行数生成一个最佳的执行计划,除了优化器,表的统计信息在hive 的其他很多地方也用到了,那hive是如何检查更新统计信息呢,就是我们今天介绍的ANALYZE TABLE 命令
统计信息(表/分区)的用途
使用到统计信息的地方有很多:
- Hive 基于成本的优化器使用统计信息生成最佳的执行计划
- 用户可以更快的获取某些统计的查询结果,这些查询结果存储在统计信息中的,而不是运行执行计划得到的
- 用户可以更好的获取数据的分布情况,例如卖的最好的10款产品,年龄的分布等。
收集什么样的统计信息
对于表和分区,目前支持收集下面的统计信息
- 行数
- 文件
- 大小(Bytes)
- 分区数(分区表)
- 列的统计信息
- 最后一次操作时间