View a markdown version of this page

Qualité des données Amazon EMR - Amazon EMR

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 Amazon EMR Spark lisent et écrivent sans quitter l'application Spark. Amazon EMR Data Quality utilise le même moteur Deequ open source que Glue AWS Data Quality. À partir de l'environnement d'exécution AWS pour Apache Spark (emr-spark-8.1.0) sur Amazon EMR, vous pouvez évaluer la qualité des données directement dans vos applications Amazon EMR Spark en ajoutant la EvaluateDataQuality transformation à votre script Spark. La transformation exécute un ensemble de règles déclaratif sur vous DataFrame et renvoie le résultat par règle en cours de traitement, afin que votre application puisse agir sur le résultat (par exemple, abandonner une écriture en aval lorsqu'une règle échoue). Chaque évaluation est également publiée sur AWS Glue Data Quality, ce qui vous permet de consulter l'historique de vos essais et de recevoir des alertes à ce sujet, ainsi que des essais provenant de AWS Glue ETL et du AWS Glue Data Catalog.

L'utilisation d'Amazon EMR Data Quality nécessite une application Spark et un ensemble de règles écrits en langage DQDL (Data Quality Definition Language). Aucune autre programmation n'est requise en dehors de votre flux de travail Spark existant.

Amazon EMR Data Quality est disponible sur les trois modes de déploiement d'Amazon EMR : Amazon EMR sur EC2, Amazon EMR sur EKS et Amazon EMR Serverless. Il n'est pris en charge que pour Apache Spark.

Comment fonctionne la qualité des données

Amazon EMR Data Quality est une transformation de Spark. Vous lui transmettez un ensemble DataFrame de règles DQDL ; il évalue les règles et renvoie un DataFrame ensemble de résultats. Chaque évaluation est également publiée sur AWS Glue Data Quality afin que vous puissiez consulter le résultat ultérieurement via les API ou la console AWS Glue. AWS Glue ETL et le AWS Glue Data Catalog sont publiés dans le même magasin. Vous pouvez donc comparer les tests Amazon EMR avec ceux de l'un ou l'autre de ces moteurs.

Vous définissez vos attentes en matière de qualité des données sous la forme d'un ensemble de règles déclaratives écrit en référence au langage de définition de la qualité des données (DQDL). Un ensemble de règles est un ensemble de règles qui décrivent les propriétés attendues d'un ensemble de données. Par exemple, l'ensemble de règles suivant vérifie qu'un tableau comporte plus de 100 lignes, que sa customer_id colonne est complète et unique, et que la country colonne est tirée d'un ensemble fixe de valeurs.

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

Lors de l'exécution, la EvaluateDataQuality transformation lit votre DataFrame, évalue chaque règle avec le même moteur Deequ utilisé par AWS Glue Data Quality et le AWS Glue Data Catalog, et renvoie le résultat (PassedFailed, ouError) pour chaque règle. Les règles défaillantes incluent la valeur observée afin que vous puissiez les trier sans relancer l'application. Le résultat est un Spark sur lequel DataFrame votre application peut se greffer, enregistrer ou conserver.

Data Quality publie également chaque évaluation sur le service AWS Glue Data Quality. À partir de là, vous pouvez :

  • Interrogez les résultats historiques à l'aide des API AWS Glue Data Quality (GetDataQualityResultV2,ListDataQualityResultsV2,BatchGetDataQualityResultV2), de la AWS CLI console Glue ou de la console AWS Glue.

  • Consultez l'exécution dans la console AWS Glue sous le tableau du catalogue de données AWS Glue qu'elle a validé lors de la configuration de votre applicationpublishToDataCatalogTarget. L'exécution apparaît dans l'onglet Qualité des données de la base de données et de la table spécifiées, à côté des exécutions AWS Glue ETL qui ciblent la même table.

  • Activez la détection des anomalies sur les séries chronologiques de statistiques produites par chaque exécution.

Les résultats pouvant être publiés dans le même magasin que celui utilisé par AWS Glue Data Quality, vous pouvez corréler les exécutions entre les moteurs de calcul. Les exécutions qui partagent un EvaluationContext (identifiant de chaîne que vous transmettez à la transformation) apparaissent sous la forme d'un jeu de données logique unique dans la console et lors de l'entraînement à la détection des anomalies, qu'elles proviennent d'une application Amazon EMR Spark ou d'une tâche Glue ETL. AWS

