>  기사  >  백엔드 개발  >  S3의 데이터를 Snowflake로 로드하고 람다를 1x1 순서로 호출합니다.

S3의 데이터를 Snowflake로 로드하고 람다를 1x1 순서로 호출합니다.

王林
王林앞으로
2024-02-09 11:00:041173검색

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

질문 내용

람다를 사용하여 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 호출으로 인해 여러 번 재시도한 후 시간 초과 가 발생할 수 있다는 점을 약간 걱정합니다. 그렇다면 다음을 수행해야 합니다.

  • 이벤트를 Amazon SQS 대기열(Lambda 함수에 직접 보내는 대신)으로 보내도록 S3를 구성하고
  • SQS 대기열에서 메시지를 가져오도록 Lambda를 구성
이렇게 하면 대용량 파일 백로그로 인해 (잠재적으로) 시간 초과되는 대신 메시지가 안전하게 대기열에 추가됩니다.

위 내용은 S3의 데이터를 Snowflake로 로드하고 람다를 1x1 순서로 호출합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제