View a markdown version of this page

Guida introduttiva ad Amazon EMR Data Quality - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Guida introduttiva ad Amazon EMR Data Quality

Questa sezione illustra come eseguire la prima valutazione completa della qualità dei dati di Amazon EMR: le autorizzazioni necessarie alla tua applicazione Amazon EMR Spark e una procedura dettagliata che invia un set di regole DQDL rispetto a uno su Amazon EMR e recupera il risultato. DataFrame

Prerequisiti

autorizzazioni IAM

Il ruolo IAM assunto dal carico di lavoro Amazon EMR Spark (il profilo dell'istanza EC2 collegato al cluster o un ruolo di runtime per fase) deve concedere le seguenti autorizzazioni per eseguire Data Quality e pubblicare i risultati.

Azione Quando richiesto
glue:PublishDataQuality Pubblicare ogni valutazione su AWS Glue Data Quality in modo da poter visualizzare la cronologia, confrontare le esecuzioni e rilevare le anomalie dei feed. La pubblicazione è attivata per impostazione predefinita (enableDataQualityResultsPublishingèTrue), quindi concedi questa autorizzazione a meno che non la disattivi esplicitamente impostando l'opzione su. False
glue:AccessDataQualityRuntimeConfiguration Per recuperare la configurazione di pubblicazione dal servizio quando la libreria inizializza la pubblicazione. Richiesto ogni volta che la pubblicazione è abilitata; senza di essa, la libreria disabilita automaticamente la pubblicazione per l'esecuzione.
cloudwatch:PutMetricData Per inviare ad CloudWatch Amazon parametri relativi agli accessi e ai fallimenti per esecuzione per dashboard e allarmi. Richiesto solo quando lo imposti. enableDataQualityCloudWatchMetrics True
glue:GetTable, glue:GetDatabase Per leggere i metadati della tabella del catalogo. Richiesto quando l'input DataFrame viene letto da una tabella di AWS Glue Data Catalog o quando l'applicazione passa publishToDataCatalogTarget in modo che il servizio possa attribuire l'esecuzione a una tabella di catalogo specifica.
glue:GetDataQualityRuleset Per recuperare un set di regole salvato dal AWS Glue Data Catalog. Richiesto solo quando lo script Spark carica un set di regole dal catalogo invece di definire DQDL in linea. Consulta Recupero di un set di regole salvato da AWS Catalogo dati Glue.

La seguente politica in linea concede il set minimo di autorizzazioni necessarie per pubblicare i risultati della qualità dei dati da un'applicazione Amazon EMR Spark.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataQuality", "Effect": "Allow", "Action": [ "glue:PublishDataQuality", "glue:AccessDataQualityRuntimeConfiguration" ], "Resource": "*" } ] }

Esegui la tua prima valutazione

  1. Crea un cluster o un'applicazione Amazon EMR. Usa release emr-spark-8.1.0 o versione successiva su Amazon EMR su EC2, Amazon EMR su EKS o Amazon EMR Serverless. Allega un ruolo con le autorizzazioni elencate in. autorizzazioni IAM

    Ad esempio, per creare un Amazon EMR su cluster EC2, esegui:

    aws emr create-cluster --release-label emr-spark-8.1.0 \ --applications Name=Spark \ --region us-east-1 \ --name My_Spark_DataQuality_Cluster \ --log-uri s3://amzn-s3-demo-bucket/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole_V2 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0
  2. Definisci un set di regole e valutalo. PySpark Lo script seguente definisce un set di regole in DQDL, lo valuta rispetto a e stampa il risultato di ogni regola. 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)

    results DataFrame Contiene una riga per regola con le seguenti colonne:,, e. Rule Outcome FailureReason EvaluatedMetrics Le righe con un Outcome of Failed includono il valore osservato inFailureReason.

  3. Invia la domanda. Invia lo script nello stesso modo in cui invii qualsiasi altra applicazione Spark per la tua modalità di distribuzione Amazon EMR.

    Amazon EMR on EC2
    aws emr add-steps --cluster-id j-1234567890ABC \ --steps Type=Spark,Name="dq-example",ActionOnFailure=CONTINUE,Args=[s3://amzn-s3-demo-bucket/scripts/dq_example.py]
    Amazon EMR on EKS
    aws emr-containers start-job-run \ --virtual-cluster-id <virtual-cluster-id> \ --name dq-example \ --execution-role-arn <execution-role-arn> \ --release-label emr-spark-8.1.0 \ --job-driver '{ "sparkSubmitJobDriver": { "entryPoint": "s3://amzn-s3-demo-bucket/scripts/dq_example.py" } }'
    Amazon EMR Serverless
    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" } }'
  4. Recupera il risultato. Al termine dell'applicazione, elenca l'esecuzione e recupera i dettagli con le API AWS Glue Data Quality o il. AWS CLI Se l'applicazione è impostata anche publishToDataCatalogTarget con un DatabaseName andTableName, l'esecuzione viene visualizzata nella scheda Qualità dei dati di quella tabella del catalogo nella console AWS Glue (vediVisualizzazione dei risultati nella AWS Consolle Glue). Altrimenti, usa l'API o AWS CLI recupera l'esecuzione.

    aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id <result-id>

    Per restringere l'elenco alle esecuzioni di un set di dati specifico, passa EvaluationContext quello utilizzato dall'applicazione (ad esempio,orders_daily) a. ListDataQualityStatistics Quando l'applicazione legge da una tabella del AWS Glue Data Catalog, puoi anche filtrare list-data-quality-results-v2 perDataSource.GlueTable.

Recupero di un set di regole salvato da AWS Catalogo dati Glue

Invece di definire il set di regole in linea in ogni script Spark, puoi creare un set di regole una volta nel AWS Glue Data Catalog e recuperarlo dall'applicazione Amazon EMR Spark in fase di esecuzione. In questo modo puoi creare una versione di un set di regole in un unico posto e condividerla tra carichi di lavoro Amazon EMR Spark, job AWS Glue ETL e valutazioni.

  1. Crea il set di regole in AWS Glue. Crea e salva il set di regole usando uno dei seguenti percorsi:

  2. Concedi l'accesso al ruolo del carico di lavoro Spark. Aggiungilo glue:GetDataQualityRuleset al ruolo che assume la tua applicazione Amazon EMR Spark.

  3. Scarica il set di regole nello script Spark. Chiama GetDataQualityRuleset con boto3, estrai il Ruleset campo e passa la stringa DQDL a. EvaluateDataQuality.apply

    import boto3 from awsdataquality.transforms import EvaluateDataQuality glue = boto3.client("glue") response = glue.get_data_quality_ruleset(Name="orders_quality") ruleset = response["Ruleset"] results = EvaluateDataQuality.apply( frame=df, ruleset=ruleset, publishing_options={ "dataQualityEvaluationContext": "orders_daily", "enableDataQualityResultsPublishing": True, }, )