首页 > 解决方案 > 为什么使用整数类型作为分区键可以最小化内存使用?

问题描述

对分区键列使用最小的适当整数类型。尽管对分区键列使用字符串很诱人,因为这些值无论如何都会转换为 HDFS 目录名称,您可以通过对常见分区键字段(例如 YEAR)使用数字值来最小化内存使用量、月和日。使用包含适当值范围的最小整数类型,通常 TINYINT 代表 MONTH 和 DAY,SMALLINT 代表 YEAR。使用 EXTRACT() 函数从 TIMESTAMP 值中提取单个日期和时间字段,并使用 CAST() 将返回值转换为适当的整数类型。

以上段落来自Cloudera。为什么使用整数类型作为分区键可以最小化内存使用?仅仅因为 HDFS 文件名?

标签: hdfsimpalacloudera-cdh

解决方案


分区键是否为 int 和 string 无关紧要 - 存储方式相同。但它在 SQL 的内存处理中会更好。与字符串相比,Int 总是表现得更好。所以如果你有很多分区,SQL 会更好地执行,使用分区键作为 int。


推荐阅读