View a markdown version of this page

Qualidade de dados do Amazon EMR - Amazon EMR

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

O Amazon EMR Data Quality, desenvolvido pela AWS Glue Data Quality, permite medir e monitorar a qualidade dos dados que suas cargas de trabalho do EMR Serverless Spark leem e gravam sem sair do aplicativo Spark. Esta página aborda os pré-requisitos e instruções passo a passo do EMR Serverless. Para conceitos, APIs, monitoramento e solução de problemas, consulte Qualidade de dados do Amazon EMR no Guia de gerenciamento do Amazon EMR.

Pré-requisitos

O Amazon EMR Data Quality é instalado por padrão nas versões emr-spark-8.1.0 e posteriores do Amazon EMR. Somente cargas de trabalho do Apache Spark são suportadas.

A função de tempo de execução do trabalho do IAM que seu aplicativo EMR Serverless assume (--execution-role-arntransmitidastart-job-run) deve conceder as seguintes permissões para executar o Data Quality e publicar os resultados.

Ação Quando necessário
glue:PublishDataQuality Publicar cada avaliação no AWS Glue Data Quality para que você possa visualizar o histórico, comparar execuções e alimentar a detecção de anomalias. A publicação está ativada por padrão (enableDataQualityResultsPublishingéTrue), portanto, conceda essa permissão, a menos que você opte explicitamente por não participar definindo a opção comoFalse.
glue:AccessDataQualityRuntimeConfiguration Para buscar a configuração de publicação do serviço quando a biblioteca inicializa a publicação. Obrigatório sempre que a publicação está ativada; sem ela, a biblioteca desativa silenciosamente a publicação para a execução.
cloudwatch:PutMetricData Para emitir métricas de aprovação e reprovação por execução para a Amazon CloudWatch para painéis e alarmes. Obrigatório somente quando você configura enableDataQualityCloudWatchMetrics comoTrue.
glue:GetTable, glue:GetDatabase Para ler os metadados da tabela do catálogo. Obrigatório quando a entrada DataFrame é lida de uma tabela do AWS Glue Data Catalog ou quando o aplicativo passa publishToDataCatalogTarget para que o serviço possa atribuir a execução a uma tabela de catálogo específica.
glue:GetDataQualityRuleset Para obter um conjunto de regras salvo do AWS Glue Data Catalog. Exigido somente quando o script do Spark carrega um conjunto de regras do catálogo em vez de definir o DQDL em linha. Consulte Como obter um conjunto de regras salvo no AWS Glue Data Catalog.

A política embutida a seguir concede o conjunto mínimo de permissões necessárias para publicar resultados de qualidade de dados de um aplicativo EMR Serverless Spark.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataQuality", "Effect": "Allow", "Action": [ "glue:PublishDataQuality", "glue:AccessDataQualityRuntimeConfiguration" ], "Resource": "*" } ] }

Faça sua primeira avaliação

  1. Crie um aplicativo EMR Serverless. Use release emr-spark-8.1.0 ou posterior. Crie um aplicativo Spark e anexe uma função de trabalho que tenha as permissões listadas emPré-requisitos.

    Por exemplo, para criar um aplicativo Spark, execute:

    aws emr-serverless create-application \ --name My_Spark_DataQuality_Application \ --release-label emr-spark-8.1.0 \ --type SPARK
  2. Defina um conjunto de regras e avalie-o. O PySpark script a seguir define um conjunto de regras no DQDL, o avalia em relação a e imprime o resultado por DataFrame regra.

    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)

    O results DataFrame contém uma linha por regra com as seguintes colunas: Rule OutcomeFailureReason,, EvaluatedMetrics e. As linhas com um Outcome de Failed incluem o valor observado emFailureReason.

  3. Envie a execução do trabalho. Envie o script como um trabalho executado em seu aplicativo.

    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. Recupere o resultado. Após a conclusão da execução do trabalho, liste a execução e busque seus detalhes com as APIs AWS Glue Data Quality ou o. AWS CLI Se seu aplicativo também for definido publishToDataCatalogTarget com um DatabaseName eTableName, a execução aparecerá na guia Qualidade de dados dessa tabela de catálogo no console do AWS Glue.

    aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id <result-id>

Saiba mais sobre a qualidade de dados do Amazon EMR

Para obter a referência completa, consulte os seguintes tópicos no Guia de gerenciamento do Amazon EMR: