跳转到内容
首页PT · EN · ES · JA · ZH

工作方式

数据湖要接收到数据,需要发生两件事:配置执行。配置只需在控制台中做一次, 执行则在每次快照后自动进行。

这个区分很重要,因为 即使配置不完整,流水线也会成功结束。如果没有勾选任何要接入的 数据库,快照依然会被导出,Parquet 文件依然会写入 S3,而复制作业会静默地忽略它们。 任何地方都不会报错——正因如此,控制台的总览页会列出还缺少哪些配置。

1. AWS 生成快照
自动(备份窗口)或手动
2. RDS 以 Parquet 格式导出
exported/{cluster}/{export}/pagila/public.payment/1/*.parquet
3. Data Pump 按你勾选的范围和你指定的名称复制
catalog/{cluster}/pagila.pagamentos/*.parquet
4. 对已配置的表重新分区
catalog/{cluster}/pagila.pagamentos/ano=2024/mes=03/*.parquet
5. Glue 编目
SELECT * FROM datalake.pagila_pagamentos WHERE ano = 2024

第 3 步和第 4 步是你的决策生效的地方:选择哪些数据库和表 (配置数据接入),以及如何重新分区 (分区)。

快照就绪时,RDS 会发布一个事件。一个 Lambda 函数接收该事件,检查对应集群是否已订阅, 若已订阅则启动导出。导出完成后,同一条路径会触发处理流水线。

两个环节使用的是同一个 Lambda,它通过事件类型来区分。无关的事件(创建开始、复制、删除) 会被记录并忽略。

四个作业顺序执行,均为基于同一镜像的 Fargate 任务:

  1. 清理上一次的目录catalog/{cluster}/ 在每次执行时重建,因此始终反映数据库的 当前状态。
  2. 复制文件 — 仅处理已勾选的数据库,并应用表过滤规则和别名。
  3. 重新分区 — 每张已配置的表对应一个任务,并行执行。
  4. 清理原始导出 — 可选。

最后,Glue 爬网程序对结果进行编目,并向一个 SNS 主题发布通知,供需要串接后续处理的 场景使用。

exported/{cluster}/{export}/{数据库}/{schema}.{表}/{分片}/*.parquet
└── RDS 产出的内容:快照中包含的全部数据
catalog/{cluster}/{alias}.{表}/*.parquet
└── Glue 编目的内容:仅你勾选的部分
longterm/{cluster}/{alias}/{表}/
└── 源数据库清理旧数据后依然保留的历史

catalog/longterm/ 的区别,正是让你在从 Postgres 清理旧数据后仍能 保留历史 的原因:catalog/ 每次执行都会重建, longterm/ 则持续累积。

如果一张表在 Postgres 中使用了原生分区,RDS 会把父表 每个子分区都作为独立的表 导出。父表本身已经包含全部行,因此同时复制两者会让数据湖中的每一行都重复。

Data Pump 使用导出自带的元数据(而非表名模式)来识别并忽略子分区。数据库中新建的 分区会被自动识别,无需维护任何清单。