모범 사례
AWS Glue를 사용하여 개발할 때는 다음 모범 사례를 고려하세요.
먼저 로컬에서 개발하세요
ETL 작업을 구축하는 동안 비용과 시간을 절약하려면 먼저 코드와 비즈니스 로직을 로컬에서 테스트하세요. 쉘과 통합 개발 환경(IDE) 모두에서 AWS Glue ETL 작업을 테스트하는 데 도움이 되는 Docker 컨테이너를 설정하는 방법에 대한 지침은 로컬에서 Docker 컨테이너를 사용하여 AWS Glue 작업을 개발하고 테스트하기
AWS Glue 대화형 세션 사용
AWS Glue 대화형 세션은 PyCharm, IntelliJ, VS Code와 같은 노트북 및 IDE와 통합되는 오픈 소스 Jupyter 커널과 결합된 서버리스 Spark 백엔드를 제공합니다. 대화형 세션을 사용하면 원하는 AWS Glue Spark 백엔드와 IDE를 사용하여 실제 데이터세트에서 코드를 테스트할 수 있습니다. 시작하려면 AWS Glue 대화형 세션 시작하기의 단계를 따르세요.
파티셔닝을 사용하여 필요한 항목을 정확히 쿼리하세요.
파티셔닝이란 특정 열이나 키를 기준으로 큰 데이터세트를 작은 파티션으로 나누는 것을 말합니다. 데이터를 파티셔닝할 때 AWS Glue는 전체 데이터세트를 스캔하는 대신 특정 파티셔닝 기준을 충족하는 데이터 하위 집합을 선택적으로 스캔할 수 있습니다. 따라서 특히 대규모 데이터세트로 작업할 때 쿼리 처리가 더 빠르고 효율적입니다.
데이터를 대상으로 실행할 쿼리를 기준으로 데이터를 파티셔닝합니다. 예를 들어 대부분의 쿼리가 특정 열을 필터링하는 경우 해당 열을 파티셔닝하면 쿼리 시간을 크게 줄일 수 있습니다. 데이터 파티셔닝에 대해 자세히 알아보려면 AWS Glue에서 파티셔닝된 데이터 작업
메모리 관리 최적화
ETL 작업은 메모리 내 처리에 최적화된 Apache Spark 엔진에서 실행되므로 AWS Glue ETL 작업을 작성할 때는 메모리 관리가 매우 중요합니다. AWS Glue의 메모리 관리 최적화
-
AWS Glue의 Amazon S3 목록 구현
-
그룹화
-
관련 없는 Amazon S3 경로 및 스토리지 클래스 제외
-
Spark 및 AWS Glue 읽기 파티셔닝
-
Bulk inserts
-
조인 최적화
-
PySpark 사용자 정의 함수(UDF)
-
증분 처리
효율적인 데이터 스토리지 형식 사용
ETL 작업을 작성할 때는 변환된 데이터를 열 기반 데이터 형식으로 출력하는 것이 좋습니다. Apache Parquet 및 ORC와 같은 컬럼형 데이터 형식이 빅 데이터 스토리지 및 분석에 일반적으로 사용됩니다. 이들은 데이터 이동을 최소화하고 압축을 극대화하도록 설계되었습니다. 또한 이러한 형식을 사용하면 데이터를 여러 판독기로 분할하여 쿼리 처리 중에 병렬 읽기를 늘릴 수 있습니다.
또한 데이터를 압축하면 저장되는 데이터의 양을 줄이는 데 도움이 되며 읽기/쓰기 작업 성능이 향상됩니다. AWS Glue는 기본적으로 여러 압축 형식을 지원합니다. 효율적인 데이터 스토리지 및 압축에 대한 자세한 내용은 성능 효율적인 데이터 파이프라인 구축을 참조하세요.
적절한 규모 조정 유형 사용
AWS Glue의 수평적 규모 조정(작업자 수 변경) 또는 수직적 규모 조정(작업자 유형 변경) 시기를 이해하는 것은 ETL 작업의 비용 및 성능에 영향을 미칠 수 있기 때문에 중요합니다.
일반적으로 변환이 복잡한 ETL 작업은 메모리를 더 많이 사용하며 수직적 규모 조정(예: G.1X에서 G.2X 작업자 유형으로 이동)이 필요합니다. 대량의 데이터가 포함된 컴퓨팅 집약적인 ETL 작업의 경우 AWS Glue는 여러 노드에서 데이터를 병렬로 처리하도록 설계되었으므로 수평 규모 조정을 권장합니다.
Amazon CloudWatch에서 AWS Glue 작업 지표를 면밀히 모니터링하면 성능 병목 현상의 원인이 메모리 또는 컴퓨팅 부족으로 인한 것인지 판단하는 데 도움이 됩니다. AWS Glue 작업자 유형 및 규모 조정에 대한 자세한 내용은 AWS Glue를 사용한 Apache Spark 작업 규모 조정 및 데이터 파티셔닝 모범 사례