View a markdown version of this page

Amazon EMR 데이터 품질 - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EMR 데이터 품질

AWS Glue Data Quality로 구동되는 Amazon EMR Data Quality를 사용하면 Spark 애플리케이션을 떠나지 않고도 Amazon EMR Spark 워크로드가 읽고 쓰는 데이터의 품질을 측정하고 모니터링할 수 있습니다. Amazon EMR Data Quality는 AWS Glue Data Quality와 동일한 오픈 소스 Deequ 엔진을 사용합니다. Amazon EMR의 Apache Spark용 AWS 런타임(emr-spark-8.1.0)부터 Spark 스크립트에 EvaluateDataQuality 변환을 추가하여 Amazon EMR Spark 애플리케이션 내에서 직접 데이터 품질을 평가할 수 있습니다. 변환은 DataFrame에 대해 선언적 규칙 세트를 실행하고 진행 중인 규칙별 결과를 반환하므로 애플리케이션이 결과에 따라 작업할 수 있습니다(예: 규칙이 실패할 때 다운스트림 쓰기 중단). 또한 각 평가는 AWS Glue Data Quality에 게시되므로 실행 기록을 검토하고 Glue ETL 및 AWS Glue AWS Data Catalog의 실행과 함께 이를 알릴 수 있습니다.

Amazon EMR Data Quality를 사용하려면 Spark 애플리케이션과 데이터 품질 정의 언어(DQDL)로 작성된 규칙 세트가 필요합니다. 기존 Spark 워크플로 외에 다른 프로그래밍은 필요하지 않습니다.

Amazon EMR Data Quality는 Amazon EMR on EC2, Amazon EMR on EKS, Amazon EMR Serverless의 세 가지 Amazon EMR 배포 모드 모두에서 사용할 수 있습니다. Apache Spark에서만 지원됩니다.

Data Quality 작동 방식

Amazon EMR Data Quality는 Spark 변환입니다. DataFrame과 DQDL 규칙 세트를 전달하면 규칙을 평가하고 결과의 DataFrame을 반환합니다. 각 평가는 Glue Data Quality에도 게시되므로 나중에 APIs 또는 AWS AWS Glue 콘솔을 통해 결과를 쿼리할 수 있습니다. AWS Glue ETL 및 AWS Glue Data Catalog는 동일한 저장소에 게시되므로 Amazon EMR 실행을 해당 엔진 중 하나의 실행과 비교할 수 있습니다.

데이터 품질 기대치를 데이터 품질 정의 언어(DQDL) 참조로 작성된 선언적 규칙 세트로 정의합니다. 규칙 세트는 데이터 세트의 예상 속성을 설명하는 규칙 세트입니다. 예를 들어 다음 규칙 세트는 테이블에 100개 이상의 행이 있는지, 해당 customer_id 열이 완전하고 고유한지, 고정된 값 집합에서 country 열이 그려지는지 확인합니다.

Rules = [ RowCount > 100, IsComplete "customer_id", IsUnique "customer_id", ColumnValues "country" in ["US", "CA", "MX"] ]

런타임 시 EvaluateDataQuality 변환은 DataFrame을 읽고, Glue Data Quality 및 AWS Glue Data AWS Catalog에서 사용하는 것과 동일한 Deequ 엔진을 사용하여 각 규칙을 평가하고, 모든 규칙에 대한 결과(Passed, Failed또는 Error)를 반환합니다. 실패한 규칙에는 관찰된 값이 포함되므로 애플리케이션을 다시 실행하지 않고도 분류할 수 있습니다. 그 결과 애플리케이션이 분기, 로그 또는 지속할 수 있는 Spark DataFrame이 생성됩니다.

또한 Data Quality는 각 평가를 AWS Glue Data Quality 서비스에 게시합니다. 여기에서 다음을 수행할 수 있습니다.

  • AWS Glue Data Quality APIs(GetDataQualityResultV2, ListDataQualityResultsV2, BatchGetDataQualityResultV2), AWS CLI또는 AWS Glue 콘솔을 사용하여 과거 결과를 쿼리합니다.

  • 애플리케이션이 AWS 를 설정할 때 검증한 AWS Glue 데이터 카탈로그 테이블 아래의 Glue 콘솔에서 실행을 봅니다publishToDataCatalogTarget. 실행은 동일한 테이블을 대상으로 하는 AWS Glue ETL 실행과 함께 지정된 데이터베이스 및 테이블의 데이터 품질 탭에 나타납니다.

  • 각 실행에서 생성된 일련의 통계에 대해 이상 탐지를 활성화합니다.

AWS Glue Data Quality에서 사용하는 동일한 저장소에 결과를 게시할 수 있으므로 컴퓨팅 엔진 간에 실행을 상호 연관시킬 수 있습니다. EvaluationContext (변환에 전달하는 문자열 식별자)를 공유하는 실행은 Amazon EMR Spark 애플리케이션 또는 AWS Glue ETL 작업에서 왔는지 여부에 관계없이 콘솔 및 이상 탐지 훈련에서 단일 논리적 데이터 세트로 표시됩니다.

개념 및 용어

