View a markdown version of this page

Amazon EMR-Datenqualität - Amazon EMR

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.

Amazon EMR-Datenqualität

Mit Amazon EMR Data Quality, unterstützt von AWS Glue Data Quality, können Sie die Qualität der Daten messen und überwachen, die Ihre EMR Serverless Spark-Workloads lesen und schreiben, ohne die Spark-Anwendung verlassen zu müssen. Auf dieser Seite werden die Voraussetzungen und die exemplarische Vorgehensweise für EMR Serverless behandelt. Konzepte, APIs, Überwachung und Fehlerbehebung finden Sie unter Amazon EMR Data Quality im Amazon EMR Management Guide.

Voraussetzungen

Amazon EMR Data Quality ist standardmäßig in den Amazon EMR-Versionen emr-spark-8.1.0 und höher installiert. Es werden nur Apache Spark-Workloads unterstützt.

Die IAM-Job-Runtime-Rolle, die Ihre EMR Serverless-Anwendung annimmt (--execution-role-arnweitergegebenstart-job-run), 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 Einen gespeicherten Regelsatz aus dem AWS Glue-Datenkatalog abrufen.

Die folgende Inline-Richtlinie gewährt die Mindestberechtigungen, die für die Veröffentlichung von Datenqualitätsergebnissen aus einer EMR Serverless 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

  1. Erstellen Sie eine serverlose EMR-Anwendung. Verwenden Sie die Version emr-spark-8.1.0 oder eine spätere Version. Erstellen Sie eine Spark-Anwendung und fügen Sie eine Jobrolle hinzu, die über die unter aufgeführten Berechtigungen verfügtVoraussetzungen.

    Um beispielsweise eine Spark-Anwendung zu erstellen, führen Sie folgenden Befehl aus:

    aws emr-serverless create-application \ --name My_Spark_DataQuality_Application \ --release-label emr-spark-8.1.0 \ --type SPARK
  2. Definieren Sie einen Regelsatz und werten Sie ihn aus. 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 results DataFrame enthält eine Zeile pro Regel mit den folgenden Spalten:Rule,, undOutcome. FailureReason EvaluatedMetrics Zeilen mit einem „Outcomevon“ Failed enthalten den beobachteten Wert inFailureReason.

  3. Reichen Sie den ausgeführten Job ein. Reichen Sie das Skript als Job ein, der für Ihre Anwendung ausgeführt wird.

    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" } }'
  4. Rufen Sie das Ergebnis ab. Nachdem der Joblauf 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 publishToDataCatalogTarget mit einem DatabaseName und festlegtTableName, wird der Lauf auf der Registerkarte Datenqualität dieser Katalogtabelle in der AWS Glue-Konsole angezeigt.

    aws glue list-data-quality-results-v2 --max-results 5 aws glue get-data-quality-result-v2 --result-id <result-id>

Erfahren Sie mehr über Amazon EMR Data Quality

Die vollständige Referenz finden Sie in den folgenden Themen im Amazon EMR Management Guide: