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 de Amazon EMR Spark sin salir de la aplicación Spark. Amazon EMR Data Quality utiliza el mismo motor Deequ de código abierto que Glue Data Quality. AWS A partir del tiempo de ejecución de AWS para Apache Spark (emr-spark-8.1.0) en Amazon EMR, puede evaluar la calidad de los datos directamente en sus aplicaciones de Amazon EMR Spark añadiendo la EvaluateDataQuality transformación a su script de Spark. La transformación ejecuta un conjunto de reglas declarativas en su contra DataFrame y devuelve el resultado por regla durante el proceso, de modo que la aplicación pueda actuar en función del resultado (por ejemplo, abortando una escritura posterior cuando una regla falla). Cada evaluación también se publica en AWS Glue Data Quality, para que puedas revisar el historial de tus tiradas y avisar sobre ellas junto con las tiradas de AWS Glue ETL y el AWS Glue Data Catalog.

El uso de Amazon EMR Data Quality requiere una aplicación Spark y un conjunto de reglas escritos en el lenguaje de definición de calidad de datos (DQDL). No se requiere ninguna otra programación aparte del flujo de trabajo de Spark actual.

Amazon EMR Data Quality está disponible en los tres modos de implementación de Amazon EMR: Amazon EMR en EC2, Amazon EMR en EKS y Amazon EMR Serverless. Solo es compatible con Apache Spark.

Cómo funciona la calidad de los datos

Amazon EMR Data Quality es una transformación de Spark. Le pasas un conjunto de reglas DataFrame y un conjunto de reglas de DQDL; él evalúa las reglas y devuelve una serie de resultados. DataFrame Cada evaluación también se publica en AWS Glue Data Quality para que puedas consultar el resultado más adelante a través de las API o la consola de AWS Glue. AWS Glue ETL y el catálogo de datos de AWS Glue se publican en la misma tienda, por lo que puede comparar las tiradas de Amazon EMR con las tiradas de cualquiera de esos motores.

Las expectativas de calidad de los datos se definen mediante un conjunto de reglas declarativas escritas en el lenguaje de definición de calidad de los datos (DQDL). Un conjunto de reglas es un conjunto de reglas que describen las propiedades esperadas de un conjunto de datos. Por ejemplo, el siguiente conjunto de reglas comprueba que una tabla tiene más de 100 filas, que su customer_id columna es completa y única y que la country columna se extrae de un conjunto fijo de valores.

Rules = [ RowCount > 100, IsComplete "customer_id", IsUnique "customer_id", ColumnValues "country" in ["US", "CA", "MX"] ]

En tiempo de ejecución, la EvaluateDataQuality transformación lee su información DataFrame, evalúa cada regla con el mismo motor Deequ que utilizan AWS Glue Data Quality y el catálogo de datos de AWS Glue, y devuelve el resultado (PassedFailed, oError) de cada regla. Las reglas fallidas incluyen el valor observado para que puedas clasificarlas sin tener que volver a ejecutar la aplicación. El resultado es un Spark en el que DataFrame tu aplicación puede ramificarse, registrarse o persistir.

Data Quality también publica cada evaluación en el servicio AWS Glue Data Quality. Desde allí puede:

  • Consulta los resultados históricos con las API de calidad de datos de AWS Glue (GetDataQualityResultV2ListDataQualityResultsV2,,BatchGetDataQualityResultV2) AWS CLI, la consola AWS Glue o la consola.

  • Vea la ejecución en la consola de AWS Glue en la tabla del catálogo de datos de AWS Glue que validó cuando se configuró la aplicaciónpublishToDataCatalogTarget. La ejecución aparece en la pestaña Calidad de datos de la base de datos y tabla especificadas, junto con las ejecuciones ETL de AWS Glue dirigidas a la misma tabla.

  • Habilite la detección de anomalías en las series temporales de estadísticas generadas por cada ejecución.

Como los resultados se pueden publicar en el mismo almacén que usa AWS Glue Data Quality, puedes correlacionar ejecuciones entre motores de cómputo. Las ejecuciones que comparten un EvaluationContext (un identificador de cadena que se pasa a la transformación) aparecen como un único conjunto de datos lógico en la consola y en el entrenamiento de detección de anomalías, independientemente de si provienen de una aplicación Amazon EMR Spark o de un trabajo de ETL de Glue AWS .

Conceptos y terminología

Los siguientes términos aparecen a lo largo de este capítulo y en las API y la consola de AWS Glue Data Quality.

Regla

