Hive 有很多的基础数据类型,在实际构建数仓的这么多数据类型,我们该如何选择呢?
如果你的公司足够大,那么建议参照以下几条建议:
浮点数建议:
1) Hive 中Double类型需要慎用, Hive 中Double类型存在失真。
例如: 原始数据是 10000, Hive 中10000 可能为10000.0001
2) 为了浮点数越界,或者失真的问题,建议不论原始数据是 float, double 或者 decimal 统一存储为 decimal。
数值类型建议:
建议所有的数值类型,都存储为BIGINT。 目的是 为了防止数值类型范围变大,导致数值越界的问题。
字符,字符串类型 :
CHAR,VARCHAR 都定义为 STRING 。因为 CHAR, VARCHAR 虽然 Hive 高版本已经支持,但是为了防止数据越界复杂的问题,还是推荐存储为 STRING 类型。
日期类型建议:
建议 DATE 统一定义为 STRNG类型,(至少在ods 是这样存储的)