
# DWS外表与HIVE/SPARK、ORC及PARQUET数据类型的映射关系
使用外表读取Hive/Spark数据或其他第三方组件的ORC/Parquet数据时，由于不同平台数据类型存在差异，可能导致读取过程中数据不兼容问题。本节阐述了DWS外表数据类型与这些数据源数据类型之间的映射关系，通过正确配置外表字段数据类型，确保数据在DWS中能被准确识别、处理和查询，从而避免数据丢失，保障业务数据完整获取。
具体的外表语法请参考[CREATE FOREIGN TABLE (SQL on OBS or Hadoop)](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0161.html)。
#### DWS外表与HIVE/SPARK数据类型映射关系
[表1]以DWS外表支持的类型为基准，某些在HIVE/SPARK中支持的类型比如INTERVAL、UNION等，在DWS外表中不支持。
 表1DWS外表与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       | FLOAT，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，TIMESTAMP_LTZ |
| 布尔类型      | BOOLEAN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | BOOLEAN     | BOOLEAN                 |
| Char类型    | CHAR(n)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | CHAR        | CHAR(length)            |
| Varchar类型 | VARCHAR(n)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | VARCHAR     | VARCHAR(length)         |
| Varchar类型 | NVARCHAR2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | VARCHAR     | VARCHAR(length)         |
| text类型    | TEXT(CLOB)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | STRING      | STRING                  |
| 二进制类型     | BYTEA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | BINARY      | BINARY                  |
| 复杂类型      | JSON                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | ARRAY       | ARRAY                   |
| 复杂类型      | JSON                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | MAP         | MAP                     |
| 复杂类型      | JSON                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | STRUCT      | STRUCT                  |
   
#### DWS外表与ORC数据类型映射关系
- "ORC类型"是ORC格式规范定义的内部类型，通常无需特别关注，在HIVE/SPARK定义不明确的场景下，可作为创建DWS外表的参考。
- DWS外表写入ORC文件时存在明确的一对一类型对应关系，但在**（** **读** **）** 场景下，除了推荐的类型对应关系外，还存在一些可以兼容读取的场景，[表2]列出了这些兼容的情况。
 
 表2DWS外表与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通过converted_type（已废弃）或logical_type进一步描述类型行为。DWS**（** **写** **）** PARQUET仅使用logical_type，但**（** **读** **）**时兼容converted_type。
表3DWS外表与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)\]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
