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
-
Crie um aplicativo EMR Serverless. Use release
emr-spark-8.1.0ou 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 -
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
resultsDataFrame contém uma linha por regra com as seguintes colunas:RuleOutcomeFailureReason,,EvaluatedMetricse. As linhas com umOutcomedeFailedincluem o valor observado emFailureReason. -
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" } }' -
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
publishToDataCatalogTargetcom umDatabaseNameeTableName, 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: