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
-
Crea un cluster o un'applicazione Amazon EMR. Usa release
emr-spark-8.1.0o versione successiva su Amazon EMR su EC2, Amazon EMR su EKS o Amazon EMR Serverless. Allega un ruolo con le autorizzazioni elencate in. autorizzazioni IAMAd 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 -
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)resultsDataFrame Contiene una riga per regola con le seguenti colonne:,, e.RuleOutcomeFailureReasonEvaluatedMetricsLe righe con unOutcomeofFailedincludono il valore osservato inFailureReason. -
Invia la domanda. Invia lo script nello stesso modo in cui invii qualsiasi altra applicazione Spark per la tua modalità di distribuzione Amazon EMR.
-
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
publishToDataCatalogTargetcon unDatabaseNameandTableName, 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
EvaluationContextquello utilizzato dall'applicazione (ad esempio,orders_daily) a.ListDataQualityStatisticsQuando l'applicazione legge da una tabella del AWS Glue Data Catalog, puoi anche filtrarelist-data-quality-results-v2perDataSource.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.
-
Crea il set di regole in AWS Glue. Crea e salva il set di regole usando uno dei seguenti percorsi:
-
Nella console AWS Glue. Vedi Creazione di un nuovo set di regole nella AWS Glue Developer Guide.
-
Tramite l'API AWS Glue Data Quality. Vedi
CreateDataQualityRulesetnel riferimento all'API AWS Glue.
-
-
Concedi l'accesso al ruolo del carico di lavoro Spark. Aggiungilo
glue:GetDataQualityRulesetal ruolo che assume la tua applicazione Amazon EMR Spark. -
Scarica il set di regole nello script Spark. Chiama
GetDataQualityRulesetcon boto3, estrai ilRulesetcampo e passa la stringa DQDL a.EvaluateDataQuality.applyimport 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, }, )