我正在嘗試使用 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 載入到 Snowflake,並以 1 by 1 的順序呼叫 lambda的詳細內容。更多資訊請關注PHP中文網其他相關文章!