Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Introducción a Amazon EMR Data Quality
En esta sección, se explica cómo realizar su primera evaluación de calidad de datos de Amazon EMR de principio a fin: los permisos que necesita su aplicación Amazon EMR Spark y un tutorial que presenta un conjunto de reglas de DQDL para un EMR de Amazon y recupera DataFrame el resultado.
Requisitos previos
Permisos de IAM
La función de IAM que asume su carga de trabajo de Amazon EMR Spark (el perfil de instancia EC2 adjunto al clúster o una función de tiempo de ejecución por paso) debe conceder los siguientes permisos para ejecutar Data Quality y publicar los resultados.
| Action | Cuando sea necesario |
|---|---|
glue:PublishDataQuality |
Publicar cada evaluación en AWS Glue Data Quality para que puedas ver el historial, comparar ejecuciones y alimentar la detección de anomalías. La publicación está activada de forma predeterminada (enableDataQualityResultsPublishingesTrue), por lo que debes conceder este permiso a menos que optes por excluirlo explícitamente configurando la opción en. False |
glue:AccessDataQualityRuntimeConfiguration |
Para obtener la configuración de publicación del servicio cuando la biblioteca inicialice la publicación. Se requiere siempre que la publicación esté habilitada; sin ella, la biblioteca inhabilita la publicación de forma silenciosa durante la ejecución. |
cloudwatch:PutMetricData |
Emitir métricas de aprobación y rechazo por ejecución a Amazon CloudWatch para paneles y alarmas. Necesario solo cuando se configura enenableDataQualityCloudWatchMetrics. True |
glue:GetTable,
glue:GetDatabase |
Para leer los metadatos de la tabla de catálogo. Se requiere cuando la entrada DataFrame se lee de una tabla del catálogo de datos de AWS Glue o cuando la aplicación la aprueba publishToDataCatalogTarget para que el servicio pueda atribuir la ejecución a una tabla de catálogo específica. |
glue:GetDataQualityRuleset |
Para obtener un conjunto de reglas guardado del catálogo de datos de AWS Glue. Solo se requiere cuando el script de Spark carga un conjunto de reglas del catálogo en lugar de definir el DQDL en línea. Consulte Obtener un conjunto de reglas guardado del AWS Catálogo de datos de Glue. |
La siguiente política en línea otorga el conjunto mínimo de permisos necesarios para publicar los resultados de calidad de los datos desde una aplicación Amazon EMR Spark.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataQuality", "Effect": "Allow", "Action": [ "glue:PublishDataQuality", "glue:AccessDataQualityRuntimeConfiguration" ], "Resource": "*" } ] }
Realice su primera evaluación
-
Cree un clúster o una aplicación de Amazon EMR. Utilice la versión
emr-spark-8.1.0o posterior en Amazon EMR en EC2, Amazon EMR en EKS o Amazon EMR Serverless. Adjunte un rol que tenga los permisos que se indican en. Permisos de IAMPor ejemplo, para crear un clúster de Amazon EMR en EC2, ejecute:
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 -
Defina un conjunto de reglas y evalúelo. El siguiente PySpark script define un conjunto de reglas en el DQDL, lo compara con una e imprime el resultado por regla 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 fila por regla con las siguientes columnas:Rule,, y.OutcomeFailureReasonEvaluatedMetricsLas filas con unOutcomedeFailedincluyen el valor observado enFailureReason. -
Envíe la solicitud. Envía el script de la misma manera que envías cualquier otra aplicación de Spark para tu modo de despliegue de Amazon EMR.
-
Recupera el resultado. Cuando la aplicación finalice, enumere la ejecución y obtenga sus detalles con las API de calidad de datos de AWS Glue o con. AWS CLI Si la aplicación también se configura
publishToDataCatalogTargetcon unaDatabaseNameyTableName, la ejecución aparecerá en la pestaña Calidad de los datos de esa tabla de catálogo en la consola de AWS Glue (consulteVisualización de los resultados en AWS Consola Glue). De lo contrario, usa la API o AWS CLI recupera la ejecución.aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id<result-id>Para reducir la lista a las ejecuciones de un conjunto de datos específico, pasa el conjunto de datos
EvaluationContextque utilizó tu aplicación (por ejemplo,orders_daily) aListDataQualityStatistics. Cuando la aplicación lee una tabla del catálogo de datos de AWS Glue, también puede filtrarlist-data-quality-results-v2porDataSource.GlueTable.
Obtener un conjunto de reglas guardado del AWS Catálogo de datos de Glue
En lugar de definir tu conjunto de reglas en línea en cada script de Spark, puedes crear un conjunto de reglas una vez en el catálogo de datos de AWS Glue y obtenerlo de tu aplicación Amazon EMR Spark en tiempo de ejecución. Esto le permite versionar un conjunto de reglas en un solo lugar y compartirlo entre las cargas de trabajo de Amazon EMR Spark, los trabajos de AWS Glue ETL y las evaluaciones.
-
Crea el conjunto de reglas en Glue AWS . Crea y guarda el conjunto de reglas mediante una de las siguientes rutas:
-
En la consola AWS Glue. Consulte Creación de un nuevo conjunto de reglas en la Guía para desarrolladores de AWS Glue.
-
A través de la API de calidad de datos de AWS Glue. Consulte
CreateDataQualityRulesetla referencia de la API de AWS Glue.
-
-
Concede acceso al rol de carga de trabajo de Spark. Añada
glue:GetDataQualityRuleseta la función que asume su aplicación Amazon EMR Spark. -
Busca el conjunto de reglas en tu script de Spark. Llama
GetDataQualityRulesetcon boto3, extrae elRulesetcampo y pasa la cadena 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, }, )