Amazon RDS 导出到 Amazon S3 时的文件命名约定
特定表的导出数据以
格式存储,基本前缀如下:base_prefix
/files
export_identifier
/database_name
/schema_name
.table_name
/
例如:
export-1234567890123-459/rdststdb/rdststdb.DataInsert_7ADB5D19965123A2/
文件的命名方式有两种约定。
-
当前约定:
batch_index
/part-partition_index
-random_uuid
.format-based_extension
批量索引是一个序列号,表示从表中读取的一批数据。如果我们无法将您的表分区成小块以并行导出,则会有多个批量索引。如果表分区成多个表,也会发生同样的情况。这会出现多个批量索引,主表的每个表分区对应一个。
如果我们可以将表分区成小块以并行读取,那么就只有批量索引
1
文件夹。在批量索引文件夹中,有一个或多个包含表数据的 Parquet 文件。Parquet 文件名的前缀是
part-
。如果您的表已分区,则会有多个以分区索引partition_index
00000
开头的文件。分区索引序列中可能存在间隙。之所以发生这种情况,是因为每个分区都是从表中的范围查询中获得的。如果该分区的范围内没有数据,则跳过该序列号。
例如,假设
id
列是表的主键,其最小值和最大值为100
和1000
。当我们尝试导出这个带有九个分区的表时,我们会使用并行查询读取它,如下所示:SELECT * FROM table WHERE id <= 100 AND id < 200 SELECT * FROM table WHERE id <= 200 AND id < 300
这应该生成九个文件,从
part-00000-
到random_uuid
.gz.parquetpart-00008-
。但是,如果没有 ID 介于random_uuid
.gz.parquet200
和350
之间的行,则其中一个已完成的分区为空,并且不会为其创建任何文件。在前面的示例中,未创建part-00001-
。random_uuid
.gz.parquet -
较早的约定:
part-
partition_index
-random_uuid
.format-based_extension
这与当前约定相同,但没有
前缀,例如:batch_index
part-00000-c5a881bb-58ff-4ee6-1111-b41ecff340a3-c000.gz.parquet part-00001-d7a881cc-88cc-5ab7-2222-c41ecab340a4-c000.gz.parquet part-00002-f5a991ab-59aa-7fa6-3333-d41eccd340a7-c000.gz.parquet
文件命名约定可能会更改。因此,在读取目标表时,我们建议您读取表的基本前缀内的所有内容。