首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运动消防软管流空

运动消防软管流空
EN

Stack Overflow用户
提问于 2017-07-07 11:47:59
回答 2查看 427关注 0票数 1

我在循环中多次从EC2实例触发AWS,将350 it数据集的子集传递给lambda,Lambda操作传递给它的每个数据集。Lambda将输出写入流,然后将其写入一个S3桶。缓冲器大小为50 is,350秒为S3缓冲间隔,用于KinsisFire软管流。所以在6-7分钟后,我得到了大约7个文件,每个文件50 MB。

我想要触发一个Lambda,它结合了S3中的所有文件,其中包含JSON中的数据,并在完成流将所有文件写入S3之后,用它创建一个CSV文件。

挑战是如何知道所有Lambda的操作都完成了,而且KinsisFirehos缓冲区是空的,因为它已经将所有文件写入S3,这样我就可以触发这个Lambda,它可以从S3中的所有JSON文件创建CSV文件。

一个选项是,在循环之后,我等待350秒,然后在最后一个lambda被调用之后触发CSV创建lambda。

是否有一种方法来触发lambda后,所有的流数据被写入,而不是使用计时器。

EN

回答 2

Stack Overflow用户

发布于 2022-05-06 14:23:36

你的设计有一些缺陷,海事组织:

  • 你为什么要用消防水管来做这个?一个单一的EC2不能写得那么快,以利用消防软管。
  • 你为什么要分割文件?只需将其保存在S3中,从EC2中保存,然后有一个S3触发器来调用lambda,处理来自lambda的文件以创建CSV文件。
  • 如果你在乎秩序,那么运动/消防水管就不适合你了。

现在,您可以控制如何调用lambdas (异步与同步),您可以拥有一个S3触发器,但是您无法知道什么时候完成了运动/消防软管。你必须改变你的代码/设计,这样你才不会在噩梦中找到你自己。你不能只是等待X秒的运动/消防软管,有很多理由有一个在记录消费的延迟,这将打破你的设计。

以下任一项:

  • 不要分割文件
  • 不要使用动力/消防软管
票数 0
EN

Stack Overflow用户

发布于 2022-05-07 08:11:41

我不确定你的用例为什么要使用火喉,但如果你想使用它,那么它可以在以下条件下工作。

  1. 将缓冲区大小增加到350 MB,而不是50 MB。
  2. 将时间增加到7分钟

这样,您将得到大小为350 MB的整个文件卡盘,然后可以触发lambda,将其转换为JSON。

无论如何,您正在等待6-7分钟才能得到350 MB数据的传输,因此使其具有350 MB的缓冲区大小和7分钟的时间与性能上是一样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44970023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档