Crawler-Verhalten anpassen - AWS Glue

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.

Crawler-Verhalten anpassen

Wenn ein Crawler ausgeführt wird, erkennt er Änderungen an Ihrem Datenspeicher, die zu einem Schema oder einer Partition führen, die sich vom letzten Crawl unterscheiden. Sie können die AWS Management Console oder die AWS Glue API verwenden, um zu konfigurieren, wie Ihr Crawler bestimmte Arten von Änderungen verarbeitet.

Console

Beim Definieren eines Crawlers mithilfe der AWS Glue-Konsole haben Sie mehrere Optionen für die Konfiguration des Verhaltens Ihres Crawlers. Weitere Informationen zur Verwendung der AWS Glue-Konsole zum Hinzufügen eines Crawlers finden Sie unter Konfiguration eines Crawlers.

Wenn ein Crawler auf einem zuvor durchsuchten Datenspeicher angewendet wird, erkennt er möglicherweise, dass sich ein Schema geändert hat oder dass einige Objekte im Datenspeicher inzwischen gelöscht wurden. Der Crawler protokolliert Schemaänderungen. Je nach der Art von Quelle für den Crawler werden unabhängig von der Schemaänderungsrichtlinie möglicherweise neue Tabellen und Partitionen erstellt.

Um anzugeben, wie sich ein Crawler verhält, wenn er Schemaänderungen erkennt, können Sie eine der folgenden Aktionen in der Konsole auswählen:

  • Aktualisieren der Tabellendefinition im Data Catalog – Fügen Sie neue Spalten hinzu, entfernen Sie fehlende und ändern Sie die Definition vorhandener Spalten in AWS Glue Data Catalog. Entfernen Sie alle Metadaten, die nicht vom Crawler festgelegt wurden. Dies ist die Standardeinstellung.

  • Nur neue Spalten hinzufügen – Fügen Sie bei Tabellen, die mit einem Amazon-S3-Datenspeicher verknüpft sind, neue Spalten hinzu, sobald sie entdeckt werden. Entfernen Sie aber nicht den Typ der vorhandenen Spalten im Data Catalog und ändern Sie diesen nicht. Wählen Sie diese Option, wenn die aktuellen Spalten im Data Catalog korrekt sind und Sie nicht möchten, dass der Crawler den Typ der vorhandenen Spalten entfernt oder ändert. Wenn sich ein grundlegendes Amazon-S3-Tabellenattribut ändert, z. B. Klassifizierung, Komprimierungstyp oder CSV-Trennzeichen, kennzeichnen Sie die Tabelle als veraltet. Behalten Sie das Ein- und Ausgabeformt im Data Catalog bei. Aktualisieren Sie SerDe Parameter nur, wenn es sich um einen Parameter handelt, der vom Crawler festgelegt wurde. Ändern Sie bei allen anderen Datenspeichern vorhandene Tabellendefinitionen.

  • Änderung ignorieren und Tabelle im Data Catalog nicht aktualisieren – Es werden nur neue Tabellen und Partitionen erstellt.

    Dies ist die Standardeinstellung für inkrementelle Crawls.

Ein Crawler kann auch neue oder geänderte Partitionen entdecken. Standardmäßig werden neue Partitionen hinzugefügt und vorhandene Partitionen werden bei Änderung aktualisiert. Sie können außerdem eine Crawler-Konfigurationsoption in der AWS Glue-Konsole auf Update all new and existing partitions with metadata from the table (Alle neuen und vorhandenen Partitionen mit Metadaten aus der Tabelle aktualisieren) festlegen. Wenn diese Option festgelegt ist, erben Partitionen Metadateneigenschaften — wie ihre Klassifizierung, ihr Eingabeformat, ihr Ausgabeformat, ihre SerDe Informationen und ihr Schema — von ihrer übergeordneten Tabelle. Änderungen an diesen Eigenschaften in einer Tabelle werden an die zugehörigen Partitionen weitergegeben. Wenn diese Konfigurationsoption für einen vorhandenen Crawler festgelegt ist, werden vorhandene Partitionen entsprechend den Eigenschaften der übergeordneten Tabelle aktualisiert, wenn der Crawler das nächste Mal ausgeführt wird.

Zur Angabe der Aktionen, die ein Crawler durchführt, wenn er ein gelöschtes Objekt im Datenspeicher findet, wählen Sie eine der folgenden Aktionen aus:

  • Löschen von Tabellen und Partitionen aus dem Data Catalog

  • Änderung ignorieren und Tabelle im Data Catalog nicht aktualisieren

    Dies ist die Standardeinstellung für inkrementelle Crawls.

  • Kennzeichnen der Tabelle als veraltet im Data Catalog – Dies ist die Standardeinstellung.

AWS CLI
aws glue create-crawler \ --name "your-crawler-name" \ --role "your-iam-role-arn" \ --database-name "your-database-name" \ --targets 'S3Targets=[{Path="s3://your-bucket-name/path-to-data"}]' \ --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": {"AddOrUpdateBehavior": "InheritFromTable"}, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
API

Wenn Sie einen Crawler mithilfe der AWS Glue API definieren, können Sie aus mehreren Feldern wählen, um Ihren Crawler zu konfigurieren. Die SchemaChangePolicy in der Crawler-API bestimmt, welche Aktionen der Crawler durchführt, wenn er ein geändertes Schema oder ein gelöschtes Objekt entdeckt. Der Crawler protokolliert während seiner Ausführung Schemaänderungen.

Python-Beispielcode, der die Crawler-Konfigurationsoptionen zeigt

