支持的数据类型
目前大数据领域,主流文件格式为ORC。GaussDB(DWS)主要支持ORC文件格式。用户利用HIVE将数据导出存储为ORC文件格式,使用GaussDB(DWS)通过只读外表对ORC文件内的数据进行查询分析,因此,需要在ORC文件格式支持的数据类型与GaussDB(DWS)自身支持数据类型间进行匹配,匹配状况如表1所示。同理,GaussDB(DWS)可通过只写外表将数据导出存储为ORC文件格式,使用HIVE读取ORC文件内容,相互之间也需要类型匹配,匹配状况如表2所示:
类型名称 |
GaussDB(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 |
类型名称 |
GaussDB(DWS)内表支持类型(数据源表) |
GaussDB(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 |
货币类型 |
MONEY |
NUMERIC |
BIGINT |
- GaussDB(DWS)外表支持NULL定义,HIVE数据表支持并采用相对应的NULL定义。
- HIVE数据表中的TINYINT的取值范围为[-128,127],而GaussDB(DWS) 的TINYINT的取值范围为[0,255],因此,HIVE表中的TINYINT类型在建GaussDB(DWS)只读外表时最好采用SMALLINT类型,如果使用TINYINT有可能存在读取值与实际值不一致的情况。同样,GaussDB(DWS)的TINYINT类型在导出时,只写外表和HIVE的建表类型也最好采用SMALLINT类型。
- GaussDB(DWS)外表的日期和时间类型,不支持时区定义,HIVE不支持时区定义。
- HIVE中DATA类型只有日期,没有时间,GaussDB(DWS)的DATA类型包含日期和时间。
- GaussDB(DWS)支持ORC的压缩格式,包括ZLIB、SNAPPY、LZ4及NONE压缩方式。其中FLOAT4格式本身存在不精准问题,求和等操作在不同环境下可能产生不同的结果,在高精度要求场景下建议使用DECIMAL类型代替。
- 兼容Teradata数据库模式下,外表不支持DATE类型。