View a markdown version of this page

Amazon EMR データ品質 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EMR データ品質

AWS Glue Data Quality を搭載した Amazon EMR Data Quality を使用すると、Amazon EMR Spark ワークロードが読み書きするデータの品質を、Spark アプリケーションを離れることなく測定およびモニタリングできます。Amazon EMR Data Quality は、 AWS Glue Data Quality と同じオープンソースの Deequ エンジンを使用します。Amazon EMR の Apache Spark (emr-spark-8.1.0) の AWS ランタイムから、EvaluateDataQualitySpark スクリプトに変換を追加することで、Amazon EMR Spark アプリケーション内でデータ品質を直接評価できます。変換は、DataFrame に対して宣言型ルールセットを実行し、処理中のルールごとの結果を返します。これにより、アプリケーションは結果に対応できます (たとえば、ルールが失敗した場合にダウンストリーム書き込みを中止するなど)。各評価は AWS Glue Data Quality にも発行されるため、実行の履歴を確認し、 Glue ETL および AWS AWS Glue Data Catalog の実行とともにアラートを送信できます。

Amazon EMR Data Quality を使用するには、Spark アプリケーションと Data Quality Definition Language (DQDL) で記述されたルールセットが必要です。既存の Spark ワークフロー以外にプログラミングは必要ありません。

Amazon EMR Data Quality は、EC2 上の Amazon EMR、EKS 上の Amazon EMR、Amazon EMR Serverless の 3 つの Amazon EMR デプロイモードすべてで使用できます。Apache Spark でのみサポートされています。

Data Quality の仕組み

Amazon EMR Data Quality は Spark 変換です。DataFrame と DQDL ルールセットを渡します。ルールを評価し、結果の DataFrame を返します。各評価は AWS Glue Data Quality にも発行されるため、後で APIs または Glue AWS コンソールを使用して結果をクエリできます。 AWS Glue ETL と AWS Glue Data Catalog は同じストアに発行されるため、Amazon EMR の実行をこれらのエンジンのいずれかの実行と比較できます。

データ品質の期待値は、Data Quality Definition Language (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 は、各評価を Glue Data Quality AWS サービスにも発行します。そこから、次のことができます。

  • Glue Data Quality APIs (GetDataQualityResultV2、ListDataQualityResultsV2、BatchGetDataQualityResultV2)、 AWS CLI、または AWS Glue AWS コンソールを使用して、履歴結果をクエリします。

  • アプリケーションが を設定するときに検証した AWS AWS Glue データカタログテーブルの Glue コンソールで実行を表示しますpublishToDataCatalogTarget。実行は、指定されたデータベースとテーブルのデータ品質タブに、同じテーブルをターゲットとする AWS Glue ETL 実行とともに表示されます。

  • 各実行によって生成された統計の時系列にわたって異常検出を有効にします。

結果は Glue Data Quality AWS で使用されるのと同じストアに発行できるため、コンピューティングエンジン間で実行を関連付けることができます。EvaluationContext (変換に渡す文字列識別子) を共有する実行は、Amazon EMR Spark アプリケーションか Glue ETL AWS ジョブかに関係なく、コンソールと異常検出トレーニングで単一の論理データセットとして表示されます。

概念と用語

以下の用語は、この章全体および AWS Glue Data Quality APIsとコンソールに表示されます。

ルール

データセットに関する単一の宣言的アサーション。DQDL で記述されます。例えば、RowCount > 1000、IsUnique "order_id" です。各ルールは、Passed、Failed、または に評価されますError。

ルールセット

への 1 回の呼び出しで一緒に評価されるルールの名前付きコレクションEvaluateDataQuality。

analyzer

合格または不合格の結果をアサートせずにデータセットに対して計算される統計。例: Mean "order_total"。シードルールのしきい値を分析し、異常検出モデルをトレーニングします。「アナライザー」を参照してください。

データ品質スコア

特定の実行で渡されたルールセット内のルールの割合。 として計算されますrules passed / (rules passed + rules failed)。エラーと観測値がスコアに寄与しないルール。スコアは Glue Data Quality APIs AWS によって返され、アプリケーションが を設定するとpublishToDataCatalogTarget、属性カタログテーブルのデータ品質タブの Glue AWS コンソールに表示されます。

監視結果

異常検出によって予測範囲外としてフラグ付けされた値。観測値はデータ品質スコアを下げません。「異常検出」を参照してください。

EvaluationContext

コンピューティングエンジン間で同じ論理データセットをグループ化する文字列識別子。EvaluationContext 同じ異常検出モデルを共有し、 Glue AWS コンソールに一緒に表示される を実行します。「Amazon EMR と Glue AWS 間での実行の比較」を参照してください。

配信

EvaluateDataQuality 実行の結果を Glue Data Quality AWS サービスに書き込むステップ。後で Glue Data Quality APIsと AWS Glue AWS コンソールから読み取ることができます。発行はデフォルトで有効になっており、 の enableDataQualityResultsPublishingキーによって制御されますpublishing_options。各パブリッシュはEvaluationContext、異常検出とクロスエンジン比較が実行をグループ化するために使用する識別子である によってキーされます。アプリケーションが も設定するとpublishToDataCatalogTarget、実行はカタログテーブルに属性付けられ、Glue AWS コンソールのそのテーブルのデータ品質タブに表示されます。

DQDL

Data Quality 定義言語。Data Quality ルールセットの作成に使用される宣言言語です。「ルール評価と DQDL」を参照してください。

パイプラインで検証する場所

Spark スクリプトのEvaluateDataQuality任意の場所で を呼び出すことができます。3 つの一般的なパターンは次のとおりです。

  • 事前検証。読み取り直後に raw 入力を評価します。これを使用して、アプリケーションの残りの部分にコンピューティングを使用する前に、アップストリームの問題 (ファイル、スキーマドリフト、空のテーブルの欠落) で迅速に失敗します。

  • インライン検証。変換間の中間 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/")

制限

  • 1 つのルールセットには、最大 2,000 個のルールを含めることができます。

  • ルールセットのシリアル化された DQDL ソースは 65 KB 以下である必要があります。

  • Data Quality は、ルールまたはアナライザーを作成するときに統計を収集します。これらの統計の保存にはコストはかかりません。ただし、アカウントあたりの統計は 100,000 に制限されており、これらの統計は最大 2 年間保持されます。

  • Data Quality は、Amazon EMR の Apache Spark アプリケーションでのみサポートされています。Amazon EMR でサポートされている Hive、Trino、Flink、またはその他の非 Spark エンジンでは実行されません。