Materialisierte Ansichten - AWS Lake Formation

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.

Materialisierte Ansichten

Im AWS Glue Datenkatalog ist eine materialisierte Ansicht eine verwaltete Tabelle, in der das vorberechnete Ergebnis einer SQL-Abfrage im Apache Iceberg-Format gespeichert wird. Im Gegensatz zu Standard-Datenkatalogsichten, die die Abfrage bei jedem Zugriff ausführen, speichern materialisierte Ansichten die Abfrageergebnisse physisch und aktualisieren sie, wenn sich die zugrunde liegenden Quelltabellen ändern. Sie können materialisierte Ansichten mit Apache Spark Version 3.5.6+ in Amazon Athena, Amazon EMR oder erstellen. AWS Glue

Materialisierte Ansichten verweisen auf Apache Iceberg-Tabellen, die im AWS Glue Datenkatalog registriert sind, wobei vorberechnete Daten als Apache Iceberg-Tabellen in Amazon S3 S3-Tabellen oder Amazon S3 S3-Allzweck-Buckets gespeichert sind, sodass sie von mehreren Abfrage-Engines wie Amazon Athena, Amazon Redshift und Iceberg-kompatiblen Engines von Drittanbietern aus zugänglich sind.

Differenzierung materialisierter Ansichten von anderen Ansichtstypen

Materialisierte Ansichten unterscheiden sich grundlegend von AWS Glue Datenkatalogansichten, Apache Spark-Ansichten und Amazon Athena Athena-Ansichten. Während es sich bei Datenkatalogsichten um virtuelle Tabellen handelt, die die SQL-Abfragedefinition bei jedem Zugriff ausführen, speichern materialisierte Ansichten die vorberechneten Abfrageergebnisse physisch. Dadurch werden redundante Berechnungen vermieden und die Abfrageleistung für komplexe Transformationen, auf die häufig zugegriffen wird, erheblich verbessert.

Materialisierte Ansichten unterscheiden sich auch von herkömmlichen Datentransformationspipelines, die mit AWS Glue ETL- oder benutzerdefinierten Spark-Jobs erstellt wurden. Anstatt benutzerdefinierten Code für die Änderungserkennung, inkrementelle Aktualisierungen und Workflow-Orchestrierung zu schreiben, definieren Sie materialisierte Ansichten mithilfe der Standard-SQL-Syntax. Der AWS Glue Datenkatalog überwacht automatisch Quelltabellen, erkennt Änderungen und aktualisiert materialisierte Ansichten mithilfe einer vollständig verwalteten Recheninfrastruktur.

Anwendungsfälle

Im Folgenden sind wichtige Anwendungsfälle für materialisierte Ansichten aufgeführt:

  • Beschleunigen Sie komplexe analytische Abfragen — Erstellen Sie materialisierte Ansichten, die teure Verknüpfungen, Aggregationen und Fensterfunktionen vorab berechnen. Spark-Engines schreiben nachfolgende Abfragen automatisch neu, um die im Voraus berechneten Ergebnisse zu verwenden, wodurch die Latenz von Abfragen und die Rechenkosten reduziert werden.

  • Vereinfachen Sie Datenumwandlungs-Pipelines — Ersetzen Sie komplexe ETL-Jobs, die sich um die Änderungserkennung, inkrementelle Updates und Workflow-Orchestrierung kümmern, durch einfache SQL-basierte Definitionen für materialisierte Ansichten. Der AWS Glue Datenkatalog verwaltet die gesamte betriebliche Komplexität automatisch.

  • Ermöglichen Sie Self-Service-Analysen mit geregeltem Datenzugriff — Erstellen Sie kuratierte materialisierte Ansichten, die Rohdaten in einsatzbereite Datensätze umwandeln. Gewähren Sie Benutzern Zugriff auf materialisierte Ansichten, ohne die zugrunde liegenden Quelltabellen offenzulegen. Dies vereinfacht das Sicherheitsmanagement und ermöglicht gleichzeitig Self-Service-Analysen.

  • Optimieren Sie das Feature-Engineering für maschinelles Lernen — Definieren Sie materialisierte Ansichten, die Feature-Transformationen für ML-Modelle implementieren. Die automatische Aktualisierungsfunktion stellt sicher, dass die Feature-Speicher bei der Weiterentwicklung der Quelldaten aktuell bleiben, während die inkrementelle Aktualisierung die Rechenkosten minimiert.

  • Implementieren Sie eine effiziente gemeinsame Nutzung von Daten — Erstellen Sie materialisierte Ansichten, die Daten für bestimmte Nutzer filtern und transformieren. Teilen Sie materialisierte Ansichten über Konten und Regionen hinweg AWS Lake Formation, indem Sie die Notwendigkeit von Datenduplikationen vermeiden und gleichzeitig eine zentralisierte Verwaltung aufrechterhalten.

