View a markdown version of this page

Qualità dei dati di Amazon EMR - 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à.

Qualità dei dati di Amazon EMR

Amazon EMR Data Quality, basato su AWS Glue Data Quality, ti consente di misurare e monitorare la qualità dei dati che i tuoi carichi di lavoro EMR Serverless Spark leggono e scrivono senza uscire dall'applicazione Spark. Questa pagina descrive i prerequisiti e la procedura dettagliata di EMR Serverless. Per concetti, API, monitoraggio e risoluzione dei problemi, consulta Amazon EMR Data Quality nella Amazon EMR Management Guide.

Prerequisiti

Amazon EMR Data Quality è installato per impostazione predefinita nelle versioni di Amazon EMR emr-spark-8.1.0 e successive. Sono supportati solo i carichi di lavoro Apache Spark.

Il ruolo di job runtime IAM assunto dall'applicazione EMR Serverless (passato tramite --execution-role-arn onstart-job-run) 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. Vedi Recupero di un set di regole salvato dal AWS Glue Data Catalog.

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

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

Esegui la tua prima valutazione

  1. Crea un'applicazione EMR Serverless. Usa release emr-spark-8.1.0 o versioni successive. Crea un'applicazione Spark e allega un ruolo lavorativo con le autorizzazioni elencate in. Prerequisiti

    Ad esempio, per creare un'applicazione Spark, esegui:

    aws emr-serverless create-application \ --name My_Spark_DataQuality_Application \ --release-label emr-spark-8.1.0 \ --type SPARK
  2. Definite un set di regole e valutatelo. 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 il job run. Inviate lo script come processo eseguito sulla vostra applicazione.

    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'esecuzione del lavoro, elenca l'esecuzione e recuperane 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.

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

Scopri di più su Amazon EMR Data Quality

Per il riferimento completo, consulta i seguenti argomenti nella Amazon EMR Management Guide: