Wie erkennt der AWS-Glue-Crawler das Schema?

Letzte Aktualisierung: 27.08.2021

Ich führe einen AWS Glue-Crawler aus. Der Crawler erstellt mehrere Tabellen, obwohl die Schemata ähnlich aussehen. Ich möchte wissen, wie mein Crawler das Schema erkennt.

Lösung

Wenn Sie Ihren AWS Glue-Crawler ausführen, führt der Crawler Folgendes aus:

  1. Klassifiziert die Daten
  2. Gruppiert die Daten in Tabellen oder Partitionen
  3. Schreibt Metadaten in den AWS Glue-Datenkatalog

Im Folgenden erfahren Sie, was passiert, wenn Sie den Crawler ausführen und wie der Crawler das Schema erkennt.

Definieren eines Crawlers

Wenn Sie einen AWS Glue-Crawler definieren, können Sie einen oder mehrere benutzerdefinierte Klassifikatoren auswählen, die das Format Ihrer Daten auswerten, um auf ein Schema zu schließen. Wenn der Crawler ausgeführt wird, wird der erste Klassifikator in Ihrer Liste, der Ihren Datenspeicher erfolgreich erkennt, verwendet, um ein Schema für Ihre Tabelle zu erstellen. Sie definieren die benutzerdefinierten Klassifikatoren, bevor Sie den Crawler definieren. Wenn der Crawler ausgeführt wird, verwendet der Crawler den von Ihnen definierten benutzerdefinierten Klassifikator, um eine Übereinstimmung im Datenspeicher zu finden. Die Übereinstimmung mit jedem Klassifikator erzeugt eine Gewissheit. Wenn der Klassifikator während der Verarbeitung Sicherheit = 1,0 zurückgibt, ist der Crawler zu 100 Prozent sicher, dass der Klassifikator das richtige Schema erstellen kann. In diesem Fall hört der Crawler auf, andere Klassifikatoren aufzurufen, und erstellt dann eine Tabelle mit dem Klassifikator, der dem benutzerdefinierten Klassifikator entspricht.

Wenn AWS Glue keinen benutzerdefinierten Klassifikator findet, der mit 100-prozentiger Sicherheit zum Eingabedatenformat passt, ruft AWS Glue die integrierten Klassifikatoren auf. Der eingebaute Klassifikator gibt entweder Sicherheit = 1,0 zurück, wenn das Format übereinstimmt, oder Sicherheit = 0,0, wenn das Format nicht übereinstimmt. Wenn kein Klassifikator die Sicherheit = 1,0 zurückgibt, verwendet AWS Glue die Ausgabe des Klassifikators mit der höchsten Sicherheit. Wenn kein Klassifikator eine Sicherheit über 0,0 zurückgibt, gibt AWS Glue die Standardklassifizierungszeichenfolge von UNKNOWN zurück. Die aktuelle Liste der integrierten Klassifikatoren in AWS Glue und die Reihenfolge, in der sie aufgerufen werden, finden Sie unter Integrierte Klassifikatoren in AWS Glue.

Schema-Erkennung im Crawler

Während des ersten Crawler-Laufs liest der Crawler entweder die ersten 1.000 Datensätze oder das erste Megabyte jeder Datei, um auf das Schema zu schließen. Die Menge der gelesenen Daten hängt vom Dateiformat und der Verfügbarkeit eines gültigen Datensatzes ab. Wenn es sich bei der Eingabedatei beispielsweise um eine JSON-Datei handelt, liest der Crawler die ersten 1 MB der Datei, um auf das Schema zu schließen. Wenn ein gültiger Datensatz innerhalb der ersten 1 MB der Datei gelesen wird, wird der Crawler auf das Schema schließen. Wenn der Crawler das Schema nach dem Lesen der ersten 1 MB nicht ableiten kann, liest der Crawler bis zu einem Maximum von 10 MB der Datei und erhöht jeweils 1 MB. Bei CSV-Dateien liest der Crawler entweder die ersten 100 Datensätze oder die ersten 1 MB Daten, je nachdem, was zuerst kommt. Bei Parquet-Dateien schließt der Crawler direkt aus der Datei auf das Schema. Der Crawler vergleicht die aus allen Unterordnern und Dateien abgeleiteten Schemas und erstellt dann eine oder mehrere Tabellen. Wenn ein Crawler eine Tabelle erstellt, berücksichtigt er die folgenden Faktoren:

  • Datenkompatibilität, um zu überprüfen, ob die Daten dasselbe Format, denselben Komprimierungsart und denselben Include-Pfad haben
  • Schemaähnlichkeit, um zu überprüfen, wie ähnlich die Schemata in Bezug auf den Partitionsschwellenwert und die Anzahl der verschiedenen Schemata sind

Damit Schemata als ähnlich betrachtet werden, müssen die folgenden Bedingungen zutreffen:

  • Der Partitionsschwellenwert liegt über 0,7 (70 %).
  • Die maximale Anzahl verschiedener Schemata (in diesem Zusammenhang auch als „Cluster“ bezeichnet) überschreitet 5 nicht.

Der Crawler leitet das Schema auf Ordnerebene ab und vergleicht die Schemata über alle Ordner hinweg. Wenn die verglichenen Schemas übereinstimmen, d. h. wenn der Partitionsschwellenwert höher als 70 % ist, werden die Schemata als Partitionen einer Tabelle bezeichnet. Wenn sie nicht übereinstimmen, erstellt der Crawler eine Tabelle für jeden Ordner, was zu einer höheren Anzahl von Tabellen führt.

Beispielszenarien

Beispiel 1: Angenommen, der Ordner DOC-EXAMPLE-FOLDER1 hat 10 Dateien, 8 Dateien mit Schema SCH_A und 2 Dateien mit SCH_B.

Angenommen, die Dateien mit dem Schema SHC_A ähneln den folgenden:

{ "id": 1, "first_name": "John", "last_name": "Doe"}
{ "id": 2, "first_name": "Li", "last_name": "Juan"}

Angenommen, die Dateien mit dem Schema SCH_B ähneln den folgenden:

{"city":"Dublin","country":"Ireland"}
{"city":"Paris","country":"France"}

Wenn der Crawler den Pfad s3://DOC-EXAMPLE-FOLDER1 des Amazon Simple Storage Service (Amazon S3) crawlt, erstellt der Crawler eine Tabelle. Die Tabelle enthält Spalten des Schemas SCH_A und SCH_B. Dies liegt daran, dass 80 % der Dateien im Pfad zum Schema SCH_A gehören und 20 % der Dateien zum Schema SCH_B. Daher wird der Partitionsschwellenwert erreicht. Außerdem hat die Anzahl der verschiedenen Schemata die Anzahl der Cluster nicht überschritten, und die Beschränkung der Clustergröße wird nicht überschritten.

Beispiel 2: Angenommen, der Ordner DOC-EXAMPLE-FOLDER2 hat 10 Dateien, 7 Dateien mit dem Schema SCH_A und 3 Dateien mit dem Schema SCH_B.

Wenn der Crawler den Amazon S3-Pfad s3://DOC-EXAMPLE-FOLDER2 crawlt, erstellt der Crawler eine Tabelle für jede Datei. Dies liegt daran, dass 70 % der Dateien zum Schema SCH_A gehören und 30 % der Dateien zum Schema SCH_B. Dies bedeutet, dass der Partitionsschwellenwert nicht erreicht wird. Sie können die Crawler-Protokolle in Amazon CloudWatch überprüfen, um Informationen zu den erstellten Tabellen zu erhalten.

Crawler-Optionen

  • Erstellen eines einzelnen Schemas: Um den Crawler so zu konfigurieren, dass er die Schemaähnlichkeit ignoriert und nur ein Schema erstellt, verwenden Sie die Option Ein einzelnes Schema für jeden S3-Pfad erstellen. Weitere Informationen finden Sie unter Erstellen eines einzelnen Schemas für jeden Amazon S3-Include-Include-Pfad. Wenn der Crawler jedoch Dateninkompatibilität feststellt, erstellt der Crawler immer noch mehrere Tabellen.
  • Angeben des Tabellenspeicherorts: Mit der Crawler-Option auf Tabellenebene können Sie dem Crawler mitteilen, wo sich die Tabellen befinden und wie die Partitionen erstellt werden sollen. Wenn Sie einen Wert auf Tabellenebene angeben, wird die Tabelle auf dieser absoluten Ebene aus dem Amazon S3 Bucket erstellt. Bei der Konfiguration des Crawlers auf der Konsole können Sie einen Wert für die Crawler-Option auf Tabellenebene angeben. Der Wert muss eine positive ganze Zahl sein, die die Position der Tabelle angibt (die absolute Ebene im Datensatz). Die Ebene für den Ordner der obersten Ebene ist 1. Wenn zum Beispiel für den Pfad mydataset/a/b die Ebene auf 3 gesetzt ist, wird die Tabelle am Ort mydataset/a/b erstellt. Weitere Informationen finden Sie unter So geben Sie den Tabellenspeicherort an.

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?