You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS Glue ETL任务完成DocumentDB到Redshift的数据迁移

DocumentDB 到 Redshift 完整迁移同步执行步骤

前置检查(已完成DocumentDB到S3导出的前提下)

  • 确认S3上的导出文件格式为Redshift支持的JSON、CSV、Parquet格式,若导出为BSON格式需先完成格式转换,嵌套层级超过3层的结构建议提前做扁平化处理,降低后续导入报错概率
  • 确认Redshift集群绑定的IAM角色已配置S3桶的s3:GetObject、s3:ListBucket权限,同时当前操作账号拥有Redshift的表创建、数据写入权限

全量数据导入Redshift操作

  • 第一步:根据DocumentDB的文档结构创建Redshift目标表,如需存储嵌套结构可使用Redshift的SUPER类型,示例如下:
CREATE TABLE user_info (
    _id VARCHAR(100) PRIMARY KEY,
    user_name VARCHAR(255),
    user_age INT,
    ext_info SUPER, -- 存储嵌套字段
    create_time TIMESTAMP
);
  • 第二步:执行COPY命令导入S3数据,以JSON格式导入为例:
COPY user_info
FROM 's3://你的桶名称/导出文件存放路径/'
IAM_ROLE 'arn:aws:iam::你的AWS账号ID:role/你的Redshift访问S3的角色名'
FORMAT AS JSON 'auto'
REGION '你的AWS区域编码(如cn-north-1)'
TIMEFORMAT 'auto'
TRUNCATECOLUMNS BLANKSASNULL EMPTYASNULL;

如果导出文件为Parquet格式,只需将FORMAT参数替换为FORMAT AS PARQUET即可

增量持续同步配置

如果需要实现数据的持续同步而非一次性迁移,需按如下步骤配置:

  • 调整DocumentDB到S3的导出链路:开启DocumentDB变更流(Change Streams),定时拉取新增/变更/删除的文档数据,按时间分区写入S3的增量目录(例如s3://你的桶名称/incremental/yyyyMMdd/hh/)
  • 配置Redshift增量导入任务:可通过定时Lambda、AWS Glue作业或者Redshift自带的定时任务,按固定时间间隔执行COPY命令,将对应时间分区的增量数据导入到Redshift目标表,如有删除操作需额外关联主键执行DELETE语句完成数据对齐

一致性校验与常见问题排查

  • 全量导入完成后,分别统计DocumentDB全量文档数与Redshift目标表行数,核对数值一致;抽样抽取至少3%的记录,对比两端字段值完全匹配
  • 增量同步运行后,定期核对两端最近24小时内的新增、变更数据,确认同步延迟符合预期

导入报错时可查询Redshift系统表stl_load_errors获取具体错误原因,常见问题包含字段类型不匹配、JSON格式异常、IAM权限不足三类
嵌套结构导入异常时,可优先使用SUPER类型存储,或者提前通过ETL任务将嵌套字段全部扁平化后再执行导入

内容的提问来源于stack exchange,提问作者aditya Damera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:06:04