支持的数据类型
目前大数据领域,主流文件格式为ORC、PARQUET。用户利用HIVE将数据导出存储为ORC、PARQUET文件格式,使用DWS通过只读外表对ORC、PARQUET文件内的数据进行查询分析,因此,需要在ORC、PARQUET文件格式支持的数据类型与DWS自身支持数据类型间进行匹配,匹配状况如表1所示。同理,DWS可通过只写外表将数据导出存储为ORC、PARQUET文件格式,使用HIVE读取ORC、PARQUET文件内容,相互之间也需要类型匹配,匹配状况如表2所示:
| 类型名称 | DWS外表支持类型 | HIVE建表类型 |
|---|---|---|
| 1字节整数 | TINYINT(不推荐) | TINYINT |
| SMALLINT(推荐) | TINYINT | |
| 2字节整数 | SMALLINT | SMALLINT |
| 4字节整数 | INTEGER | INT |
| 8字节整数 | BIGINT | BIGINT |
| 单精度浮点数 | FLOAT4 (REAL) | FLOAT |
| 双精度浮点型 | FLOAT8(DOUBLE PRECISION) | DOUBLE |
| 科学数据类型 | DECIMAL[p (,s)] 最大支持38位精度 | DECIMAL最大支持38位(HIVE 0.11) |
| 日期类型 | DATE | DATE |
| 时间类型 | TIMESTAMP | TIMESTAMP |
| BOOLEAN类型 | BOOLEAN | BOOLEAN |
| Char类型 | CHAR(n) | CHAR (n) |
| VarChar类型 | VARCHAR(n) | VARCHAR (n) |
| 字符串(文本大对象) | TEXT(CLOB) | STRING |
| 二进制类型 | BYTEA | BINARY |
二进制类型仅9.1.0.100及以上集群版本支持。
| 类型名称 | DWS内表支持类型(数据源表) | DWS只写外表对应的类型 | HIVE建表类型 |
|---|---|---|---|
| 1字节整数 | TINYINT | TINYINT(不推荐) | SMALLINT |
| SMALLINT(推荐) | SMALLINT | ||
| 2字节整数 | SMALLINT | SMALLINT | SMALLINT |
| 4字节整数 | INTEGER、BINARY_INTEGER | INTEGER | INT |
| 8字节整数 | BIGINT | BIGINT | BIGINT |
| 单精度浮点数 | FLOAT4 、REAL | FLOAT4、REAL | FLOAT |
| 双精度浮点型 | DOUBLE PRECISION、FLOAT8、BINARY_DOUBLE | DOUBLE PRECISION、FLOAT8、BINARY_DOUBLE | DOUBLE |
| 科学数据类型 | DECIMAL、NUMERIC | DECIMAL[p (,s)] 最大支持38位精度 | precision <=38时,DECIMAL, precision > 38时, STRING |
| 日期类型 | DATE | TIMESTAMP[(p)] [WITHOUT TIME ZONE] | TIMESTAMP |
| 时间类型 | TIME [(p)] [WITHOUT TIME ZONE]、TIME [(p)] [WITH TIME ZONE] | TEXT | STRING |
| TIMESTAMP[(p)] [WITHOUT TIME ZONE]、TIMESTAMP[(p)][WITH TIME ZONE]、SMALLDATETIME | TIMESTAMP[(p)] [WITHOUT TIME ZONE] | TIMESTAMP | |
| INTERVAL DAY (l) TO SECOND (p)、INTERVAL [FIELDS] [ (p) ] | VARCHAR(n) | VARCHAR(n) | |
| BOOLEAN类型 | BOOLEAN | BOOLEAN | BOOLEAN |
| Char类型 | CHAR(n)、CHARACTER(n)、NCHAR(n) | CHAR(n)、CHARACTER(n)、NCHAR(n) | n<=255时,CHAR(n), n>255 时,STRING |
| VarChar类型 | VARCHAR(n)、CHARACTER VARYING(n)、VARCHAR2(n)、 | VARCHAR(n) | n<=65535时,VARCHAR (n),n>65535时,STRING |
| NVARCHAR2(n) | TEXT | STRING | |
| 字符串(文本大对象) | TEXT、CLOB | TEXT、CLOB | STRING |
| 二进制类型 | BYTEA | BYTEA | BINARY |
| 货币类型 | MONEY | NUMERIC | BIGINT |
- DWS外表支持NULL定义,HIVE数据表支持并采用相对应的NULL定义。
- HIVE数据表中的TINYINT的取值范围为[-128,127],而 DWS 的TINYINT的取值范围为[0,255],因此,HIVE表中的TINYINT类型在建DWS只读外表时建议采用SMALLINT类型,如果使用TINYINT有可能存在读取值与实际值不一致的情况。同样,DWS的TINYINT类型在导出时,只写外表和HIVE的建表类型也建议采用SMALLINT类型。
- DWS外表的日期和时间类型,不支持时区定义,HIVE不支持时区定义。
- HIVE中DATE类型只有日期,没有时间,DWS的DATE类型包含日期和时间。
- DWS支持ORC的压缩格式,包括ZLIB、SNAPPY、LZ4及NONE压缩方式。其中FLOAT4格式本身存在不精准问题,求和等操作在不同环境下可能产生不同的结果,在高精度要求场景下建议使用DECIMAL类型代替。
- 兼容Teradata数据库模式下,外表不支持DATE类型。
- 二进制类型仅9.1.0.100及以上集群版本支持。