import boto3 import json # Initialize a boto3 client for AWS Glue glue_client = boto3.client('glue', region_name='us-east-1') # Replace 'us-east-1' with your desired AWS region # Define the crawler configuration crawler_configuration = { "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } } configuration_json = json.dumps(crawler_configuration) # Create the crawler with the specified configuration response = glue_client.create_crawler( Name='your-crawler-name', # Replace with your desired crawler name Role='crawler-test-role', # Replace with the ARN of your IAM role for Glue DatabaseName='default', # Replace with your target Glue database name Targets={ 'S3Targets': [ { 'Path': "s3://your-bucket-name/path/", # Replace with your S3 path to the data }, ], # Include other target types like 'JdbcTargets' if needed }, Configuration=configuration_json, # Include other parameters like Schedule, Classifiers, TablePrefix, SchemaChangePolicy, etc., as needed ) print(response)a

Wenn ein Crawler ausgeführt wird, werden neue Tabellen und Partitionen immer unabhängig von der Schemaänderungsrichtlinie erstellt. Sie können im UpdateBehavior-Feld in der SchemaChangePolicy-Struktur eine der folgenden Aktionen auswählen, um festzulegen, was der Crawler macht, wenn er ein geändertes Tabellenschema entdeckt:

  • UPDATE_IN_DATABASE – Aktualisieren der Tabelle in AWS Glue Data Catalog. Fügen Sie neue Spalten hinzu, entfernen Sie fehlende und ändern Sie die Definitionen vorhandener Spalten. Entfernen Sie alle Metadaten, die nicht vom Crawler festgelegt wurden.

  • LOG – Änderung ignorieren und Tabelle im Data Catalog nicht aktualisieren.

    Dies ist die Standardeinstellung für inkrementelle Crawls.

Sie können die SchemaChangePolicy-Struktur auch mithilfe eines JSON-Objekts überschreiben, das über das Configuration-Feld der Crawler-API bereitgestellt wird. Das JSON-Objekt kann ein Schlüssel-Wert-Paar enthalten, um die Richtlinie so einzurichten, dass vorhandene Spalten nicht aktualisiert und nur neue Spalten hinzugefügt werden. Sie können beispielsweise das folgende JSON-Objekt als Zeichenfolge bereitstellen:

{ "Version": 1.0, "CrawlerOutput": { "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } }

Diese Option entspricht der Option Add new columns only (Nur neue Spalten hinzufügen) in der AWS Glue-Konsole. Sie überschreibt die SchemaChangePolicy-Struktur für Tabellen, die nur aus dem Crawling von Amazon-S3-Datenspeichern herrühren. Wählen Sie diese Option aus, wenn Sie die Metadaten so erhalten möchten, wie Sie im Data Catalog (der ursprüngliche Quelle) vorhanden sind. Neue Spalten werden, einschließlich verschachtelter Datentypen, hinzugefügt, wenn sie entdeckt werden. Vorhandene Spalten werden aber nicht entfernt und der Typ nicht geändert. Wenn sich ein Amazon-S3-Tabellenattribut wesentlich ändert, kennzeichnen Sie die Tabelle als veraltet und protokollieren Sie eine Warnung, aus der hervorgeht, dass ein nicht kompatibles Attribut aufgelöst werden muss. Diese Option gilt nicht für inkrementelle Crawler.

Wenn ein Crawler auf einen zuvor durchsuchten Datenspeicher angewendet wird, erkennt er möglicherweise neue oder geänderte Partitionen. Standardmäßig werden neue Partitionen hinzugefügt und vorhandene Partitionen werden bei Änderung aktualisiert. Sie können außerdem eine Crawler-Konfigurationsoption auf InheritFromTable festlegen (entspricht der Option Update all new and existing partitions with metadata from the table (Alle neuen und vorhandenen Partitionen mit Metadaten aus der Tabelle aktualisieren) der AWS Glue-Konsole). Wenn diese Option gesetzt ist, erben Partitionen Metadateneigenschaften von ihrer übergeordneten Tabelle, wie z. B. ihre Klassifizierung, ihr Eingabeformat, ihr Ausgabeformat, ihre SerDe Informationen und ihr Schema. Eigenschaftsänderungen an der übergeordneten Tabelle werden an die zugehörigen Partitionen weitergegeben.

Wenn diese Konfigurationsoption für einen vorhandenen Crawler festgelegt ist, werden vorhandene Partitionen entsprechend den Eigenschaften der übergeordneten Tabelle aktualisiert, wenn der Crawler das nächste Mal ausgeführt wird. Dieses Verhalten wird im Configuration-Feld der Crawler-API festgelegt. Sie können beispielsweise das folgende JSON-Objekt als Zeichenfolge bereitstellen:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" } } }

Über das Configuration-Feld der Crawler-API können mehrere Konfigurationsoptionen festgelegt werden. So können Sie beispielsweise zum Konfigurieren der Crawler-Ausgabe für Partitionen und Tabellen eine Zeichenfolgendarstellung des folgenden JSON-Objekts bereitstellen:

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } } }

Zur Festlegung der Aktionen, die ein Crawler durchführt, wenn er ein gelöschtes Objekt im Datenspeicher findet, können Sie eine der folgenden Aktionen auswählen. Das DeleteBehavior-Feld in der SchemaChangePolicy-Struktur in der Crawler-API legt fest, was ein Crawler macht, wenn er ein gelöschtes Objekt erkennt.

  • DELETE_FROM_DATABASE – Löschen Sie Tabellen und Partitionen aus dem Data Catalog.

  • LOG – Ignorieren Sie die Änderung. Aktualisieren Sie den Data Catalog nicht. Schreiben Sie stattdessen eine Protokollmeldung.

  • DEPRECATE_IN_DATABASE – Kennzeichnen Sie die Tabelle im Data Catalog als veraltet. Dies ist die Standardeinstellung.