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.
Calidad de datos de Amazon EMR
Amazon EMR Data Quality, con la tecnología de AWS Glue Data Quality, le permite medir y supervisar la calidad de los datos que leen y escriben sus cargas de trabajo EMR Serverless Spark sin salir de la aplicación Spark. Esta página cubre los requisitos previos y el tutorial de EMR Serverless. Para conocer los conceptos, las API, la supervisión y la solución de problemas, consulte Amazon EMR Data Quality en la Guía de administración de Amazon EMR.
Requisitos previos
Amazon EMR Data Quality se instala de forma predeterminada en las versiones emr-spark-8.1.0 y posteriores de Amazon EMR. Solo se admiten las cargas de trabajo de Apache Spark.
La función de ejecución de tareas de IAM que asume su aplicación EMR Serverless (transferida --execution-role-arn a través de start-job-run on) 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 las 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 catálogo de datos de AWS 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 EMR Serverless Spark.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataQuality", "Effect": "Allow", "Action": [ "glue:PublishDataQuality", "glue:AccessDataQualityRuntimeConfiguration" ], "Resource": "*" } ] }
Realice su primera evaluación
-
Cree una aplicación EMR Serverless. Utilice la versión
emr-spark-8.1.0o posterior. Crea una solicitud de Spark y adjunta un puesto de trabajo que tenga los permisos que se indican enRequisitos previos.Por ejemplo, para crear una aplicación Spark, ejecuta:
aws emr-serverless create-application \ --name My_Spark_DataQuality_Application \ --release-label emr-spark-8.1.0 \ --type SPARK -
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 ejecución del trabajo. Envíe el script como un trabajo ejecutado en su solicitud.
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" } }' -
Recupera el resultado. Cuando finalice la ejecución del trabajo, 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.aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id<result-id>
Más información sobre Amazon EMR Data Quality
Para obtener la referencia completa, consulte los siguientes temas de la Guía de administración de Amazon EMR: