AWS Glue ETL 작업에 대한 Amazon CloudWatch 지표를 활성화한 후에도 지표를 볼 수 없는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 8월 20일

AWS Glue 추출, 변환, 로드 작업에 대한 작업 지표를 생성하는 옵션을 활성화했습니다. 하지만 Amazon CloudWatch에서 작업 지표를 볼 수 없습니다.

간략한 설명

AWS Glue는 30초마다 CloudWatch에 지표를 전송하며, CloudWatch 콘솔 대시보드는 매분마다 해당 지표를 표시하도록 구성됩니다. AWS Glue 지표는 이전에 보고된 값의 델타 값을 나타냅니다. 지표 대시보드에서는 30초 값을 집계하여 최종적인 값을 얻습니다. 작업 스크립트에서 GlueContext를 초기화하면 작업에 대한 작업 지표가 활성화됩니다. 지표는 Apache Spark 태스크가 끝날 때만 업데이트됩니다. 작업 지표는 완료된 모든 Spark 태스크의 집계 값을 나타냅니다.

해결 방법

AWS Glue 작업의 실행 시간 증가: CloudWatch 지표는 30초마다 보고됩니다. 따라서 작업 실행 시간이 30초 미만이면 작업 지표가 CloudWatch로 전송되지 않습니다. AWS Glue는 Spark의 지표를 사용하고, Spark는 지표를 게시하는 데 DropWizard 지표 라이브러리를 사용합니다. AWS Glue 지표를 얻으려면 작업을 30초 이상 실행해야 합니다. 더 많은 데이터를 처리하도록 작업을 업데이트하면 작업 실행 시간이 늘어날 수 있습니다. 그러나 임시 해결 방법을 사용하여 작업 지표를 볼 수 있습니다. 작업에 함수 time.sleep()을 포함시켜 AWS Glue 작업의 실행 시간을 늘릴 수 있습니다. 사용 사례에 따라 작업 코드의 시작 또는 끝에 time.sleep()을 포함할 수 있습니다.

중요: time.sleep() 함수를 사용하는 것은 코딩 모범 사례가 아닙니다.

Python의 경우:

import time
time.sleep(30)

Scala의 경우:

Thread.sleep(30)

작업이 Spark 태스크를 완료했는지 확인: Spark 태스크가 완료된 후 작업 지표가 보고됩니다. 따라서 작업에 대한 Spark 태스크가 완료되고 작업이 실패하지 않았는지 점검하고 확인합니다.

작업 스크립트에서 GlueConText가 초기화되었는지 확인: 작업 스크립트의 GlueContext 클래스를 사용하면 CloudWatch에 지표를 작성할 수 있습니다. DataFrame만 사용하고 DynamicFrame을 사용하지 않는 사용자 지정 스크립트를 사용하는 경우 GlueContext 클래스가 초기화되지 않을 수 있습니다. 이로 인해 지표가 CloudWatch에 기록되지 않을 수 있습니다. 사용자 지정 스크립트를 사용하는 경우 작업을 업데이트하여 GlueContext 클래스를 초기화해야 합니다.

AWS Glue IAM 역할에 필요한 권한이 있는지 확인: ETL 작업에 연결된 IAM 역할에 CloudWatch에서 지표를 생성할 수 있는 cloudwatch:PutMetricData 권한이 있는지 점검하고 확인합니다. 사용자 지정 역할을 사용하는 경우 해당 역할에 작업 지표를 CloudWatch에 쓸 수 있는 권한이 있어야 합니다.
참고: AWS 관리형 정책 AWSGlueServiceRole을 사용하여 권한을 관리하는 것이 모범 사례입니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?