翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EMR データ品質
AWS Glue Data Quality を搭載した Amazon EMR Data Quality を使用すると、EMR Serverless Spark ワークロードが読み書きするデータの品質を、Spark アプリケーションを離れることなく測定およびモニタリングできます。このページでは、EMR Serverless の前提条件とチュートリアルについて説明します。概念、APIs「Amazon EMR 管理ガイド」の「Amazon EMR Data Quality」を参照してください。
前提条件
Amazon EMR Data Quality は、Amazon EMR リリース emr-spark-8.1.0 以降でデフォルトでインストールされます。Apache Spark ワークロードのみがサポートされています。
EMR Serverless アプリケーションが引き受ける ( --execution-role-arnの を介して渡されるstart-job-run) IAM ジョブランタイムロールは、Data Quality を実行して結果を公開するために、次のアクセス許可を付与する必要があります。
| アクション | 必要な場合 |
|---|---|
glue:PublishDataQuality |
各評価を Glue Data Quality AWS に発行して、履歴の表示、実行の比較、異常検出のフィードを行うことができます。発行はデフォルトでオン (enableDataQualityResultsPublishing は True) になっているため、 オプションを に設定して明示的にオプトアウトしない限り、このアクセス許可を付与しますFalse。 |
glue:AccessDataQualityRuntimeConfiguration |
ライブラリが発行を初期化するときに、サービスから発行設定を取得するには。発行が有効になっているたびに必要です。有効にしないと、ライブラリは実行の発行をサイレントに無効にします。 |
cloudwatch:PutMetricData |
ダッシュボードとアラームについて、実行ごとの合格と不合格のメトリクスを Amazon CloudWatch に出力するには。を enableDataQualityCloudWatchMetricsに設定した場合にのみ必要ですTrue。 |
glue:GetTable, glue:GetDatabase |
カタログテーブルメタデータを読み取るには。入力 DataFrame が AWS Glue データカタログテーブルから読み取られるとき、またはサービスが実行を特定のカタログテーブルに属性publishToDataCatalogTarget付けできるようにアプリケーションが渡すときに必要です。 |
glue:GetDataQualityRuleset |
AWS Glue データカタログから保存されたルールセットを取得するには。Spark スクリプトが DQDL インラインを定義するのではなく、カタログからルールセットをロードする場合にのみ必要です。「 AWS Glue データカタログから保存されたルールセットを取得する」を参照してください。 |
次のインラインポリシーは、EMR Serverless Spark アプリケーションから Data Quality 結果を発行するために必要な最小限のアクセス許可のセットを付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataQuality", "Effect": "Allow", "Action": [ "glue:PublishDataQuality", "glue:AccessDataQualityRuntimeConfiguration" ], "Resource": "*" } ] }
最初の評価を実行する
-
EMR Serverless アプリケーションを作成します。リリース
emr-spark-8.1.0以降を使用します。Spark アプリケーションを作成し、 に記載されているアクセス許可を持つジョブロールをアタッチします前提条件。たとえば、Spark アプリケーションを作成するには、以下を実行します。
aws emr-serverless create-application \ --name My_Spark_DataQuality_Application \ --release-label emr-spark-8.1.0 \ --type SPARK -
ルールセットを定義して評価します。次の PySpark スクリプトは、DQDL のルールセットを定義し、DataFrame に対して評価して、ルールごとの結果を出力します。
from pyspark.sql import SparkSession from awsdataquality.transforms import EvaluateDataQuality spark = SparkSession.builder.appName("dq-example").getOrCreate() df = spark.read.parquet("s3://amzn-s3-demo-bucket/orders/") ruleset = """ Rules = [ RowCount > 1000, IsComplete "order_id", IsUnique "order_id", ColumnValues "status" in ["PLACED", "SHIPPED", "CANCELED"], Mean "order_total" between 10 and 500 ] """ results = EvaluateDataQuality.apply( frame=df, ruleset=ruleset, publishing_options={ "dataQualityEvaluationContext": "orders_daily", "enableDataQualityResultsPublishing": True, }, ) results.show(truncate=False)resultsDataFrame には、、Rule、Outcome、FailureReasonおよび の列を含むルールごとに 1 行が含まれますEvaluatedMetrics。がOutcomeの行には、 の観測値Failedが含まれますFailureReason。 -
ジョブ実行を送信します。スクリプトをアプリケーションに対するジョブ実行として送信します。
aws emr-serverless start-job-run \ --application-id<application-id>\ --execution-role-arn<execution-role-arn>\ --name dq-example \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://amzn-s3-demo-bucket/scripts/dq_example.py" } }' -
結果を取得します。ジョブの実行が完了したら、実行を一覧表示し、 Glue Data Quality APIsまたは AWS を使用してその詳細を取得します AWS CLI。アプリケーションで
publishToDataCatalogTargetDatabaseNameと も設定されている場合TableName、実行は Glue AWS コンソールのカタログテーブルのデータ品質タブに表示されます。aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id<result-id>
Amazon EMR Data Quality の詳細
完全なリファレンスについては、Amazon EMR 管理ガイドの以下のトピックを参照してください。