将数据从 S3 加载到 Snowflake,并按 1 by 1 的顺序调用 lambda

王林
发布: 2024-02-09 11:00:04
转载
1169 人浏览过

将数据从 S3 加载到 Snowflake,并按 1 by 1 的顺序调用 lambda

问题内容

我正在尝试使用 lambda 将数据从 S3 存储桶文件夹加载到雪花表。我设置了一个 S3 触发器,其中我的文件被摄取,并在 lambda 和雪花之间形成集成,以将传入文件加载到我的 s3 到雪花表中。

问题是有 1000 个文件被提取到我的 S3 文件夹中,并且在我的雪花和 lambda 之间形成拥塞。我正在寻找一种方法,当 1000 个文件被摄取到我的 S3 存储桶时,lambda 应一次处理一个文件。加载第一个文件后,只有它按顺序处理下一个文件。例如:要么从雪花接收确认,要么在其上接收确认。


正确答案


您可以将 AWS Lambda 函数配置为具有预留并发- AWS Lambda

通过设置 Reserved Concurrency = 1,一次只会运行一个 Lambda 函数实例。根据您的 Snowflake 配置,您可以选择将其增加到 2 或 3,以更快地处理文件,而不会压垮 Snowflake。

您还可以配置批量大小,这是传递给函数的最大事件数。如果 S3 向同一 Lambda 实例发送多个文件,您的代码可以循环遍历事件并在每次调用时处理多个文件。

我只是稍微担心,如果您创建了大量对象,并且 Lambda 函数受到并发数 1 的限制,则 S3 对 Lambda 的调用多次重试后可能会导致超时。如果是这样,您应该:

  • 配置 S3 以将事件发送到 Amazon SQS 队列(而不是直接发送到 Lambda 函数),并且
  • 配置 Lambda 以从 SQS 队列中提取消息

这样,消息将安全地排队,而不是由于大量文件积压而(可能)超时。

以上是将数据从 S3 加载到 Snowflake,并按 1 by 1 的顺序调用 lambda的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!