Die wichtigsten Konzepte

Automatische Aktualisierung

Die automatische Aktualisierung ist eine Funktion, die Ihre Quelltabellen kontinuierlich überwacht und materialisierte Ansichten gemäß einem von Ihnen definierten Zeitplan aktualisiert. Wenn Sie eine materialisierte Ansicht erstellen, können Sie mithilfe einer zeitbasierten Planung mit Intervallen von bis zu einer Stunde eine Aktualisierungshäufigkeit angeben. Der AWS Glue Datenkatalog verwendet eine verwaltete Spark-Recheninfrastruktur, um Aktualisierungsvorgänge im Hintergrund auszuführen und alle Aspekte der Änderungserkennung und der inkrementellen Aktualisierungen transparent zu handhaben.

Wenn sich die Quelldaten zwischen den Aktualisierungsintervallen ändern, ist die materialisierte Ansicht vorübergehend veraltet. Abfragen, die direkt auf die materialisierte Ansicht zugreifen, geben möglicherweise veraltete Ergebnisse zurück, bis die nächste geplante Aktualisierung abgeschlossen ist. In Szenarien, die sofortigen Zugriff auf die aktuellsten Daten erfordern, können Sie mit dem REFRESH MATERIALIZED VIEW SQL-Befehl eine manuelle Aktualisierung ausführen.

Inkrementelle Aktualisierung

Die inkrementelle Aktualisierung ist eine Optimierungstechnik, bei der nur die Daten verarbeitet werden, die sich in den Quelltabellen seit der letzten Aktualisierung geändert haben, anstatt die gesamte materialisierte Ansicht neu zu berechnen. Der AWS Glue Datenkatalog nutzt die Metadatenebene von Apache Iceberg, um Änderungen in Quelltabellen effizient nachzuverfolgen und festzustellen, welche Teile der materialisierten Ansicht aktualisiert werden müssen.

Dieser Ansatz reduziert die Rechenkosten und die Aktualisierungsdauer im Vergleich zu vollständigen Aktualisierungsvorgängen erheblich, insbesondere bei großen Datensätzen, bei denen sich nur ein kleiner Prozentsatz der Daten zwischen den Aktualisierungszyklen ändert. Der inkrementelle Aktualisierungsmechanismus funktioniert automatisch. Sie müssen keine benutzerdefinierte Logik schreiben, um geänderte Daten zu erkennen oder zu verarbeiten.

Automatisches Umschreiben von Abfragen

Automatisches Umschreiben von Abfragen ist eine Funktion zur Abfrageoptimierung, die in Spark-Engines von Amazon Athena, Amazon EMR und verfügbar ist. AWS Glue Wenn Sie eine Abfrage anhand von Basistabellen ausführen, analysiert der Spark-Optimierer Ihren Abfrageplan und ermittelt automatisch, ob verfügbare materialisierte Ansichten die Abfrage effizienter erfüllen können. Wenn eine geeignete materialisierte Ansicht vorhanden ist, schreibt der Optimierer die Abfrage transparent neu, sodass die vorberechneten Ergebnisse verwendet werden, anstatt die Basistabellen zu verarbeiten.

