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

如何将S3存储的超大型CSV文件成功导入DynamoDB

S3存储200万行以上CSV导入DynamoDB落地方案

原有方案失败根因

  • Lambda方案无法跑完全量:Lambda单次执行最长硬超时为15分钟,你当前单实例15分钟导入12万行已经属于常规性能较好的水平,200万行量级靠单Lambda实例串行写入不可能在超时窗口内完成;就算做了多Lambda分片触发,没有做游标持久化、失败重试机制的话,中途中断后无法续跑,很容易丢数。
  • Pipeline方案卡停:卡在「waiting for runner」后直接停止,核心原因是执行资源拉起失败,常见触发点包括执行角色权限缺失、Runner资源配额不足、临时存储配置不满足要求,调度系统等待资源超时后直接终止任务。

优先落地方案:DynamoDB原生S3批量导入(零代码、稳定性最高)

这个是AWS官方针对S3到DynamoDB的大批量导入场景做的托管能力,不需要自行维护计算资源,不会有超时、资源拉不起来的问题,200万行CSV通常10-30分钟即可完成全量导入:

  1. 提前校验CSV格式:第一行必须为表头,表头名称要和目标DynamoDB表的分区键、排序键、属性名对应,不要存在空行、未转义的特殊字符,有嵌套结构的字段要提前转成字符串或者调整为平铺结构。
  2. 进入DynamoDB控制台选择「从S3导入」功能,指定CSV所在的S3路径,输入格式选择CSV,匹配目标表的主键字段和对应数据类型。
  3. 配置优化项:
    • 导入阶段将目标表设置为按需容量模式,避免触发预置吞吐量限流,导入完成后可切回预置容量模式降低成本
    • 给导入服务关联的角色配置S3对象读权限、目标DynamoDB表的写权限即可,不需要额外开放其他权限
    • 单CSV文件即使超过10GB也不需要手动拆分,服务端会自动分片并行导入
      该导入模式不会占用目标表的业务读写容量,导入过程中不会影响线上业务请求

备选方案:EMR Serverless分布式导入(适合需要前置数据清洗的场景)

如果导入前需要做字段过滤、格式转换、去重、主键拼接这类清洗逻辑,直接用EMR Serverless提交Spark作业即可,不需要手动搭建集群:

  • 作业逻辑直接读取S3上的CSV文件,完成清洗逻辑后通过DynamoDB Spark Connector批量写入目标表
  • 资源配置建议设置10-20个executor,写入时开启批量写入参数dynamodb.s3.bucket,单批写入条目数控制在25条以内、单批大小不超过400KB,避免触发DynamoDB写入限制,200万行数据通常10分钟内即可跑完
  • 作业执行过程中支持断点续跑,不会因为单节点故障导致全量任务失败,资源按需拉起,任务完成后自动释放,不需要长期维护资源

实操避坑点

  • 不要用单EC2实例、单函数实例串行跑全量导入,200万行量级下很容易因为网络波动、进程超时导致任务中断
  • 全量导入前先取1万行样本做小批量测试,确认字段映射正确、主键无重复,避免全量导入后出现主键覆盖、字段类型错乱的问题
  • 导入完成后可以扫表做行数校验,确认导入数据量和源CSV行数一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 14:01:26