다음 용어는이 장 전체에서 AWS Glue Data Quality APIs 및 콘솔에 표시됩니다.

규칙

DQDL로 작성된 데이터 세트에 대한 단일 선언적 어설션입니다. 예: RowCount > 1000 또는 IsUnique "order_id". 각 규칙은 Passed, Failed또는 로 평가됩니다Error.

규칙 세트

에 대한 단일 호출에서 함께 평가되는 명명된 규칙 모음입니다EvaluateDataQuality.

Analyzer

와 같이 통과 또는 실패 결과를 어설션하지 않고 데이터 세트에 대해 계산되는 통계입니다Mean "order_total". 시드 규칙 임계값을 분석하고 이상 탐지 모델을 훈련합니다. 분석기 섹션을 참조하세요.

데이터 품질 점수

지정된 실행에서 전달된 규칙 세트의 규칙 백분율로, 로 계산됩니다rules passed / (rules passed + rules failed). 오류 및 관측치가 점수에 기여하지 않는 규칙입니다. 점수는 AWS Glue Data Quality APIs에서 반환되며, 애플리케이션이를 설정하면 AWS Glue 콘솔publishToDataCatalogTarget의 어트리뷰션된 카탈로그 테이블의 데이터 품질 탭에 표시됩니다.

관측치

이상 탐지에 의해 예측 범위를 벗어나는 것으로 플래그가 지정된 값입니다. 관찰은 데이터 품질 점수를 줄이지 않습니다. 이상 탐지 섹션을 참조하세요.

EvaluationContext

컴퓨팅 엔진 간에 동일한 논리적 데이터 세트의 실행을 그룹화하는 문자열 식별자입니다. EvaluationContext 피드를 동일한 이상 탐지 모델과 공유하고 AWS Glue 콘솔에 함께 나타나는를 실행합니다. Amazon EMR 및 AWS Glue에서 실행 비교 섹션을 참조하세요.

게시

실행 결과를 EvaluateDataQuality AWS Glue Data Quality 서비스에 기록하여 나중에 Glue Data Quality APIs 및 AWS Glue 콘솔을 통해 읽을 수 있도록 AWS 하는 단계입니다. 게시는 기본적으로 활성화되어 있으며의 enableDataQualityResultsPublishing 키로 제어됩니다publishing_options. 각 게시는 이상 탐지 및 교차 엔진 비교가 그룹 실행에 사용하는 식별자EvaluationContext인에 의해 입력됩니다. 애플리케이션이 도 설정하면 publishToDataCatalogTarget실행은 카탈로그 테이블에 귀속되고 AWS Glue 콘솔에서 해당 테이블의 데이터 품질 탭에 나타납니다.

DQDL

데이터 품질 정의 언어, 데이터 품질 규칙 세트를 작성하는 데 사용되는 선언적 언어입니다. 규칙 평가 및 DQDL 섹션을 참조하세요.

파이프라인에서 검증할 위치

Spark 스크립트의 EvaluateDataQuality 아무 곳에서나 호출할 수 있습니다. 세 가지 일반적인 패턴은 다음과 같습니다.

  • 사전 검증. 읽기 직후 원시 입력을 평가합니다. 이를 사용하여 애플리케이션의 나머지 부분에 컴퓨팅을 소비하기 전에 업스트림 문제(파일 누락, 스키마 드리프트, 빈 테이블)에서 빠르게 실패합니다.

  • 인라인 검증. 변환 간 중간 DataFrame을 평가합니다. 이를 사용하여 특정 단계의 출력을 확인합니다(예: 조인 또는 집계 후).

  • 검증 후. 싱크에 쓰기 전에 최종 DataFrame을 평가합니다. 이를 사용하여 결과에 대한 다운스트림 게시를 게이트합니다. 즉, Outcome 열에 브랜치하고 규칙에 실패한 경우 쓰기를 중단합니다.

다음 PySpark 코드 조각은 검증 후 평가 결과에 대한 쓰기를 게이트합니다.

results = EvaluateDataQuality.apply( frame=final_df, ruleset=ruleset, publishing_options={ "dataQualityEvaluationContext": "orders_daily", "enableDataQualityResultsPublishing": True, }, ) failed = results.filter("Outcome in ('Failed', 'Error')").count() if failed > 0: raise RuntimeError(f"{failed} data quality rules failed or errored; aborting write") final_df.write.mode("overwrite").parquet("s3://amzn-s3-demo-bucket/orders_curated/")

한도

  • 단일 규칙 세트에는 최대 2,000개의 규칙이 포함될 수 있습니다.

  • 규칙 세트의 직렬화된 DQDL 소스는 65 KB 이하여야 합니다.

  • Data Quality는 규칙 또는 분석기를 생성할 때 통계를 수집합니다. 이러한 통계를 저장하는 데는 비용이 들지 않습니다. 그러나 계정당 통계는 100,000개로 제한되며 이러한 통계는 최대 2년 동안 보존됩니다.

  • Data Quality는 Amazon EMR의 Apache Spark 애플리케이션에서만 지원됩니다. Hive, Trino, Flink 또는 Amazon EMR에서 지원하는 기타 비Spark 엔진에서는 실행되지 않습니다.