Diese Optimierung erfolgt, ohne dass Änderungen am Anwendungscode oder an den Abfrageanweisungen erforderlich sind. Der Spark-Optimierer stellt sicher, dass das automatische Umschreiben von Abfragen nur angewendet wird, wenn die materialisierte Ansicht aktuell ist und zu genauen Ergebnissen führen kann. Wenn eine materialisierte Ansicht veraltet ist oder die Abfrageanforderungen nicht vollständig erfüllt, führt der Optimierer den ursprünglichen Abfrageplan anhand der Basistabellen aus, wobei der Korrektheit Vorrang vor der Leistung eingeräumt wird.

Rolle des View-Definers

Eine materialisierte Ansicht funktioniert auf der Grundlage der Berechtigungen der IAM-Rolle, mit der sie erstellt wurde. Sie wird als View Definer-Rolle bezeichnet. Die Definerrolle muss Lesezugriff auf alle Basistabellen haben, auf die in der Definition der materialisierten Ansicht verwiesen wird, und muss über Berechtigungen zum Erstellen von Tabellen in der Zieldatenbank verfügen. Wenn der AWS Glue Datenkatalog eine materialisierte Ansicht aktualisiert, übernimmt er die Rolle des Definierers, um auf Quelltabellen zuzugreifen und aktualisierte Ergebnisse zu schreiben.

Dieses Sicherheitsmodell ermöglicht es Ihnen, Benutzern Zugriff auf materialisierte Ansichten zu gewähren, ohne ihnen direkte Berechtigungen für die zugrunde liegenden Quelltabellen zu gewähren. Wenn die Rolle des View Definers den Zugriff auf eine Basistabelle verliert, schlagen nachfolgende Aktualisierungsvorgänge fehl, bis die Berechtigungen wiederhergestellt sind.

Berechtigungen für materialisierte Ansichten

Um materialisierte Ansichten zu erstellen und zu verwalten, müssen Sie Berechtigungen konfigurieren AWS Lake Formation . Die IAM-Rolle, die die materialisierte Ansicht erstellt (die Definer-Rolle), erfordert spezielle Berechtigungen für Quelltabellen und Zieldatenbanken.

Erforderliche Berechtigungen für die Definer-Rolle

Die Definiererrolle muss über die folgenden Lake Formation Formation-Berechtigungen verfügen:

  • Für Quelltabellen — SELECT- oder ALL-Berechtigungen ohne Zeilen-, Spalten- oder Zellenfilter

  • In der Zieldatenbank — CREATE_TABLE-Berechtigung

  • Über den AWS Glue Datenkatalog — GetTable und API-Berechtigungen CreateTable

Wenn Sie eine materialisierte Ansicht erstellen, wird der ARN der Definiererrolle in der Ansichtsdefinition gespeichert. Der AWS Glue Datenkatalog übernimmt diese Rolle, wenn automatische Aktualisierungsvorgänge ausgeführt werden. Wenn die Definiererrolle den Zugriff auf Quelltabellen verliert, schlagen Aktualisierungsvorgänge fehl, bis die Berechtigungen wiederhergestellt sind.

IAM-Berechtigungen für Jobs AWS Glue

Für die IAM-Rolle Ihres AWS Glue Jobs sind die folgenden Berechtigungen erforderlich:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetCatalogs", "glue:GetTable", "glue:GetTables", "glue:CreateTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetDatabase", "glue:GetDatabases", "cloudwatch:PutMetricData" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:*:/aws-glue/*" ] }, { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }

Die Rolle, die Sie für die automatische Aktualisierung von Materialized View verwenden, muss über die iam: PassRole -Berechtigung für die Rolle verfügen.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::111122223333:role/materialized-view-role-name" ] } ] }

Damit Glue die materialisierte Ansicht automatisch für Sie aktualisiert, muss die Rolle außerdem über die folgende Vertrauensrichtlinie verfügen, die es dem Dienst ermöglicht, die Rolle zu übernehmen.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::111122223333:role/materialized-view-role-name" ] } ] }

Wenn die Materialized View in S3 Tables Buckets gespeichert ist, müssen Sie der Rolle außerdem die folgende Berechtigung hinzufügen.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3tables:PutTableMaintenanceConfiguration" ], "Resource": "arn:aws:s3tables:*:123456789012:*" } ] }

Zugriff auf materialisierte Ansichten gewähren

