hdfs - 为什么使用整数类型作为分区键可以最小化内存使用?
问题描述
对分区键列使用最小的适当整数类型。尽管对分区键列使用字符串很诱人,因为这些值无论如何都会转换为 HDFS 目录名称,您可以通过对常见分区键字段(例如 YEAR)使用数字值来最小化内存使用量、月和日。使用包含适当值范围的最小整数类型,通常 TINYINT 代表 MONTH 和 DAY,SMALLINT 代表 YEAR。使用 EXTRACT() 函数从 TIMESTAMP 值中提取单个日期和时间字段,并使用 CAST() 将返回值转换为适当的整数类型。
以上段落来自Cloudera。为什么使用整数类型作为分区键可以最小化内存使用?仅仅因为 HDFS 文件名?
解决方案
分区键是否为 int 和 string 无关紧要 - 存储方式相同。但它在 SQL 的内存处理中会更好。与字符串相比,Int 总是表现得更好。所以如果你有很多分区,SQL 会更好地执行,使用分区键作为 int。
推荐阅读
- python - PySNMP 如何处理具有读取创建权限的表?
- jenkins-pipeline - 是否可以将 Jenkins 管道节点值设置为参数?
- typescript - 映射对象分配:`string` 不可分配给`key in N`
- ibm-mq - LDAPCONN (INACTIVE):如何成功评估 ldapconn 非活动错误的原因?
- firebase - Admob 中没有“链接到 Firebase”选项
- php - 如何使用 ajax(一个文件)从 php 获取响应数据?
- javascript - 为什么在 componentDidUpdate 中比较数组不会导致无限循环?
- node.js - 需要有一个函数来处理数据库中的所有 CRUD 操作
- sql - 从两个给定列表创建表
- ruby - 将命令('stdout')强制转换为整数以进行数学比较