람다를 사용하여 S3 버킷 폴더의 데이터를 눈송이 테이블로 로드하려고 합니다. 내 파일이 수집되는 S3 트리거를 설정하고 람다와 눈송이 간의 통합을 형성하여 내 s3에 들어오는 파일을 눈송이 테이블에 로드했습니다.
문제는 S3 폴더에 1000개의 파일을 가져오고 있고 눈송이와 람다 사이에 정체가 발생하고 있다는 것입니다. 1000개의 파일이 S3 버킷에 수집될 때 람다가 한 번에 하나의 파일을 처리해야 하는 방법을 찾고 있습니다. 첫 번째 파일을 로드한 후 다음 파일만 순차적으로 처리합니다. 예: Snowflake로부터 확인을 받거나 이에 대한 확인을 받습니다.
AWS Lambda 함수가 예약된 동시성 - AWS Lambda을 갖도록 구성할 수 있습니다.
설정에 따라 Reserved Concurrency = 1
한 번에 하나의 Lambda 함수 인스턴스만 실행됩니다. Snowflake 구성에 따라 이를 2개 또는 3개로 늘려 Snowflake에 부담을 주지 않고 파일을 더 빠르게 처리할 수 있습니다.
함수에 전달되는 최대 이벤트 수인 배치 크기를 구성할 수도 있습니다. S3가 동일한 Lambda 인스턴스에 여러 파일을 보내는 경우 코드는 이벤트를 반복하고 각 호출에서 여러 파일을 처리할 수 있습니다.
저는 많은 객체를 생성하고 Lambda 함수가 동시성 수 1로 제한되는 경우 Lambda에 대한 S3 호출으로 인해 여러 번 재시도한 후 시간 초과 가 발생할 수 있다는 점을 약간 걱정합니다. 그렇다면 다음을 수행해야 합니다.
위 내용은 S3의 데이터를 Snowflake로 로드하고 람다를 1x1 순서로 호출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!