Um anderen Benutzern Zugriff auf die Abfrage einer materialisierten Ansicht zu gewähren, verwenden Sie, AWS Lake Formation um die SELECT-Berechtigung für die Materialized View-Tabelle zu gewähren. Benutzer können die Materialized View abfragen, ohne direkten Zugriff auf die zugrunde liegenden Quelltabellen zu benötigen.

Ausführliche Informationen zur Konfiguration von Lake Formation Formation-Berechtigungen finden Sie unter Erteilen und Widerrufen von Berechtigungen für Datenkatalogressourcen im AWS Lake Formation Entwicklerhandbuch.

Materialisierte Ansichten erstellen und verwalten

Sie erstellen materialisierte Ansichten mithilfe der CREATE MATERIALIZED VIEW SQL-Anweisung in Spark-Engines. Die View-Definition spezifiziert die SQL-Abfrage, die die Transformationslogik, den Zieldatenbank- und Tabellennamen sowie die optionale Aktualisierungskonfiguration definiert. Sie können komplexe Transformationen definieren, einschließlich Aggregationen, Verknüpfungen über mehrere Tabellen hinweg, Filter und Fensterfunktionen.

CREATE MATERIALIZED VIEW sales_summary AS SELECT region, product_category, SUM(sales_amount) as total_sales, COUNT(DISTINCT customer_id) as unique_customers FROM sales_transactions WHERE transaction_date >= current_date - interval '90' day GROUP BY region, product_category;

Um die automatische Aktualisierung zu konfigurieren, nehmen Sie den Aktualisierungszeitplan in Ihre View-Definition auf:

CREATE MATERIALIZED VIEW sales_summary SCHEDULE REFRESH EVERY 1 HOUR AS SELECT region, product_category, SUM(sales_amount) as total_sales FROM sales_transactions GROUP BY region, product_category;

Sie können eine materialisierte Ansicht jederzeit manuell aktualisieren, indem Sie den REFRESH MATERIALIZED VIEW folgenden Befehl verwenden:

REFRESH MATERIALIZED VIEW sales_summary;

Um den Aktualisierungszeitplan einer vorhandenen materialisierten Ansicht zu ändern, verwenden Sie die ALTER MATERIALIZED VIEW folgende Anweisung:

ALTER MATERIALIZED VIEW sales_summary ADD SCHEDULE REFRESH EVERY 2 HOURS;

Verschachtelte materialisierte Ansichten

Sie können materialisierte Ansichten erstellen, die auf andere materialisierte Ansichten als Basistabellen verweisen, wodurch mehrstufige Datentransformationen ermöglicht werden. Wenn Sie verschachtelte Materialized Views erstellen, verfolgt der AWS Glue Datenkatalog Abhängigkeiten und verteilt Aktualisierungen automatisch über die Materialized View-Hierarchie. Wenn eine materialisierte Basisansicht aktualisiert wird, werden alle von ihr abhängigen Downstream-Materialized Views entsprechend aktualisiert.

Diese Funktion ermöglicht es Ihnen, komplexe Transformationen in logische Phasen zu zerlegen, was die Wartbarkeit verbessert und eine selektive Aktualisierung der Transformationsebenen auf der Grundlage Ihrer Datenaktualisierungsanforderungen ermöglicht.

Speicher und Datenzugriff

Materialisierte Ansichten speichern vorberechnete Ergebnisse als Apache Iceberg-Tabellen in S3-Tabellen-Buckets oder S3-Buckets für allgemeine Zwecke in Ihrem Konto. AWS Der AWS Glue Datenkatalog verwaltet alle Aspekte der Wartung von Iceberg-Tabellen, einschließlich der Komprimierung und Aufbewahrung von Snapshots, mithilfe der automatisierten Optimierungsfunktionen von S3 Tables.

Da materialisierte Ansichten als Iceberg-Tabellen gespeichert werden, können Sie sie direkt von jeder Iceberg-kompatiblen Engine lesen, einschließlich Amazon Athena, Amazon Redshift und Analyseplattformen von Drittanbietern. Dieser Zugriff auf mehrere Engines stellt sicher, dass Ihre vorberechneten Daten in Ihrem gesamten Analytics-Ökosystem ohne Datenduplizierung oder Formatkonvertierung zugänglich bleiben.

