Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Qualité des données Amazon EMR
Amazon EMR Data Quality, optimisé par AWS Glue Data Quality, vous permet de mesurer et de surveiller la qualité des données que vos charges de travail EMR Serverless Spark lisent et écrivent sans quitter l'application Spark. Cette page décrit les prérequis et la procédure pas à pas pour EMR Serverless. Pour les concepts, les API, la surveillance et le dépannage, consultez Amazon EMR Data Quality dans le guide de gestion Amazon EMR.
Conditions préalables
Amazon EMR Data Quality est installé par défaut dans les versions emr-spark-8.1.0 et ultérieures d'Amazon EMR. Seules les charges de travail Apache Spark sont prises en charge.
Le rôle d'exécution des tâches IAM assumé par votre application EMR Serverless (transmis --execution-role-arn via) doit accorder start-job-run les autorisations suivantes pour exécuter Data Quality et publier les résultats.
| Action | En cas de besoin |
|---|---|
glue:PublishDataQuality |
Publier chaque évaluation sur AWS Glue Data Quality afin de consulter l'historique, de comparer les séries et de détecter les anomalies d'alimentation. La publication est activée par défaut, alors accordez cette autorisation à moins que vous ne vous y opposiez explicitement en configurant l'option surFalse. enableDataQualityResultsPublishing True |
glue:AccessDataQualityRuntimeConfiguration |
Pour récupérer la configuration de publication depuis le service lorsque la bibliothèque initialise la publication. Obligatoire chaque fois que la publication est activée ; sans elle, la bibliothèque désactive silencieusement la publication pour le lancement. |
cloudwatch:PutMetricData |
Pour envoyer des indicateurs de réussite et d'échec par cycle à Amazon CloudWatch pour les tableaux de bord et les alarmes. Obligatoire uniquement lorsque vous définissez enableDataQualityCloudWatchMetrics surTrue. |
glue:GetTable, glue:GetDatabase |
Pour lire les métadonnées des tables de catalogue. Obligatoire lorsque l'entrée DataFrame est lue à partir d'une table du catalogue de données AWS Glue ou lorsque l'application passe publishToDataCatalogTarget afin que le service puisse attribuer l'exécution à une table de catalogue spécifique. |
glue:GetDataQualityRuleset |
Pour récupérer un ensemble de règles enregistré dans le catalogue de données AWS Glue. Obligatoire uniquement lorsque votre script Spark charge un ensemble de règles depuis le catalogue au lieu de définir un DQDL en ligne. Consultez la section Récupération d'un ensemble de règles enregistré dans le catalogue de données AWS Glue. |
La politique intégrée suivante accorde l'ensemble minimal d'autorisations requis pour publier les résultats de qualité des données à partir d'une application EMR Serverless Spark.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataQuality", "Effect": "Allow", "Action": [ "glue:PublishDataQuality", "glue:AccessDataQualityRuntimeConfiguration" ], "Resource": "*" } ] }
Effectuez votre première évaluation
-
Créez une application EMR sans serveur. Utilisez release
emr-spark-8.1.0ou version ultérieure. Créez une application Spark et associez un rôle professionnel doté des autorisations répertoriées dansConditions préalables.Par exemple, pour créer une application Spark, exécutez :
aws emr-serverless create-application \ --name My_Spark_DataQuality_Application \ --release-label emr-spark-8.1.0 \ --type SPARK -
Définissez un ensemble de règles et évaluez-le. Le PySpark script suivant définit un ensemble de règles dans le DQDL, l'évalue par rapport à un DataFrame et imprime le résultat par règle.
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)resultsDataFrame Il contient une ligne par règle avec les colonnes suivantes :RuleOutcome,FailureReason, etEvaluatedMetrics. Les lignes marquéesOutcomed'unFailedou incluent la valeur observée dansFailureReason. -
Soumettez l'exécution du travail. Soumettez le script en tant que tâche exécutée sur votre application.
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" } }' -
Récupérez le résultat. Une fois l'exécution du travail terminée, listez l'exécution et récupérez ses détails à l'aide des API AWS Glue Data Quality ou du AWS CLI. Si votre application est également définie
publishToDataCatalogTargetpar unDatabaseNameetTableName, l'exécution apparaît dans l'onglet Qualité des données de ce tableau de catalogue dans la console AWS Glue.aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id<result-id>
En savoir plus sur Amazon EMR Data Quality
Pour une référence complète, consultez les rubriques suivantes dans le guide de gestion Amazon EMR :