Amazon s3 DynamoDB上的批读取或将数据流传输到S3

Amazon s3 DynamoDB上的批读取或将数据流传输到S3,amazon-s3,amazon-dynamodb,aws-lambda,amazon-kinesis,Amazon S3,Amazon Dynamodb,Aws Lambda,Amazon Kinesis,我有一个dynamodb表,我需要每小时读取一次以在数据仓库上执行加载。我有两个选择: 创建一个作业,通过上次更新时间戳扫描表过滤并加载到DW 在每次新的更新/插入中使用Kinesis+Lambda,我将记录转储到S3,以便进一步处理。然后我创建一个小时作业,将s3文件加载到DW 最好的方法是什么 对于第一,你的方式很好。 我需要更多的规格以便改进 对于2号,您应该使用Kinesis Firehose并将其配置为直接将数据保存到S3 对于第一,你的方式很好。 我需要更多的规格以便改进 对于2号,

我有一个dynamodb表,我需要每小时读取一次以在数据仓库上执行加载。我有两个选择:

  • 创建一个作业,通过上次更新时间戳扫描表过滤并加载到DW
  • 在每次新的更新/插入中使用Kinesis+Lambda,我将记录转储到S3,以便进一步处理。然后我创建一个小时作业,将s3文件加载到DW

  • 最好的方法是什么

    对于第一,你的方式很好。 我需要更多的规格以便改进


    对于2号,您应该使用Kinesis Firehose并将其配置为直接将数据保存到S3

    对于第一,你的方式很好。 我需要更多的规格以便改进


    对于2号,您应该使用Kinesis Firehose并将其配置为直接将数据保存到S3

    使用DynamoDB更新流是连接前端服务数据库(DynamoDB)和分析数据库的有效方法。它允许解耦,使系统的每一部分独立发展,而不会破坏另一部分


    它还允许您拥有一个无服务器的环境,以减少您的操作负载和工作量。您可以使用读取更新流的单个Lambda函数来决定将哪些数据记录到哪个数据存储中。通常,人们将所有插入/更新/删除作为日志写入S3,并将相关记录和列写入数据仓库中的各个表(例如,红移)。您的Lambda函数可以将转换后的记录放入一对Kinesis Firehose,这些Firehose将可靠地将数据移动到它们的目的地

    使用DynamoDB更新流是连接前端服务数据库(DynamoDB)和分析数据库的有效方法。它允许解耦,使系统的每一部分独立发展,而不会破坏另一部分


    它还允许您拥有一个无服务器的环境,以减少您的操作负载和工作量。您可以使用读取更新流的单个Lambda函数来决定将哪些数据记录到哪个数据存储中。通常,人们将所有插入/更新/删除作为日志写入S3,并将相关记录和列写入数据仓库中的各个表(例如,红移)。您的Lambda函数可以将转换后的记录放入一对Kinesis Firehose,这些Firehose将可靠地将数据移动到它们的目的地

    好家伙!当lambda函数失败时,dynamodb流如何处理?它会重试吗?是的,它会重试。但问题是为什么兰姆达失败了。如果您的代码中有一个bug或“毒药丸”(一个杀死您的函数的记录),它将永远失败,直到更改从流中删除为止(24小时)。谢谢@Guy。另一个问题:假设在激活(流+lambda)之前我有旧记录。有可能再加工吗?i、 把它放在流上,就好像它是一个新记录一样。只有激活流后的更新才会出现在那里。如果你想处理旧数据,你可以运行备份(使用EMR或扫描)并处理这些记录。太棒了@Guy!当lambda函数失败时,dynamodb流如何处理?它会重试吗?是的,它会重试。但问题是为什么兰姆达失败了。如果您的代码中有一个bug或“毒药丸”(一个杀死您的函数的记录),它将永远失败,直到更改从流中删除为止(24小时)。谢谢@Guy。另一个问题:假设在激活(流+lambda)之前我有旧记录。有可能再加工吗?i、 把它放在流上,就好像它是一个新记录一样。只有激活流后的更新才会出现在那里。如果要处理旧数据,可以运行备份(使用EMR或扫描)并处理这些记录。