AWS Lake Formation Integration mit Berechtigungen

Sie können es verwenden AWS Lake Formation , um detaillierte Berechtigungen für materialisierte Ansichten zu verwalten. Der Ersteller der Ansicht wird automatisch Eigentümer der materialisierten Ansicht und kann anderen Benutzern oder Rollen mithilfe der benannten Ressourcenmethode oder AWS Lake Formation LF-Tags Berechtigungen gewähren.

Wenn Sie einem Benutzer die SELECT Berechtigung für eine materialisierte Ansicht gewähren, kann er die vorberechneten Ergebnisse abfragen, ohne Zugriff auf die zugrunde liegenden Quelltabellen zu benötigen. Dieses Sicherheitsmodell vereinfacht die Datenzugriffsverwaltung und ermöglicht es Ihnen, das Prinzip der geringsten Rechte zu implementieren, sodass Benutzer nur auf die spezifischen Datentransformationen zugreifen können, die sie benötigen.

Mithilfe der Funktionen zur AWS kontenübergreifenden gemeinsamen Nutzung können Sie materialisierte Ansichten für Konten, AWS Organisationen und Organisationseinheiten gemeinsam nutzen AWS Lake Formation. Mithilfe von Ressourcenlinks können Sie auch AWS regionsübergreifend auf materialisierte Ansichten zugreifen und so eine zentrale Datenverwaltung mit verteiltem Datenzugriff ermöglichen.

Überwachung und Debugging

Der AWS Glue Datenkatalog veröffentlicht alle Aktualisierungsvorgänge von materialisierten Ansichten und die zugehörigen Metriken auf Amazon CloudWatch. Sie können die Startzeit, die Endzeit, die Dauer, das verarbeitete Datenvolumen und den Aktualisierungsstatus von Aktualisierungen anhand von CloudWatch Metriken überwachen. Wenn Aktualisierungsvorgänge fehlschlagen, werden Fehlermeldungen und Diagnoseinformationen in CloudWatch Protokollen erfasst.

Sie können CloudWatch Alarme einrichten, um Benachrichtigungen zu erhalten, wenn Aktualisierungsaufträge die erwartete Dauer überschreiten oder wiederholt fehlschlagen. Der AWS Glue Datenkatalog veröffentlicht auch Änderungsereignisse sowohl für erfolgreiche als auch für fehlgeschlagene Aktualisierungsläufe, sodass Sie Materialized View-Operationen in eine umfassendere Workflow-Automatisierung integrieren können.

Um den aktuellen Status einer materialisierten Ansicht zu überprüfen, verwenden Sie den DESCRIBE MATERIALIZED VIEW SQL-Befehl, der Metadaten wie den Status der Unbeständigkeit, den Zeitstempel der letzten Aktualisierung und die Konfiguration des Aktualisierungszeitplans zurückgibt.

Verwaltung von Aktualisierungsaufträgen

Starten einer manuellen Aktualisierung

Löst eine sofortige Aktualisierung außerhalb des geplanten Intervalls aus.

Erforderliche Berechtigung: Die für den API-Aufruf verwendeten AWS Anmeldeinformationen müssen über glue:GetTable Berechtigungen für die materialisierte Ansicht verfügen.

Für den S3-Tabellenkatalog:

aws glue start-materialized-view-refresh-task-run \ --catalog-id <ACCOUNT_ID>:s3tablescatalog/<CATALOG_NAME> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME>

Für Root Catalog:

aws glue start-materialized-view-refresh-task-run \ --catalog-id <ACCOUNT_ID> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME>

Aktualisierungsstatus wird überprüft

Rufen Sie den Status eines bestimmten Aktualisierungsauftrags ab:

aws glue get-materialized-view-refresh-task-run \ --catalog-id <CATALOG_ID> \ --materialized-view-refresh-task-run-id <TASK_RUN_ID>

Aktualisierungsverlauf auflisten

Alle Aktualisierungsaufträge für eine materialisierte Ansicht anzeigen:

aws glue list-materialized-view-refresh-task-runs \ --catalog-id <CATALOG_ID> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME>
Anmerkung

Wird <ACCOUNT_ID>:s3tablescatalog/<CATALOG_NAME> für S3-Tabellen oder <ACCOUNT_ID> für den Stammkatalog verwendet.

Eine laufende Aktualisierung wird gestoppt

Brechen Sie einen laufenden Aktualisierungsauftrag ab:

aws glue stop-materialized-view-refresh-task-run \ --catalog-id <CATALOG_ID> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME>

Überwachung und Problembehebung

Es gibt drei Möglichkeiten, Aktualisierungsaufträge für Materialized Views zu überwachen:

CloudWatch Metriken

Sehen Sie sich aggregierte Metriken für all Ihre Materialized View Refresh-Jobs an unter: CloudWatch

Verfügbare Metriken:

  • AWS/Glue-Namespace mit Abmessungen:

    • CatalogId: Ihre Katalog-ID

    • DatabaseName: Datenbank, die die materialisierte Ansicht enthält

    • TableName: Name der materialisierten Ansicht

    • TaskType: Auf "“ MaterializedViewRefresh gesetzt

In der Konsole anzeigen:

  1. Navigieren Sie zu CloudWatch Konsole → Metriken

  2. Wählen Sie den AWS/Glue-Namespace

  3. Nach Dimensionen filtern: CatalogId,,, DatabaseName TableName TaskType

  4. Sehen Sie sich Kennzahlen für Erfolg, Misserfolg und Dauer von Aufträgen an

Beispiel für eine CloudWatch Metrik-Abfrage:

{AWS/Glue,CatalogId,DatabaseName,TableName,TaskType} MaterializedViewRefresh

Verwenden von AWS CLI:

aws cloudwatch get-metric-statistics \ --namespace AWS/Glue \ --metric-name <MetricName> \ --dimensions Name=CatalogId,Value=<CATALOG_ID> \ Name=DatabaseName,Value=<DATABASE_NAME> \ Name=TableName,Value=<TABLE_NAME> \ Name=TaskType,Value=MaterializedViewRefresh \ --start-time <START_TIME> \ --end-time <END_TIME> \ --period 3600 \ --statistics Sum \ --region <REGION>

CloudWatch Logs

Detaillierte Ausführungsprotokolle für einzelne Ausführungen von Aktualisierungsaufgaben anzeigen:

Protokollgruppe: /aws-glue/materialized-views/<task_run_id>

Wo <task_run_id> ist eine UUID (z. B. abc12345-def6-7890-ghij-klmnopqrstuv).

Protokolle anzeigen:

# List log streams for a task run aws logs describe-log-streams \ --log-group-name /aws-glue/materialized-views/<TASK_RUN_ID> \ --region <REGION> # Get log events aws logs get-log-events \ --log-group-name /aws-glue/materialized-views/<TASK_RUN_ID> \ --log-stream-name <LOG_STREAM_NAME> \ --region <REGION>

In der CloudWatch Konsole:

  1. Navigieren Sie zu CloudWatch → Protokollgruppen

  2. Suchen Sie nach /aws-glue/materialized-views/

  3. Wählen Sie die Protokollgruppe mit Ihrer Aufgabenausführungs-ID aus

  4. Sehen Sie sich detaillierte Ausführungsprotokolle, Fehler und die Spark-Jobausgabe an

Benachrichtigungen

Abonnieren Sie Ereignisse für Benachrichtigungen in Echtzeit über Statusänderungen bei der Aktualisierung von Jobs:

Verfügbare Ereignistypen:

  • Die Aufgabe zur Aktualisierung von Glue Materialized View wurde gestartet

  • Die Aktualisierungsaufgabe von Glue Materialized View war erfolgreich

  • Die Aktualisierungsaufgabe für Glue Materialized View ist fehlgeschlagen

  • Fehler beim Aufrufen der automatischen Aktualisierung von Glue Materialized View

Eine Regel erstellen:

aws events put-rule \ --name materialized-view-refresh-notifications \ --event-pattern '{ "source": ["aws.glue"], "detail-type": [ "Glue Materialized View Refresh Task Started", "Glue Materialized View Refresh Task Succeeded", "Glue Materialized View Refresh Task Failed", "Glue Materialized View Auto-Refresh Invocation Failure" ] }' \ --region <REGION>

