在Hive生态中,Parquet文件格式所支持的数据类型相当全面,主要可归纳为两大类:基本数据类型与复杂数据类型。下面这张图能帮你快速建立整体认知。

基础数据类型
基础数据类型是数据存储的根基,Parquet对它们的支持十分完备:
- 布尔类型 (BOOLEAN):用于表示真/假逻辑值,是最简单的数据类型。
- 整数类型:按字节长度区分为四种——
- TINYINT:1字节有符号整数,取值范围-128~127,适合存储状态标识等小量级数据。
- SMALLINT:2字节有符号整数,区间-32,768~32,767,可满足中等规模计数需求。
- INT:4字节有符号整数,范围约-21亿~21亿,日常开发中最常用的整型。
- BIGINT:8字节有符号整数,范围达-9.22×10¹⁸~9.22×10¹⁸,仅处理超大规模数据时才需要。
- 浮点类型:FLOAT(4字节单精度)与DOUBLE(8字节双精度),精度等级不同,按业务场景选用即可。
- 字符串类型:CHAR为固定长度,VARCHAR为可变长度,后者通常采用UTF-8编码,灵活性更高、更节省空间。
- 日期与时间类型:DATE仅存储日期,TIMESTAMP同时包含日期和时间,TIME只记录时间,各司其职。
复杂数据类型
当遇到结构更复杂的数据时,复杂类型便派上用场:
- STRUCT:结构体,可容纳多个不同类型字段,类似面向对象编程中的对象概念。
- ARRAY:数组,存储一系列相同类型的元素,支持顺序访问。
- MAP:映射,以键值对形式组织数据,键和值均可为任意类型,非常适合快速查找场景。
特殊类型
除此之外,Parquet还额外支持几种特殊数据类型:
- BINARY:原始的字节数据,适合存储二进制文件或序列化对象。
- DECIMAL:精确小数,可自定义精度与小数位数,是财务计算场景的必备类型。
- UNION_TYPE:联合类型,允许一个字段从多种子类型中取其一,虽然灵活性高但实际使用频率较低。
最后提醒一点:随着Hive版本迭代,Parquet对某些类型的支持细节可能有所调整,实际使用时最好查阅最新官方文档进行确认。