Una sola afirmación declarativa sobre un conjunto de datos, escrita en DQDL. Por ejemplo, RowCount > 1000 o IsUnique "order_id". Cada regla se evalúa como, o. Passed Failed Error

Conjunto de reglas

Un conjunto de reglas con nombre que se evalúan juntas en una sola llamada a. EvaluateDataQuality

Analizador

Por ejemplo, una estadística que se calcula para un conjunto de datos sin confirmar un resultado positivo o negativo. Mean "order_total" Los analizadores establecen los umbrales de las reglas y entrenan el modelo de detección de anomalías. Consulte Analizadores.

Puntuación de calidad de los datos

El porcentaje de reglas de un conjunto de reglas que se aprobaron en una ejecución determinada, calculado como. rules passed / (rules passed + rules failed) Las reglas, los errores y las observaciones no contribuyen a la puntuación. Las API de calidad de datos de AWS Glue devuelven la puntuación y, cuando la aplicación se establecepublishToDataCatalogTarget, aparece en la consola de AWS Glue, en la pestaña Calidad de datos de la tabla del catálogo de atributos.

Observación

Un valor marcado por la detección de anomalías como fuera del rango previsto. Las observaciones no reducen la puntuación de calidad de los datos. Consulte Detección de anomalías.

EvaluationContext

Un identificador de cadena que agrupa las ejecuciones del mismo conjunto de datos lógico en todos los motores de cómputo. Las ejecuciones que comparten y EvaluationContext alimentan el mismo modelo de detección de anomalías y aparecen juntas en la consola AWS Glue. Consulte Comparación de ejecuciones en Amazon EMR y AWS Adherencia.

Publicación

El paso que escribe el resultado de una EvaluateDataQuality ejecución en el servicio AWS Glue Data Quality para que pueda leerse posteriormente a través de las API de AWS Glue Data Quality y la consola de AWS Glue. La publicación está habilitada de forma predeterminada y se controla mediante la enableDataQualityResultsPublishing introducción de teclaspublishing_options. Cada publicación está codificada por EvaluationContext el identificador que utilizan la detección de anomalías y la comparación entre motores para agrupar las ejecuciones. Cuando la aplicación también se configurapublishToDataCatalogTarget, la ejecución se atribuye a una tabla de catálogo y aparece en la pestaña Calidad de datos de esa tabla en la consola de AWS Glue.

DQDL

Lenguaje de definición de calidad de datos, el lenguaje declarativo utilizado para crear conjuntos de reglas de calidad de datos. Consulte Evaluación de reglas y DQDL.

¿Dónde validar en tu proceso de validación?

Puedes invocarlas en EvaluateDataQuality cualquier parte de un script de Spark. Los tres patrones más comunes son:

  • Pre-validation. Evalúe la entrada sin procesar inmediatamente después de leerla. Utilice esta opción para solucionar rápidamente los problemas iniciales (archivos faltantes, errores de esquema, tablas vacías) antes de dedicar el proceso al resto de la aplicación.

  • Validación en línea. Evalúe un intermedio DataFrame entre las transformaciones. Utilice esta opción para comprobar el resultado de un paso específico (por ejemplo, después de una unión o agregación).

  • Post-validation. Evalúa la final DataFrame antes de escribirla en el lavabo. Utilice esta opción para impedir una publicación posterior sobre el resultado: ramifique la Outcome columna y aborte la escritura si alguna regla no cumple con alguna regla.

El siguiente PySpark fragmento bloquea la escritura del resultado de una evaluación posterior a la validación.

results = EvaluateDataQuality.apply( frame=final_df, ruleset=ruleset, publishing_options={ "dataQualityEvaluationContext": "orders_daily", "enableDataQualityResultsPublishing": True, }, ) failed = results.filter("Outcome in ('Failed', 'Error')").count() if failed > 0: raise RuntimeError(f"{failed} data quality rules failed or errored; aborting write") final_df.write.mode("overwrite").parquet("s3://amzn-s3-demo-bucket/orders_curated/")

Límites

  • Un único conjunto de reglas puede contener hasta 2000 reglas.

  • La fuente DQDL serializada de un conjunto de reglas no debe superar los 65 KB.

  • Data Quality recopila estadísticas al crear una regla o un analizador. El almacenamiento de estas estadísticas no supone costo alguno. Sin embargo, hay un límite de 100 000 estadísticas por cuenta y estas estadísticas se conservarán durante un máximo de dos años.

  • Data Quality solo es compatible con las aplicaciones de Apache Spark en Amazon EMR. No se ejecuta en Hive, Trino, Flink ni otros motores que no sean de Spark y compatibles con Amazon EMR.