Ein Ziel hinzufügen (z. B. ein SNS-Thema):

aws events put-targets \ --rule materialized-view-refresh-notifications \ --targets "Id"="1","Arn"="arn:aws:sns:<REGION>:<ACCOUNT_ID>:<TOPIC_NAME>" \ --region <REGION>

Aktualisierungsstatus anzeigen

Überprüfen Sie den Status Ihrer Materialized View-Aktualisierungsaufträge mithilfe der AWS Glue API:

aws glue get-materialized-view-refresh-task-run \ --catalog-id <CATALOG_ID> \ --materialized-view-refresh-task-run-id <TASK_RUN_ID> \ --region <REGION>

Oder listen Sie alle letzten Aktualisierungsläufe auf:

aws glue list-materialized-view-refresh-task-runs \ --catalog-id <CATALOG_ID> \ --database-name <DATABASE_NAME> \ --table-name <MV_TABLE_NAME> \ --region <REGION>

Das zeigt:

  • Uhrzeit der letzten Aktualisierung

  • Aktualisierungsstatus (ERFOLGREICH, FEHLGESCHLAGEN, LÄUFT, GESTOPPT)

  • ID der Aufgabenausführung

  • Fehlermeldungen (falls fehlgeschlagen)

Allgemeine Aktualisierungsstatus:

  • WIRD AUSGEFÜHRT: Der Aktualisierungsjob wird gerade ausgeführt

  • ERFOLGREICH: Die Aktualisierung wurde erfolgreich abgeschlossen

  • FEHLGESCHLAGEN: Bei der Aktualisierung ist ein Fehler aufgetreten

  • GESTOPPT: Die Aktualisierung wurde manuell abgebrochen

Fehlerbehebung bei fehlgeschlagenen Aktualisierungen:

Wenn eine Aktualisierung fehlschlägt, überprüfen Sie:

  1. IAM-Berechtigungen: Stellen Sie sicher, dass die Definiererrolle Zugriff auf alle Basistabellen und den Speicherort der materialisierten Ansicht hat

  2. Verfügbarkeit von Basistabellen: Stellen Sie sicher, dass alle referenzierten Tabellen existieren und zugänglich sind

  3. Gültigkeit der Abfrage: Stellen Sie sicher, dass die SQL-Abfrage für den Spark-SQL-Dialekt gültig ist

  4. Ressourcenlimits: Prüfen Sie, ob Sie die Limits für gleichzeitige Aktualisierungen für Ihr Konto erreicht haben

Verwenden Sie die GetMaterializedViewRefreshTaskRun API, um detaillierte Fehlermeldungen abzurufen.

Überlegungen und Einschränkungen

  • Materialisierte Ansichten können nur auf Apache Iceberg-Tabellen verweisen, die im AWS Glue Datenkatalog als Basistabellen registriert sind.

  • Die Erstellung von Ansichten und das automatische Umschreiben von Abfragen sind nur über Spark-Engines in Apache Spark Version 3.5.6 und höher in Amazon Athena, Amazon EMR und AWS Glue (Version 5.1) verfügbar.

  • Materialisierte Ansichten stimmen letztendlich mit Basistabellen überein. Während des Aktualisierungsfensters können Abfragen, die direkt auf die materialisierte Ansicht zugreifen, veraltete Daten zurückgeben. Führen Sie eine manuelle Aktualisierung durch, um sofort auf aktuelle Daten zuzugreifen.

  • Das minimale automatische Aktualisierungsintervall beträgt eine Stunde. In Anwendungsfällen, die häufigere Updates erfordern, führen Sie manuelle Aktualisierungen programmgesteuert mit dem Befehl aus. REFRESH MATERIALIZED VIEW

  • Beim Umschreiben von Abfragen wird der Korrektheit Vorrang vor der Leistung eingeräumt. Wenn eine materialisierte Ansicht veraltet ist oder die Abfrageanforderungen nicht genau erfüllen kann, führen Spark-Engines die ursprüngliche Abfrage anhand der Basistabellen aus.