首頁  >  文章  >  後端開發  >  將資料從 S3 載入到 Snowflake,並以 1 by 1 的順序呼叫 lambda

將資料從 S3 載入到 Snowflake,並以 1 by 1 的順序呼叫 lambda

王林
王林轉載
2024-02-09 11:00:041171瀏覽

将数据从 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刪除