

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Qualidade de dados do Amazon EMR
<a name="emr-data-quality"></a>

O Amazon EMR Data Quality, desenvolvido pela [AWS Glue Data Quality](https://docs.aws.amazon.com/glue/latest/dg/glue-data-quality.html), permite medir e monitorar a qualidade dos dados que suas cargas de trabalho do Amazon EMR Spark leem e gravam sem sair do aplicativo Spark. O Amazon EMR Data Quality usa o mesmo mecanismo [Deequ](https://github.com/awslabs/deequ) de código aberto do Glue Data Quality. AWS Começando com o [tempo de execução da AWS para Apache Spark (`emr-spark-8.1.0`)](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark810-release.html) no Amazon EMR, você pode avaliar a qualidade dos dados diretamente nos aplicativos do Amazon EMR Spark adicionando a transformação ao seu script do Spark. `EvaluateDataQuality` A transformação executa um conjunto de regras declarativo em relação a você DataFrame e retorna o resultado por regra em andamento, para que seu aplicativo possa agir de acordo com o resultado (por exemplo, abortando uma gravação posterior quando uma regra falha). Cada avaliação também é publicada no AWS Glue Data Quality, para que você possa revisar o histórico de suas corridas e alertá-las junto com as execuções do AWS Glue ETL e do AWS Glue Data Catalog.

Usar o Amazon EMR Data Quality requer um aplicativo Spark e um conjunto de regras escritos em Data Quality Definition Language (DQDL). Nenhuma outra programação é necessária além do fluxo de trabalho existente do Spark.

[A qualidade de dados do Amazon EMR está disponível em todos os três modos de implantação do Amazon EMR: Amazon EMR no EC2, Amazon EMR [no EKS e 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) Ele é compatível somente com o Apache Spark.

**Topics**
+ [Como funciona a qualidade de dados](#emr-dq-how-it-works)
+ [Conceitos e terminologia](#emr-dq-concepts)
+ [Onde validar em seu funil](#emr-dq-validation-stages)
+ [Limites](#emr-dq-limits)
+ [Comece a usar a qualidade de dados do Amazon EMR](emr-dq-getting-started.md)
+ [Capacidades gerais](emr-dq-key-capabilities.md)
+ [Trabalhando com resultados](emr-dq-working-with-results.md)
+ [Monitoramento e alertas](emr-dq-monitoring.md)
+ [Solução de problemas](emr-dq-troubleshooting.md)

## Como funciona a qualidade de dados
<a name="emr-dq-how-it-works"></a>

A qualidade de dados do Amazon EMR é uma transformação do Spark. Você passa um conjunto de regras DQDL DataFrame e um; ele avalia as regras e retorna um dos resultados. DataFrame Cada avaliação também é publicada no AWS Glue Data Quality para que você possa consultar o resultado posteriormente por meio das APIs ou do console do AWS Glue. AWS O Glue ETL e o AWS Glue Data Catalog são publicados na mesma loja, para que você possa comparar execuções do Amazon EMR com execuções de qualquer um desses mecanismos.

Você define suas expectativas de qualidade de dados como um conjunto de regras declarativo escrito na referência da [Data Quality Definition Language (DQDL)](https://docs.aws.amazon.com/glue/latest/dg/dqdl.html). Um conjunto de regras é um conjunto de regras que descrevem as propriedades esperadas de um conjunto de dados. Por exemplo, o conjunto de regras a seguir verifica se uma tabela tem mais de 100 linhas, se sua `customer_id` coluna é completa e exclusiva e se a `country` coluna foi extraída de um conjunto fixo de valores.

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

Em tempo de execução, a `EvaluateDataQuality` transformação lê sua DataFrame, avalia cada regra com o mesmo mecanismo Deequ usado pelo AWS Glue Data Quality e pelo AWS Glue Data Catalog e retorna o resultado (`Passed``Failed`, ou`Error`) de cada regra. As regras com falha incluem o valor observado para que você possa fazer a triagem delas sem executar novamente o aplicativo. O resultado é um Spark no qual DataFrame seu aplicativo pode se ramificar, registrar ou persistir.

O Data Quality também publica cada avaliação no serviço AWS Glue Data Quality. A partir daí, você pode:
+ Consulte resultados históricos com as APIs AWS Glue Data Quality (`GetDataQualityResultV2``ListDataQualityResultsV2`,,`BatchGetDataQualityResultV2`) ou com o AWS CLI console AWS Glue.
+ Veja a execução no console do AWS Glue na tabela do Catálogo de Dados do AWS Glue, validada quando seu aplicativo é `publishToDataCatalogTarget` configurado. A execução aparece na guia *Qualidade de dados* do banco de dados e da tabela especificados, junto com as execuções do AWS Glue ETL que têm como alvo a mesma tabela.
+ Ative a detecção de anomalias ao longo da série temporal das estatísticas produzidas por cada execução.

Como os resultados podem ser publicados na mesma loja usada pelo AWS Glue Data Quality, você pode correlacionar as execuções nos mecanismos de computação. As execuções que compartilham um `EvaluationContext` (um identificador de string que você passa para a transformação) aparecem como um único conjunto de dados lógico no console e no treinamento de detecção de anomalias, independentemente de terem vindo de um aplicativo Amazon EMR Spark ou de uma tarefa do Glue ETL. AWS 

## Conceitos e terminologia
<a name="emr-dq-concepts"></a>

Os termos a seguir aparecem ao longo deste capítulo e nas APIs e no console do AWS Glue Data Quality.

Regra  
Uma única afirmação declarativa sobre um conjunto de dados, escrita em DQDL. Por exemplo, `RowCount > 1000` ou `IsUnique "order_id"`. Cada regra é avaliada como`Passed`,`Failed`, ou`Error`.

Conjunto de regras  
Uma coleção nomeada de regras que são avaliadas em conjunto em uma única chamada para`EvaluateDataQuality`.

Analyzer do MongoDB  
Uma estatística que é calculada para um conjunto de dados sem declarar um resultado positivo ou reprovado, por exemplo. `Mean "order_total"` Os analisadores aceleram os limites das regras e treinam o modelo de detecção de anomalias. Consulte [Analisadores](emr-dq-key-capabilities.md#emr-dq-analyzers).

Pontuação de qualidade de dados  
A porcentagem de regras em um conjunto de regras que foi aprovada em uma determinada execução, calculada como. `rules passed / (rules passed + rules failed)` Regras de que erros e observações não contribuem para a pontuação. A pontuação é retornada pelas APIs AWS Glue Data Quality e, quando seu aplicativo é configurado`publishToDataCatalogTarget`, aparece no console do AWS Glue na guia *Qualidade de dados* da tabela de catálogo atribuída.

Observação  
Um valor sinalizado pela detecção de anomalias como fora da faixa prevista. As observações não reduzem a pontuação de qualidade dos dados. Consulte [Detecção de anomalias](emr-dq-key-capabilities.md#emr-dq-anomaly-detection).

`EvaluationContext`  
Um identificador de sequência de caracteres que agrupa execuções do mesmo conjunto de dados lógico nos mecanismos de computação. Execuções que compartilham e `EvaluationContext` alimentam o mesmo modelo de detecção de anomalias e aparecem juntas no console AWS Glue. Consulte [Comparando execuções no Amazon EMR e AWS União](emr-dq-working-with-results.md#emr-dq-compare-runs).

Publicação  
A etapa que grava o resultado de uma `EvaluateDataQuality` execução no serviço AWS Glue Data Quality para que ele possa ser lido posteriormente por meio das APIs AWS Glue Data Quality e do console AWS Glue. A publicação é ativada por padrão e controlada pela `enableDataQualityResultsPublishing` chave de entrada`publishing_options`. Cada publicação é codificada por`EvaluationContext`, o identificador que a detecção de anomalias e a comparação entre mecanismos usam para agrupar execuções. Quando o aplicativo também é configurado`publishToDataCatalogTarget`, a execução é atribuída a uma tabela de catálogo e aparece na guia *Qualidade de dados* dessa tabela no console AWS Glue.

DQDL  
Linguagem de definição de qualidade de dados, a linguagem declarativa usada para criar conjuntos de regras de qualidade de dados. Consulte [Avaliação de regras e DQDL](emr-dq-key-capabilities.md#emr-dq-rule-evaluation).

## Onde validar em seu funil
<a name="emr-dq-validation-stages"></a>

Você pode invocar em `EvaluateDataQuality` qualquer lugar em um script do Spark. Os três padrões comuns são:
+ **Pre-validation.** Avalie a entrada bruta imediatamente após a leitura. Use isso para falhar rapidamente em problemas iniciais (arquivos ausentes, desvio de esquema, tabelas vazias) antes de gastar a computação no resto do aplicativo.
+ **Validação em linha.** Avalie um intermediário DataFrame entre as transformações. Use isso para verificar a saída de uma etapa específica (por exemplo, após uma junção ou agregação).
+ **Post-validation.** Avalie o final DataFrame antes de escrever na pia. Use isso para bloquear uma publicação posterior do resultado: ramifique na `Outcome` coluna e aborte a gravação se alguma regra falhar.

O PySpark trecho a seguir contém uma descrição do resultado de uma avaliação pós-validação.

```
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/")
```

## Limites
<a name="emr-dq-limits"></a>
+ Um único conjunto de regras pode conter até **2.000** regras.
+ **A fonte DQDL serializada de um conjunto de regras não deve ser maior que 65 KB.**
+ A Qualidade de Dados coleta estatísticas quando você cria uma regra ou um analisador. Não há custo associado ao armazenamento dessas estatísticas. No entanto, há um limite de **100.000 estatísticas por conta**, e essas estatísticas serão mantidas por no máximo **dois anos**.
+ A qualidade de dados é compatível com aplicativos Apache Spark somente no Amazon EMR. Ele não funciona em Hive, Trino, Flink ou outros mecanismos que não sejam do Spark compatíveis com o Amazon EMR.