文档首页/ 数据仓库服务 DWS/ 数据迁移与同步/ 数据类型映射关系/ DWS外表与HIVE/SPARK、ORC及PARQUET数据类型的映射关系
更新时间:2025-10-17 GMT+08:00
分享

DWS外表与HIVE/SPARK、ORC及PARQUET数据类型的映射关系

使用外表读取Hive/Spark数据或其他第三方组件的ORC/Parquet数据时,由于不同平台数据类型存在差异,可能导致读取过程中数据不兼容问题。本节阐述了DWS外表数据类型与这些数据源数据类型之间的映射关系,通过正确配置外表字段数据类型,确保数据在DWS中能被准确识别、处理和查询,从而避免数据丢失,保障业务数据完整获取。

具体的外表语法请参考CREATE FOREIGN TABLE (SQL on OBS or Hadoop)

DWS外表与HIVE/SPARK数据类型映射关系

表1以DWS外表支持的类型为基准,某些在HIVE/SPARK中支持的类型比如INTERVAL、UNION等,在DWS外表中不支持。

表1 DWS外表与HIVE/SPARK数据类型之间的映射关系

类型名称

DWS外表类型

HIVE类型

SPARK类型

1字节整数

  • TINYINT(不推荐)
  • SMALLINT(推荐)

TINYINT

BYTE,TINYINT

2字节整数

SMALLINT

SMALLINT

SHORT,SMALLINT

4字节整数

INTEGER

INT,INTEGER

INT,INTEGER

8字节整数

BIGINT

BIGINT

LONG,BIGINT

单精度浮点

FLOAT,REAL

FLOAT

FLOA,REAL

双精度浮点

FLOAT8,DOUBLE

DOUBLE

DOUBLE

科学数据

DECIMAL[p (,s)]

DECIMAL

DECIMAL

日期类型

DATE

DATE

DATE

时间类型

TIMESTAMP WITHOUT TIME ZONE

TIMESTAMP

TIMESTAMP_NTZ

TIMESTAMP WITH TIME ZONE

TIMESTAMP,TIMESTAMP_LTZ

布尔类型

BOOLEAN

BOOLEAN

BOOLEAN

Char类型

CHAR(n)

CHAR

CHAR(length)

Varchar类型

VARCHAR(n)

VARCHAR

VARCHAR(length)

NVARCHAR2

text类型

TEXT(CLOB)

STRING

STRING

二进制类型

BYTEA

BINARY

BINARY

复杂类型

JSON

ARRAY

ARRAY

MAP

MAP

STRUCT

STRUCT

DWS外表与ORC数据类型映射关系

  • “ORC类型”是ORC格式规范定义的内部类型,通常无需特别关注,在HIVE/SPARK定义不明确的场景下,可作为创建DWS外表的参考。
  • DWS外表写入ORC文件时存在明确的一对一类型对应关系,但在场景下,除了推荐的类型对应关系外,还存在一些可以兼容读取的场景,表2列出了这些兼容的情况。
表2 DWS外表与ORC数据类型的映射关系

类型分类

ORC类型

DWS外表类型(读)

DWS外表类型(写)

整数类型

boolean (1 bit)

BOOLEAN

BOOLEAN

tinyint (8 bit)

  • TINYINT(不推荐)
  • SMALLINT(推荐)

TINYINT(不推荐)

smallint (16 bit)

SMALLINT

SMALLINT

int (32 bit)

INTEGER

INTEGER

bigint (64 bit)

BIGINT

BIGINT

浮点类型

float

FLOAT4

FLOAT4

double

FLOAT8

FLOAT8

字符串类型

string

  • TEXT(推荐)
  • VARCHAR (n)
  • CHAR (n)
  • DECIMAL[p (,s)]
  • TEXT
  • DECIMAL[p (,s)]
  • CHAR (n)
  • VARCHAR (n)

char

  • CHAR (n)(推荐)
  • VARCHAR (n)

CHAR (n)

varchar

VARCHAR(n)

VARCHAR (n)

二进制类型

binary

BYTEA

BYTEA

科学数据

decimal

DECIMAL[p (,s)]

DECIMAL[p (,s)]

时间类型

timestamp

  • TIMESTAMP WITHOUT TIME ZONE
  • TIMESTAMP WITH TIME ZONE
  • TIMESTAMP WITHOUT TIME ZONE
  • TIMESTAMP WITH TIME ZONE

timestamp with local time zone

  • TIMESTAMP WITHOUT TIME ZONE
  • TIMESTAMP WITH TIME ZONE

不支持

date

  • DATE
  • TIMESTAMP WITHOUT TIME ZONE
  • TIMESTAMP WITH TIME ZONE

DATE

复杂类型

struct

  • JSON
  • JSONB

不支持

list

  • JSON
  • JSONB

不支持

map

  • JSON
  • JSONB

不支持

union

不支持

不支持

DWS外表与PARQUET数据类型映射关系

“PARQUET类型”指PARQUET格式规范定义的内部存储类型,PARQUET通过coverted_type(已废弃)或logical_type进一步描述类型行为。DWSPARQUET仅使用logical_type,但时兼容coverted_type。

表3 DWS外表与PARQUET数据类型的映射关系

PARQUET类型

DWS外表类型(读)

DWS外表类型(写)

BOOLEAN

BOOLEAN

BOOLEAN

INT32

  • TINYINT(不推荐)
  • SMALLINT
  • INTEGER
  • DATE
  • TIMESTAMP[(p)]
  • DECIMAL[p (,s)]
  • TINYINT(不推荐)
  • SMALLINT
  • INTEGER

INT64

  • BIGINT
  • money
  • TIMESTAMP WITHOUT TIME ZONE]
  • TIMESTAMP WITH TIME ZONE
  • DECIMAL[p (,s)]
  • BIGINT
  • DECIMAL[p (,s)]
  • money
  • TIMESTAMP WITHOUT TIME ZONE
  • TIMESTAMP WITH TIME ZONE

INT96

  • TIMESTAMP[(p)] [WITHOUT TIME ZONE]
  • TIMESTAMP WITH TIME ZONE

不支持

FLOAT

FLOAT4

FLOAT4

DOUBLE

FLOAT8

FLOAT8

BYTE_ARRAY

  • CHAR (n)
  • VARCHAR (n)
  • TEXT
  • NVARCHAR2
  • BYTEA
  • DECIMAL[p (,s)]
  • CHAR (n)
  • VARCHAR (n)
  • TEXT
  • NVARCHAR2
  • BYTEA

FIXED_LEN_BYTE_ARRAY

DECIMAL[p (,s)]

DECIMAL[p (,s)]

相关文档