View a markdown version of this page

Calidad de datos de Amazon EMR - Amazon EMR

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

  1. Cree una aplicación EMR Serverless. Utilice la versión emr-spark-8.1.0 o 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
  2. 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)

    results DataFrame Contiene una fila por regla con las siguientes columnas:Rule,, y. Outcome FailureReason EvaluatedMetrics Las filas con un Outcome de Failed incluyen el valor observado enFailureReason.

  3. 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" } }'
  4. 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 publishToDataCatalogTarget con una DatabaseName yTableName, 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: