Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erste Schritte mit Amazon EMR Data Quality
In diesem Abschnitt werden Sie Schritt für Schritt durch die vollständige Durchführung Ihrer ersten Amazon EMR Data Quality-Bewertung geführt: die Berechtigungen, die Ihre Amazon EMR Spark-Anwendung benötigt, und eine exemplarische Vorgehensweise, bei der ein DQDL-Regelsatz mit einem DataFrame auf Amazon EMR verglichen wird und das Ergebnis abgerufen wird.
Voraussetzungen
IAM-Berechtigungen
Die IAM-Rolle, die Ihr Amazon EMR Spark-Workload annimmt — das dem Cluster zugeordnete EC2-Instance-Profil oder eine Runtime-Rolle pro Schritt — muss die folgenden Berechtigungen gewähren, um Data Quality auszuführen und Ergebnisse zu veröffentlichen.
| Action | Bei Bedarf |
|---|---|
glue:PublishDataQuality |
Um jede Bewertung in AWS Glue Data Quality zu veröffentlichen, damit Sie den Verlauf einsehen, Läufe vergleichen und Anomalieerkennung als Feed nutzen können. Die Veröffentlichung ist standardmäßig aktiviert (enableDataQualityResultsPublishingistTrue). Erteilen Sie diese Erlaubnis, sofern Sie sich nicht ausdrücklich abmelden, indem Sie die Option auf False setzen. |
glue:AccessDataQualityRuntimeConfiguration |
Um die Veröffentlichungskonfiguration vom Dienst abzurufen, wenn die Bibliothek die Veröffentlichung initialisiert. Erforderlich, wenn das Publizieren aktiviert ist. Andernfalls deaktiviert die Bibliothek das Publizieren im Hintergrund für die Ausführung. |
cloudwatch:PutMetricData |
Zur Übermittlung von Pass-and-Fail-Metriken pro Lauf an Amazon CloudWatch für Dashboards und Alarme. Nur erforderlich, wenn Sie auf einstellenenableDataQualityCloudWatchMetrics. True |
glue:GetTable,
glue:GetDatabase |
Um Metadaten von Katalogtabellen zu lesen. Erforderlich, wenn die Eingabe aus einer AWS Glue-Datenkatalogtabelle gelesen DataFrame wird oder wenn die Anwendung erfolgreich ist, publishToDataCatalogTarget sodass der Service den Lauf einer bestimmten Katalogtabelle zuordnen kann. |
glue:GetDataQualityRuleset |
Um einen gespeicherten Regelsatz aus dem AWS Glue-Datenkatalog abzurufen. Nur erforderlich, wenn Ihr Spark-Skript einen Regelsatz aus dem Katalog lädt, anstatt DQDL inline zu definieren. Siehe Abrufen eines gespeicherten Regelsatzes aus dem AWS Glue Data Catalog. |
Die folgende Inline-Richtlinie gewährt die Mindestberechtigungen, die für die Veröffentlichung von Datenqualitätsergebnissen aus einer Amazon EMR Spark-Anwendung erforderlich sind.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueDataQuality", "Effect": "Allow", "Action": [ "glue:PublishDataQuality", "glue:AccessDataQualityRuntimeConfiguration" ], "Resource": "*" } ] }
Führen Sie Ihre erste Evaluierung durch
-
Erstellen Sie einen Amazon EMR-Cluster oder eine Amazon EMR-Applikation. Verwenden Sie Version
emr-spark-8.1.0oder höher auf Amazon EMR auf EC2, Amazon EMR auf EKS oder Amazon EMR Serverless. Fügen Sie eine Rolle hinzu, die über die unter aufgeführten Berechtigungen verfügt. IAM-BerechtigungenUm beispielsweise einen Amazon EMR auf einem EC2-Cluster zu erstellen, führen Sie folgenden Befehl aus:
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 -
Definieren Sie einen Regelsatz und bewerten Sie ihn. Das folgende PySpark Skript definiert einen Regelsatz in DQDL, wertet ihn anhand eines DataFrame aus und gibt das Ergebnis pro Regel aus.
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)Das
resultsDataFrame enthält eine Zeile pro Regel mit den folgenden Spalten:Rule,, undOutcome.FailureReasonEvaluatedMetricsZeilen mit einem „Outcomevon“Failedenthalten den beobachteten Wert inFailureReason. -
Reichen Sie den Antrag ein. Reichen Sie das Skript genauso ein, wie Sie jede andere Spark-Anwendung für Ihren Amazon EMR-Bereitstellungsmodus einreichen.
-
Rufen Sie das Ergebnis ab. Wenn die Anwendung abgeschlossen ist, listen Sie den Lauf auf und rufen Sie seine Details mit den AWS Glue Data Quality APIs oder dem AWS CLI ab. Wenn Ihre Anwendung auch
publishToDataCatalogTargetmit einemDatabaseNameund festlegtTableName, wird der Lauf auf der Registerkarte Datenqualität dieser Katalogtabelle in der AWS Glue-Konsole angezeigt (sieheErgebnisse anzeigen in der AWS Konsole Glue). Verwenden Sie andernfalls die API oder AWS CLI um den Lauf abzurufen.aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id<result-id>Um die Liste auf Ausführungen eines bestimmten Datensatzes einzugrenzen, übergeben Sie den Datensatz
EvaluationContext, den Ihre Anwendung verwendet hat (z. B.orders_daily)ListDataQualityStatistics. Wenn Ihre Anwendung aus einer AWS Glue-Datenkatalogtabelle liest, können Sie zusätzlichlist-data-quality-results-v2nach filternDataSource.GlueTable.
Abrufen eines gespeicherten Regelsatzes aus dem AWS Glue Data Catalog
Anstatt Ihren Regelsatz direkt in jedem Spark-Skript zu definieren, können Sie einen Regelsatz einmal im AWS Glue-Datenkatalog erstellen und ihn zur Laufzeit aus Ihrer Amazon EMR Spark-Anwendung abrufen. Auf diese Weise können Sie einen Regelsatz an einem Ort versionieren und ihn für Amazon EMR Spark-Workloads, AWS Glue ETL-Jobs und Evaluierungen gemeinsam nutzen.
-
Erstellen Sie den Regelsatz in AWS Glue. Erstellen und speichern Sie den Regelsatz mithilfe eines der folgenden Pfade:
-
In der AWS Glue-Konsole. Weitere Informationen finden Sie unter Erstellen eines neuen Regelsatzes im AWS Glue Developer Guide.
-
Über die AWS Glue Data Quality API. Weitere Informationen finden Sie
CreateDataQualityRulesetin der AWS Glue-API-Referenz.
-
-
Gewähren Sie der Spark-Workload-Rolle Zugriff. Fügen Sie
glue:GetDataQualityRulesetdie Rolle hinzu, die Ihre Amazon EMR Spark-Anwendung einnimmt. -
Rufen Sie den Regelsatz in Ihrem Spark-Skript ab. Rufen Sie
GetDataQualityRulesetmit boto3 auf, extrahieren Sie dasRulesetFeld und übergeben Sie die DQDL-Zeichenfolge an.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, }, )