【问题标题】:How would you process a list with 1 million objects in aws lambda?您将如何在 aws lambda 中处理包含 100 万个对象的列表?
【发布时间】:2018-02-12 08:20:49
【问题描述】:

我在 DynamoDB 中有一个包含 100 万行的表。

我需要在 100 万行上运行一个进程。

表格如下所示:

Date,   Type,  Quantity, value
Jan23,    M,   10,       0.4
Jan24,    F,    5,       0.6
Jan26,    M,    6,       0.8

流程如下:

  • 获取 F 和 M 的所有记录,并按日期将它们分别排序到两个列表中。

清单 1:

Jan23, M , 10, 0.4
jan26, M, 6, 0.8

列表2:

Jan24, F, 5,0.6
  • 现在,对于 List2 中的每一行,我需要找到 List 1 中的第一个可用行并进行处理。

所以 (10*0.4-0.6*5) = 1

  • 现在因为我从 jan23 行拿走了 5 个,所以它只剩下 5 个作为剩余数量。

这是一个简单的过程,但是,这可以在具有 100 万条记录的 Lambda 中完成吗?我会以某种方式需要 Lambda 来保存所有 100 万条记录,因为由于必须知道每行的数量,因此无法拆分列表。

数据存储在 DynamoDB 而不是 S3 中,因为需要从 Web 应用程序轻松编辑某些行。如果此解决方案需要,我可以并且将实现一种将其存储在 S3 上的方法。

我一直在寻找并行实现,但为此我需要事先知道在哪里拆分每个列表。

【问题讨论】:

  • 类型加日期的组合是否唯一,或者例如同一日期是否有多个M条记录?日期范围是多少?
  • 是的,同一天有多条M记录。日期范围是从 2010 年至今。 @jarmod
  • 请发布代码以显示解决此问题的尝试。

标签: amazon-web-services amazon-s3 aws-lambda amazon-dynamodb


【解决方案1】:

您正在使用错误的数据库解决问题。 Dynamo 不能用于分析或统计问题解决。

至少到目前为止,DymanoDB 不打算用于获取大量数据。

解决方案,

DynamoDB -- 流 -- Lambda -- RDS

使用 RDS 执行所有复杂查询。

如果数据要变得庞大,您也可以引入 Redshift。

DynamoDB -- 流 -- Lambda -- Firehose -- Redshift

使用 Redshift 工具并将结果更新到 DymanoDB 以供事务使用。

希望对你有帮助。

【讨论】:

  • 我可以将信息存储在 s3 和 dynamo 中,然后使用 s3 代替 rds。它作为 csv 文件存储在哪里?
  • 您的数据是相关的。您需要使用关系数据库,例如 RDS。
猜你喜欢
  • 1970-01-01
  • 2021-09-20
  • 2020-04-26
  • 1970-01-01
  • 2021-01-03
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多