Amazon RDS의 Amazon S3 버킷 내보내기 시 데이터 변환
Amazon RDS의 Amazon S3 버킷 내보내기 시 데이터 변환
DB 스냅샷을 Amazon S3 버킷으로 내보내면 Amazon RDS가 데이터를 Parquet 형식으로 변환하여 내보내고 저장합니다. Parquet에 대한 자세한 내용은 Apache Parquet 웹사이트를 참조하세요.
Parquet은 모든 데이터를 다음 기본(primitive) 유형 중 하나로 저장합니다.
BOOLEANINT32INT64INT96FLOATDOUBLEBYTE_ARRAY– 가변 길이 바이트 배열, 이진(binary)이라고도 함FIXED_LEN_BYTE_ARRAY– 값이 일정한 크기를 가질 때 사용되는 고정 길이 바이트 배열
Parquet 데이터 유형은 형식 읽기·쓰기의 복잡성을 줄이기 위해 적습니다. Parquet은 기본 유형을 확장하는 논리적(logical) 유형을 제공합니다. 논리적 유형은 LogicalType 메타데이터 필드의 데이터와 함께 주석으로 구현됩니다. 논리적 유형 주석은 기본 유형을 해석하는 방법을 설명합니다.
STRING 논리 유형이 BYTE_ARRAY 유형을 주석 처리하면 바이트 배열을 UTF-8로 인코딩된 문자 문자열로 해석해야 함을 나타냅니다. 내보내기 작업이 완료된 후 Amazon RDS는 문자열 변환이 발생했는지 알려줍니다. 내보낸 기본 데이터는 항상 소스의 데이터와 동일합니다. 단, UTF-8의 인코딩 차이로 인해 Athena와 같은 도구에서 읽을 때 일부 문자가 소스와 다르게 보일 수 있습니다.
자세한 내용은 Parquet 문서의 Parquet 논리적 유형 정의를 참조하세요.
주제
- MySQL 및 MariaDB 데이터 유형의 Parquet 매핑
- PostgreSQL 데이터 유형의 Parquet 매핑
출처: 문서
본문
MySQL 및 MariaDB 데이터 유형의 Parquet 매핑
다음 표는 데이터를 변환하여 Amazon S3로 내보낼 때 MySQL 및 MariaDB 데이터 유형에서 Parquet 데이터 유형으로의 매핑을 보여줍니다.
| 소스 데이터 유형 | Parquet 기본 유형 | 논리적 유형 주석 | 변환 참고 사항 |
|---|---|---|---|
| 숫자 데이터 유형 | |||
| BIGINT | INT64 | ||
| BIGINT UNSIGNED | FIXED_LEN_BYTE_ARRAY(9) | DECIMAL(20,0) | Parquet은 부호 있는 유형만 지원하므로 매핑에는 BIGINT_UNSIGNED 유형을 저장하기 위한 추가 바이트(8+1)가 필요합니다. |
| BIT | BYTE_ARRAY | ||
| DECIMAL | INT32 | DECIMAL(p,s) | 소스 값이 2^31 미만이면 INT32로 저장됩니다. |
| INT64 | DECIMAL(p,s) | 소스 값이 2^31 이상이고 2^63 미만이면 INT64로 저장됩니다. | |
| FIXED_LEN_BYTE_ARRAY(N) | DECIMAL(p,s) | 소스 값이 2^63 이상이면 FIXED_LEN_BYTE_ARRAY(N)으로 저장됩니다. | |
| BYTE_ARRAY | STRING | Parquet은 38보다 큰 Decimal 정밀도를 지원하지 않습니다. Decimal 값은 BYTE_ARRAY 유형의 문자열로 변환되어 UTF8로 인코딩됩니다. | |
| DOUBLE | DOUBLE | ||
| FLOAT | DOUBLE | ||
| INT | INT32 | ||
| INT UNSIGNED | INT64 | ||
| MEDIUMINT | INT32 | ||
| MEDIUMINT UNSIGNED | INT64 | ||
| NUMERIC | INT32 | DECIMAL(p,s) | 소스 값이 2^31 미만이면 INT32로 저장됩니다. |
| INT64 | DECIMAL(p,s) | 소스 값이 2^31 이상이고 2^63 미만이면 INT64로 저장됩니다. | |
| FIXED_LEN_ARRAY(N) | DECIMAL(p,s) | 소스 값이 2^63 이상이면 FIXED_LEN_BYTE_ARRAY(N)으로 저장됩니다. | |
| BYTE_ARRAY | STRING | Parquet은 38보다 큰 Numeric 정밀도를 지원하지 않습니다. 이 Numeric 값은 BYTE_ARRAY 유형의 문자열로 변환되어 UTF8로 인코딩됩니다. | |
| SMALLINT | INT32 | ||
| SMALLINT UNSIGNED | INT32 | ||
| TINYINT | INT32 | ||
| TINYINT UNSIGNED | INT32 | INT(16, true) | |
| 문자열 데이터 유형 | |||
| 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 |