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á.
Comece a usar a qualidade de dados do Amazon EMR
Esta seção mostra como executar sua primeira avaliação de qualidade de dados do Amazon EMR de ponta a ponta: as permissões que seu aplicativo Amazon EMR Spark precisa e um passo a passo que envia um conjunto de regras de DQDL em relação a um no Amazon EMR e recupera o resultado. DataFrame
Pré-requisitos
Permissões do IAM
A função do IAM que sua carga de trabalho do Amazon EMR Spark assume — o perfil da instância EC2 anexado ao cluster ou uma função de tempo de execução por etapa — 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ê define 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 Obtendo um conjunto de regras salvo do AWS Glue Data Catalog. |
A política em linha a seguir concede o conjunto mínimo de permissões necessárias para publicar resultados de qualidade de dados de um aplicativo Amazon EMR Spark.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataQuality", "Effect": "Allow", "Action": [ "glue:PublishDataQuality", "glue:AccessDataQualityRuntimeConfiguration" ], "Resource": "*" } ] }
Faça sua primeira avaliação
-
Crie um cluster ou aplicativo do Amazon EMR. Use a versão
emr-spark-8.1.0ou posterior no Amazon EMR no EC2, no Amazon EMR no EKS ou no Amazon EMR Serverless. Anexe uma função que tenha as permissões listadas emPermissões do IAM.Por exemplo, para criar um Amazon EMR no cluster EC2, execute:
aws emr create-cluster --release-label emr-spark-8.1.0 \ --applications Name=Spark \ --region us-east-1 \ --name My_Spark_DataQuality_Cluster \ --log-uri s3://amzn-s3-demo-bucket/ \ --instance-type m5.xlarge \ --instance-count 2 \ --service-role EMR_DefaultRole_V2 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-1234567890abcdef0 -
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 inscrição. Envie o script da mesma forma que você envia qualquer outro aplicativo Spark para o modo de implantação do Amazon EMR.
-
Recupere o resultado. Depois que o aplicativo for concluído, liste a execução e obtenha 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 (consulteVisualizando resultados no AWS Console Glue). Caso contrário, use a API ou AWS CLI para recuperar a execução.aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id<result-id>Para restringir a lista a execuções de um conjunto de dados específico, transmita o
EvaluationContextque seu aplicativo usou (por exemplo,orders_daily) paraListDataQualityStatistics. Quando seu aplicativo lê uma tabela do AWS Glue Data Catalog, você também pode filtrarlist-data-quality-results-v2porDataSource.GlueTable.
Obtendo um conjunto de regras salvo do AWS Glue Data Catalog
Em vez de definir seu conjunto de regras embutido em cada script do Spark, você pode criar um conjunto de regras uma vez no AWS Glue Data Catalog e buscá-lo do seu aplicativo Amazon EMR Spark em tempo de execução. Isso permite criar uma versão de um conjunto de regras em um só lugar e compartilhá-lo entre cargas de trabalho do Amazon EMR Spark, trabalhos de ETL e avaliações do AWS Glue.
-
Crie o conjunto de regras no AWS Glue. Crie e salve o conjunto de regras usando um dos seguintes caminhos:
-
No console AWS Glue. Consulte Criação de um novo conjunto de regras no AWS Glue Developer Guide.
-
Por meio da API AWS Glue Data Quality. Veja
CreateDataQualityRulesetna referência da API AWS Glue.
-
-
Conceda acesso à função de carga de trabalho do Spark. Adicione
glue:GetDataQualityRulesetà função que seu aplicativo Amazon EMR Spark assume. -
Obtenha o conjunto de regras em seu script do Spark. Chame
GetDataQualityRulesetcom boto3, extraia oRulesetcampo e passe a string DQDL para.EvaluateDataQuality.applyimport boto3 from awsdataquality.transforms import EvaluateDataQuality glue = boto3.client("glue") response = glue.get_data_quality_ruleset(Name="orders_quality") ruleset = response["Ruleset"] results = EvaluateDataQuality.apply( frame=df, ruleset=ruleset, publishing_options={ "dataQualityEvaluationContext": "orders_daily", "enableDataQualityResultsPublishing": True, }, )