Amazon RDS 导出到 Amazon S3 存储桶时的数据转换
将数据库快照导出到 Amazon S3 存储桶时,Amazon RDS 以 Parquet 格式转换数据、导出数据并存储数据。有关 Parquet 的更多信息,请参阅 Apache Parquet
Parquet 将所有数据存储为以下原始类型之一:
-
BOOLEAN
-
INT32
-
INT64
-
INT96
-
FLOAT
-
DOUBLE
-
BYTE_ARRAY – 一个可变长度的字节数组,也称为二进制
-
FIXED_LEN_BYTE_ARRAY – 当值具有恒定大小时使用的固定长度字节数组
Parquet 数据类型很少能减少读取和写入格式的复杂性。Parquet 提供了用于扩展原始类型的逻辑类型。逻辑类型实现为具有 LogicalType
元数据字段中数据的注释。逻辑类型注释说明如何解释原始类型。
当 STRING
逻辑类型注释 BYTE_ARRAY
类型时,它表示字节数组应被解释为 UTF-8 编码的字符串。导出任务完成后,如果发生了任何字符串转换,则 Amazon RDS 会通知您。导出的基础数据始终与源中的数据相同。但是,由于 UTF-8 中的编码差异,在工具(如 Athena)中读取时,某些字符可能会显示与源不同。
有关更多信息,请参阅 Parquet 文档中的 Parquet 逻辑类型定义
MySQL 和 MariaDB 数据类型到 Parquet 的映射
下表显示在将数据转换并导出到 Amazon S3 时从 MySQL 和 MariaDB 数据类型到 Parquet 数据类型的映射。
源数据类型 | Parquet 原始类型 | 逻辑类型注释 | 转换说明 |
---|---|---|---|
数字数据类型 | |||
BIGINT | INT64 | ||
BIGINT UNSIGNED | FIXED_LEN_BYTE_ARRAY(9) | DECIMAL(20,0) | Parquet 仅支持签名类型,因此映射需要额外的字节(8 加 1)来存储 BIGINT_UNSIGNED 类型。 |
BIT | BYTE_ARRAY | ||
DECIMAL | INT32 | DECIMAL (p,s) | 如果源值小于 231,它其存储为 INT32。 |
INT64 | DECIMAL (p,s) | 如果源值等于或大于 231,但小于 263,它将存储为 INT64。 | |
FIXED_LEN_BYTE_ARRAY(N) | DECIMAL (p,s) | 如果源值等于或大于 263,则将它存储为 FIXED_LEN_BYTE_ARRAY(N)。 | |
BYTE_ARRAY | STRING | Parquet 不支持大于 38 的小数精度。十进制值转换为 BYTE_ARRAY 类型的字符串,并编码为 UTF8。 | |
DOUBLE | DOUBLE | ||
FLOAT | DOUBLE | ||
INT | INT32 | ||
INT UNSIGNED | INT64 | ||
MEDIUMINT | INT32 | ||
MEDIUMINT UNSIGNED | INT64 | ||
NUMERIC | INT32 | DECIMAL (p,s) |
如果源值小于 231,它其存储为 INT32。 |
INT64 | DECIMAL (p,s) | 如果源值等于或大于 231,但小于 263,它将存储为 INT64。 | |
FIXED_LEN_ARRAY(N) | DECIMAL (p,s) | 如果源值等于或大于 263,则将它存储为 FIXED_LEN_BYTE_ARRAY(N)。 | |
BYTE_ARRAY | STRING | Parquet 不支持大于 38 的数值精度。此数值类型的值转换为 BYTE_ARRAY 类型的字符串,并编码为 UTF8。 | |
SMALLINT | INT32 | ||
SMALLINT UNSIGNED | INT32 | ||
TINYINT | INT32 | ||
TINYINT UNSIGNED | INT32 | ||
字符串数据类型 | |||
BINARY | BYTE_ARRAY | ||
BLOB | BYTE_ARRAY | ||
CHAR | BYTE_ARRAY | ||
ENUM | BYTE_ARRAY | STRING | |
LINESTRING | BYTE_ARRAY | ||
LONGBLOB | BYTE_ARRAY | ||
LONGTEXT | BYTE_ARRAY | STRING | |
MEDIUMBLOB | BYTE_ARRAY | ||
MEDIUMTEXT | BYTE_ARRAY | STRING | |
MULTILINESTRING | BYTE_ARRAY | ||
SET | BYTE_ARRAY | STRING | |
TEXT | BYTE_ARRAY | STRING | |
TINYBLOB | BYTE_ARRAY | ||
TINYTEXT | BYTE_ARRAY | STRING | |
VARBINARY | BYTE_ARRAY | ||
VARCHAR | BYTE_ARRAY | STRING | |
日期和时间数据类型 | |||
DATE | BYTE_ARRAY | STRING | 日期将转换为 BYTE_ARRAY 类型的字符串,并编码为 UTF8。 |
DATETIME | INT64 | TIMESTAMP_MICROS | |
TIME | BYTE_ARRAY | STRING | TIME 类型转换为 BYTE_ARRAY 类型的字符串,并编码为 UTF8。 |
TIMESTAMP | INT64 | TIMESTAMP_MICROS | |
YEAR | INT32 | ||
几何数据类型 | |||
GEOMETRY | BYTE_ARRAY | ||
GEOMETRYCOLLECTION | BYTE_ARRAY | ||
MULTIPOINT | BYTE_ARRAY | ||
MULTIPOLYGON | BYTE_ARRAY | ||
POINT | BYTE_ARRAY | ||
POLYGON | BYTE_ARRAY | ||
JSON 数据类型 | |||
JSON | BYTE_ARRAY | STRING |
PostgreSQL 数据类型到 Parquet 的映射
下表显示在将数据转换并导出到 Amazon S3 时从 PostgreSQL 数据类型到 Parquet 数据类型的映射。
PostgreSQL 数据类型 | Parquet 原始类型 | 逻辑类型注释 | 映射注释 |
---|---|---|---|
数字数据类型 | |||
BIGINT | INT64 | ||
BIGSERIAL | INT64 | ||
DECIMAL | BYTE_ARRAY | STRING | DECIMAL 类型转换为 BYTE_ARRAY 类型的字符串,并编码为 UTF8。 此转换是为了避免由于数据精度和非数字 (NaN) 的数据值而引起的复杂性。 |
DOUBLE PRECISION | DOUBLE | ||
INTEGER | INT32 | ||
MONEY | BYTE_ARRAY | STRING | |
REAL | FLOAT | ||
SERIAL | INT32 | ||
SMALLINT | INT32 | INT_16 | |
SMALLSERIAL | INT32 | INT_16 | |
字符串和相关数据类型 | |||
ARRAY | BYTE_ARRAY | STRING |
数组转换为字符串并编码为 BINARY (UTF8)。 此转换是为了避免因数据精度、非数字 (NaN) 的数据值和时间数据值而产生的复杂性。 |
BIT | BYTE_ARRAY | STRING | |
BIT VARYING | BYTE_ARRAY | STRING | |
BYTEA | BINARY | ||
CHAR | BYTE_ARRAY | STRING | |
CHAR(N) | BYTE_ARRAY | STRING | |
ENUM | BYTE_ARRAY | STRING | |
NAME | BYTE_ARRAY | STRING | |
TEXT | BYTE_ARRAY | STRING | |
文本搜索 | BYTE_ARRAY | STRING | |
VARCHAR(N) | BYTE_ARRAY | STRING | |
XML | BYTE_ARRAY | STRING | |
日期和时间数据类型 | |||
DATE | BYTE_ARRAY | STRING | |
INTERVAL | BYTE_ARRAY | STRING | |
TIME | BYTE_ARRAY | STRING | |
带时区的时间 | BYTE_ARRAY | STRING | |
TIMESTAMP | BYTE_ARRAY | STRING | |
TIMESTAMP(有时区) | BYTE_ARRAY | STRING | |
几何数据类型 | |||
BOX | BYTE_ARRAY | STRING | |
CIRCLE | BYTE_ARRAY | STRING | |
LINE | BYTE_ARRAY | STRING | |
LINESEGMENT | BYTE_ARRAY | STRING | |
路径 | BYTE_ARRAY | STRING | |
POINT | BYTE_ARRAY | STRING | |
POLYGON | BYTE_ARRAY | STRING | |
JSON 数据类型 | |||
JSON | BYTE_ARRAY | STRING | |
JSONB | BYTE_ARRAY | STRING | |
其他数据类型 | |||
BOOLEAN | BOOLEAN | ||
CIDR | BYTE_ARRAY | STRING | 网络数据类型 |
COMPOSITE | BYTE_ARRAY | STRING | |
DOMAIN | BYTE_ARRAY | STRING | |
INET | BYTE_ARRAY | STRING | 网络数据类型 |
MACADDR | BYTE_ARRAY | STRING | |
对象标识符 | 不适用 | ||
PG_LSN | BYTE_ARRAY | STRING | |
RANGE | BYTE_ARRAY | STRING | |
UUID | BYTE_ARRAY | STRING |