

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
<a name="emr-data-quality"></a>

Amazon EMR Data Quality, con la tecnología de [AWS Glue Data Quality](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html), 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](https://github.com/awslabs/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`)](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark810-release.html) 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.](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/emr-eks-data-quality.html)](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-data-quality.html) Solo es compatible con Apache Spark.

**Topics**
+ [Cómo funciona la calidad de los datos](#emr-dq-how-it-works)
+ [Conceptos y terminología](#emr-dq-concepts)
+ [¿Dónde validar en tu proceso de validación?](#emr-dq-validation-stages)
+ [Límites](#emr-dq-limits)
+ [Introducción a Amazon EMR Data Quality](emr-dq-getting-started.md)
+ [Capacidades clave](emr-dq-key-capabilities.md)
+ [Trabajando con los resultados](emr-dq-working-with-results.md)
+ [Monitorización y alertas](emr-dq-monitoring.md)
+ [Resolución de problemas](emr-dq-troubleshooting.md)

## Cómo funciona la calidad de los datos
<a name="emr-dq-how-it-works"></a>

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 (](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html)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 (`Passed``Failed`, o`Error`) 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 (`GetDataQualityResultV2``ListDataQualityResultsV2`,,`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ón`publishToDataCatalogTarget`. 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
<a name="emr-dq-concepts"></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](emr-dq-key-capabilities.md#emr-dq-analyzers).

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 establece`publishToDataCatalogTarget`, 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](emr-dq-key-capabilities.md#emr-dq-anomaly-detection).

`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](emr-dq-working-with-results.md#emr-dq-compare-runs).

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 teclas`publishing_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 configura`publishToDataCatalogTarget`, 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](emr-dq-key-capabilities.md#emr-dq-rule-evaluation).

## ¿Dónde validar en tu proceso de validación?
<a name="emr-dq-validation-stages"></a>

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
<a name="emr-dq-limits"></a>
+ **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.