背景
全局字典
- 用于解决 Count distinct 场景
- 构建全局唯一的连续ID
- 基于bitmap,将string 类型转为int
弊端:如果使用Global Dictionary的话全局字典会越来越大,构建也会越来越慢。
构建
- 在构建时,一个 bigint 类型的字段,做 Count distinct 并选择了精准计算。
- 发现kylin 增加了全局字典。
- 问题:理论上 String 才会转为int 类型,bigint 不需要
排查
查看源码发现,字段只能为 “tinyint” "smallint" "int" "integer" 四种类型。
解决
目前 hive 中存储的数据为 bigint 格式,而int 类型可以存储20亿+ 数据,改为int 类型可以满足当前表需求。
Alter table [table_name] change column [old_colum_name] [new_colum_name] [new_colum_type]
遗留的问题
官方建议,集群模式部署的时候,只能有一个“all(job+query)”或者 “job”。部署 3 台 “all” 的话,全局字典会出现构建失败的情况。