Concepts et terminologie

Les termes suivants apparaissent dans ce chapitre ainsi que dans les API et la console AWS Glue Data Quality.

Règle

Une assertion déclarative unique concernant un ensemble de données, écrite en DQDL. Par exemple, RowCount > 1000 ou IsUnique "order_id". Chaque règle est évaluée à PassedFailed, ouError.

Ensemble de règles

Ensemble nommé de règles qui sont évaluées ensemble dans le cadre d'un seul appel àEvaluateDataQuality.

Analyseur

Statistique calculée pour un ensemble de données sans indiquer de résultat positif ou négatif, par exemple. Mean "order_total" Les analyseurs définissent les seuils de règles et entraînent le modèle de détection des anomalies. Consultez Analyseurs.

Score de qualité des données

Le pourcentage de règles d'un ensemble de règles qui ont été adoptées lors d'une exécution donnée, calculé sous rules passed / (rules passed + rules failed) la forme. Règles selon lesquelles les erreurs et les observations ne contribuent pas au score. Le score est renvoyé par les API AWS Glue Data Quality et, lorsque votre application est définiepublishToDataCatalogTarget, il apparaît dans la console AWS Glue sous l'onglet Data quality de la table de catalogue attribuée.

Observation

Une valeur signalée par la détection d'anomalies comme étant en dehors de sa plage prévue. Les observations ne réduisent pas le score de qualité des données. Consultez Détection des anomalies.

EvaluationContext

Identifiant de chaîne qui regroupe les exécutions du même jeu de données logique sur les moteurs de calcul. Les runs qui partagent un EvaluationContext flux utilisent le même modèle de détection d'anomalies et apparaissent ensemble dans la console Glue AWS . Consultez Comparaison des essais sur Amazon EMR et AWS Glue.

Publication

Étape qui enregistre le résultat d'une EvaluateDataQuality exécution dans le service AWS Glue Data Quality afin qu'il puisse être lu ultérieurement via les API AWS Glue Data Quality et la console AWS Glue. La publication est activée par défaut et contrôlée par la enableDataQualityResultsPublishing touchepublishing_options. Chaque publication est marquée par l'identifiant utilisé par EvaluationContext la détection des anomalies et la comparaison entre moteurs pour regrouper les exécutions. Lorsque l'application est également définiepublishToDataCatalogTarget, l'exécution est attribuée à une table de catalogue et apparaît dans l'onglet Qualité des données de cette table dans la console AWS Glue.

DQDL

Langage de définition de la qualité des données, langage déclaratif utilisé pour créer des ensembles de règles de qualité des données. Consultez Évaluation des règles et DQDL.

Où valider dans votre pipeline

Vous pouvez appeler EvaluateDataQuality n'importe où dans un script Spark. Les trois modèles courants sont les suivants :

  • Pre-validation. Évaluez l'entrée brute immédiatement après la lecture. Utilisez-le pour résoudre rapidement des problèmes en amont (fichiers manquants, dérive du schéma, tables vides) avant de consacrer le calcul au reste de l'application.

  • Validation en ligne. Évaluez un intermédiaire DataFrame entre les transformations. Utilisez-le pour vérifier le résultat d'une étape spécifique (par exemple, après une jointure ou une agrégation).

  • Post-validation. Évaluez le résultat final DataFrame avant d'écrire dans votre évier. Utilisez-le pour bloquer une publication en aval du résultat : branchez sur la Outcome colonne et abandonnez l'écriture en cas d'échec d'une règle.

L' PySpark extrait suivant lance une écriture sur le résultat d'une évaluation post-validation.

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

Restrictions

  • Un seul ensemble de règles peut contenir jusqu'à 2 000 règles.

  • La source DQDL sérialisée d'un ensemble de règles ne doit pas dépasser 65 Ko.

  • Data Quality collecte des statistiques lorsque vous créez une règle ou un analyseur. Le stockage de ces statistiques est gratuit. Cependant, il y a une limite de 100 000 statistiques par compte, et ces statistiques seront conservées pendant un maximum de deux ans.

  • La qualité des données est prise en charge pour les applications Apache Spark sur Amazon EMR uniquement. Il ne fonctionne pas sur les moteurs Hive, Trino, Flink ou autres moteurs autres que Spark pris en charge par Amazon EMR.