Schritt 2: Auswahl von Datenquellen und Classifier - 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.

Schritt 2: Auswahl von Datenquellen und Classifier

Als Nächstes konfigurieren Sie die Datenquellen und Klassifikatoren für den Crawler.

Weitere Informationen zu unterstützten Datenquellen finden Sie unter. Unterstützte Datenquellen für das Crawling

Konfiguration der Datenquelle

Wählen Sie die entsprechende Option für Sind Ihre Daten bereits zugeordnet AWS Glue Tabellen? wählen Sie „Noch nicht“ oder „Ja“. Standardmäßig ist „Noch nicht“ ausgewählt.

Der Crawler kann als Quelle des Crawls direkt auf Datenspeicher zugreifen oder vorhandene Tabellen im Data Catalog als Quelle verwenden. Wenn der Crawler vorhandene Katalogtabellen verwendet, durchsucht er die Datenspeicher, die durch diese Katalogtabellen angegeben werden.

  • Noch nicht: Wählen Sie eine oder mehrere Datenquellen aus, die gecrawlt werden sollen. Ein Crawler kann mehrere Datenspeicher verschiedener Typen (Amazon S3 JDBC usw.) crawlen.

    Sie können jeweils nur einen Datenspeicher konfigurieren. Nachdem Sie die Verbindungsinformationen angegeben und Pfade und Ausschlussmuster eingeschlossen haben, haben Sie die Möglichkeit, einen weiteren Datenspeicher hinzuzufügen.

  • Ja: Wählen Sie vorhandene Tabellen aus AWS Glue Datenkatalog. Die Katalogtabellen geben die Datenspeicher an, die durchsucht werden sollen. Der Crawler kann in einem einzigen Lauf nur Katalogtabellen durchsuchen. Er kann keine anderen Quelltypen untermischen.

    Ein häufiger Grund zur Angabe einer Katalogtabelle als Quelle besteht darin, dass Sie die Tabelle manuell erstellt haben (da Sie die Struktur des Datenspeichers bereits kannten) und Sie möchten, dass ein Crawler die Tabelle auf dem aktuellen Stand hält, wozu das Hinzufügen neuer Partitionen gehört. Weitere Informationen zu anderen Gründen finden Sie unter Aktualisieren von manuell erstellten Data-Catalog-Tabellen mit Crawlern.

    Wenn Sie als Crawler-Quelltyp vorhandene Tabellen angeben, gelten die folgenden Bedingungen:

    • Der Datenbankname ist optional.

    • Nur Katalogtabellen, die Amazon S3-, Amazon DynamoDB- oder Delta Lake-Datenspeicher angeben, sind zulässig.

    • Es werden keine neuen Katalogtabellen erstellt, wenn der Crawler ausgeführt wird. Vorhandene Tabellen werden bei Bedarf aktualisiert. Dazu gehört auch das Hinzufügen neuer Partitionen.

    • In den Datenspeichern gefundene gelöschte Objekte werden ignoriert; es werden keine Katalogtabellen gelöscht. Stattdessen schreibt der Crawler eine Protokollmeldung. (SchemaChangePolicy.DeleteBehavior=LOG)

    • Die Crawler-Konfigurationsoption zum Erstellen eines einzigen Schemas für jeden Amazon-S3-Pfad ist standardmäßig aktiviert und kann nicht deaktiviert werden. (TableGroupingPolicy=CombineCompatibleSchemas) Weitere Informationen finden Sie unter Erstellen eines einzelnen Schemas für jeden Amazon S3 S3-Include-Pfad.

    • Sie können Katalogtabellen als Quelle nicht mit anderen Arten von Quellen (z. B. Amazon S3 oder Amazon DynamoDB) mischen.

Um Delta-Tabellen zu verwenden, erstellen Sie zunächst eine Delta-Tabelle mit Athena DDL oder dem AWS Glue API.

Stellen Sie mit Athena den Speicherort auf Ihren Amazon S3 S3-Ordner und den Tabellentyp auf 'DELTA' ein.

CREATE EXTERNAL TABLE database_name.table_name LOCATION 's3://bucket/folder/' TBLPROPERTIES ('table_type' = 'DELTA')

Geben Sie mithilfe von den AWS Glue API den Tabellentyp in der Tabelle mit den Tabellenparametern an. Die Tabellenparameter müssen das folgende Schlüssel/Wert-Paar enthalten. Weitere Informationen zum Erstellen einer Tabelle finden Sie in der Boto3-Dokumentation für create_table.

{ "table_type":"delta" }
Datenquellen

Wählen Sie die Liste der Datenquellen aus, die vom Crawler gescannt werden sollen, oder fügen Sie diese hinzu.

(Optional) Wenn Sie JDBC als Datenquelle wählen, können Sie Ihre eigenen JDBC Treiber verwenden, wenn Sie den Verbindungszugriff angeben, in dem die Treiberinformationen gespeichert werden.

Pfad einschließen

Wenn es darum geht, zu beurteilen, was bei einem Crawl ein- bzw. ausgeschlossen werden soll, beginnt der Crawler mit der Bewertung des erforderlichen Include-Pfads. Für Amazon S3, MongoDB, MongoDB Atlas, Amazon DocumentDB (mit MongoDB-Kompatibilität) und relationale Datenspeicher müssen Sie einen Include-Pfad angeben.

Für einen Amazon-S3-Datenspeicher

Wählen Sie aus, ob Sie einen Pfad in diesem Konto oder in einem anderen Konto angeben möchten, und suchen Sie dann nach einem Amazon-S3-Pfad.

Für Amazon-S3-Datenspeicher ist die Include-Pfad-Syntax bucket-name/folder-name/file-name.ext. Um alle Objekte in einem Bucket zu durchsuchen, geben Sie nur den Bucket-Namen im Include-Pfad an. Ein Exclude-Muster bezieht sich auf den Include-Pfad.

Für einen Delta Lake-Datenspeicher

Geben Sie einen oder mehrere Amazon S3 S3-Pfade zu Delta-Tabellen als s3://anbucket/prefix/object.

Für einen Iceberg- oder Hudi-Datenspeicher

Geben Sie einen oder mehrere Amazon S3 S3-Pfade, die Ordner mit Iceberg- oder Hudi-Tabellenmetadaten enthalten, als s3://anbucket/prefix.

Bei einem Hudi-Datenspeicher kann sich der Hudi-Ordner in einem untergeordneten Ordner des Stammordners befinden. Der Crawler durchsucht alle Ordner unterhalb eines Pfades nach einem Hudi-Ordner.

Für einen Datenspeicher JDBC

Enter <database>/<schema>/<table> or <database>/<table>, abhängig vom Datenbankprodukt. Oracle Database und My unterstützen SQL kein Schema im Pfad. Sie können das Prozentzeichen (%) durch <schema> or <table>. Geben Sie beispielsweise für eine Oracle-Datenbank mit einer System-ID (SID) von einorcl, orcl/% um alle Tabellen zu importieren, auf die der in der Verbindung angegebene Benutzer Zugriff hat.

Wichtig

Bitte beachten Sie die Groß- und Kleinschreibung.

Anmerkung

Wenn Sie Ihre eigenen JDBC Treiberversionen verwenden möchten, AWS Glue Crawler verbrauchen Ressourcen in AWS Glue Jobs und Amazon S3 S3-Buckets, um sicherzustellen, dass Ihr bereitgestellter Treiber in Ihrer Umgebung ausgeführt wird. Der zusätzliche Ressourcenverbrauch wird in Ihrem Konto angezeigt. Treiber sind auf die unter Hinzufügen eines beschriebenen Eigenschaften beschränkt AWS Glue Verbindung.

Für einen MongoDB-, MongoDB-Atlas- oder Amazon-DocumentDB-Datenspeicher

Enter database/collection.

Für MongoDB, MongoDB Atlas und Amazon DocumentDB (mit MongoDB-Kompatibilität) ist die Syntax database/collection.

Für JDBC Datenspeicher lautet die Syntax entweder database-name/schema-name/table-name oderdatabase-name/table-name. Die Syntax hängt davon ab, ob die Datenbank-Engine Schemas innerhalb einer Datenbank unterstützt. Geben Sie beispielsweise für Datenbank-Engines wie My SQL oder Oracle schema-name in Ihrem Include-Pfad kein a an. Sie können das Prozentzeichen (%) für ein Schema oder eine Tabelle im Include-Pfad ersetzen, um alle Schemas oder alle Tabellen einer Datenbank darzustellen. Sie können das Prozentzeichen (%) für die Datenbank im Include-Pfad nicht ersetzen.

Maximale Transversaltiefe (nur für Iceberg- oder Hudi-Datenspeicher)

Definiert die maximale Tiefe des Amazon-S3-Pfads, die der Crawler durchqueren kann, um den Iceberg- oder Hudi-Metadatenordner in Ihrem Amazon-S3-Pfad zu erkennen. Der Zweck dieses Parameters besteht darin, die Crawler-Laufzeit zu begrenzen. Der Standardwert beträgt 10 und der Höchstwert beträgt 20.

Exclude-Muster

Diese ermöglichen es Ihnen, bestimmte Dateien oder Tabellen aus dem Crawl auszuschließen. Der Exclude-Pfad bezieht sich auf den Include-Pfad. Um beispielsweise eine Tabelle in Ihrem JDBC Datenspeicher auszuschließen, geben Sie den Tabellennamen in den Ausschlusspfad ein.

Ein Crawler stellt über eine Verbindung zu einem JDBC Datenspeicher eine Verbindung zu einem Datenspeicher her AWS Glue Verbindung, die eine JDBC URI Verbindungszeichenfolge enthält. Der Crawler hat nur Zugriff auf Objekte in der Datenbank-Engine mithilfe des JDBC Benutzernamens und des Kennworts in AWS Glue Verbindung. Der Crawler kann nur Tabellen erstellen, auf die er über die JDBC Verbindung zugreifen kann. Nachdem der Crawler mit dem auf die Datenbank-Engine zugegriffen hat JDBCURI, wird der Include-Pfad verwendet, um zu bestimmen, welche Tabellen in der Datenbank-Engine im Datenkatalog erstellt werden. Wenn Sie beispielsweise mit My den SQL Include-Pfad von angebenMyDatabase/%, MyDatabase werden alle darin enthaltenen Tabellen im Datenkatalog erstellt. Wenn Sie beim Zugriff auf Amazon Redshift einen Include-Pfad von MyDatabase/% angeben, werden alle Tabellen innerhalb aller Schemas für die Datenbank MyDatabase im Data Catalog angelegt. Wenn Sie einen Include-Pfad von MyDatabase/MySchema/% angeben, werden alle Tabellen in der Datenbank MyDatabase sowie im Schema MySchema erstellt.

Nachdem Sie einen Include-Pfad angegeben haben, können Sie Objekte aus dem Crawl-Vorgang ausschließen, die Ihr Include-Pfad andernfalls einschließen würde, indem Sie ein oder mehrere glob-Exclude-Muster im Unix-Stil angeben. Diese Muster werden auf Ihren Include-Pfad angewandt, um zu ermitteln, welche Objekte ausgeschlossen werden. Diese Muster werden auch als Eigenschaft von Tabellen gespeichert, die vom Crawler erstellt wurden. AWS Glue PySpark Erweiterungencreate_dynamic_frame.from_catalog, wie z. B. das Lesen der Tabelleneigenschaften und das Ausschließen von Objekten, die durch das Ausschlussmuster definiert sind.

AWS Glue unterstützt die folgenden glob Muster im Ausschlussmuster.

Exclude-Muster Beschreibung
*.csv Entspricht einem Amazon-S3-Pfad, der einen Objektnamen im aktuellen Ordner darstellt, der mit .csv endet
*.* Entspricht allen Objektnamen, die einen Punkt enthalten
*.{csv,avro} Entspricht Objektnamen, die mit .csv oder .avro enden
foo.? Entspricht Objektnamen, die mit foo. beginnen und von einer Erweiterung aus einem Zeichen gefolgt werden
myfolder/* Entspricht den Objekten in einer Ebene des Unterordners von myfolder, z. B. /myfolder/mysource
myfolder/*/* Entspricht den Objekten in zwei Ebenen von Unterordnern von myfolder, z. B. /myfolder/mysource/data
myfolder/** Entspricht den Objekten in allen Unterordnern von myfolder, z. B. /myfolder/mysource/mydata und /myfolder/mysource/data
myfolder** Entspricht dem Unterordner myfolder und Dateien unter myfolder, wie z. B. /myfolder und /myfolder/mydata.txt
Market* Findet Tabellen in einer JDBC Datenbank, deren Namen mit beginnenMarket, z. B. Market_us und Market_fr

AWS Glue interpretiert glob Ausschlussmuster wie folgt:

  • Der Schrägstrich (/) ist das Begrenzungszeichen zum Trennen von Amazon-S3-Schlüsseln in einer Ordnerhierarchie.

  • Das Sternchen (*) entspricht einem oder mehreren Zeichen einer Namenskomponente ohne Überschreiten der Ordnergrenzen.

  • Ein doppeltes Sternchen (**) entspricht keinem oder mehreren Zeichen bei Überschreiten von Ordner- oder Schemagrenzen.

  • Das Fragezeichen (?) entspricht genau einem Zeichen einer Namenskomponente.

  • Der Backslash (\) wird verwendet, um Zeichen zu maskieren, die andernfalls als Sonderzeichen interpretiert werden könnten. Der Ausdruck \\ entspricht einem einzelnen Backslash und \{ entspricht einer linken geschweiften Klammer.

  • Eckige Klammern [ ] erstellen einen Ausdruck in eckigen Klammern, der für ein einzelnes Zeichen einer Namenskomponente aus einer Reihe von Zeichen steht. Beispiel: [abc] entspricht a, b oder c. Der Bindestrich (-) kann verwendet werden, um einen Bereich anzugeben. So gibt [a-z] einen Bereich von a bis z (einschließlich) an. Diese Formen können auch kombiniert werden, sodass [abce-g] für ab, c, e, f oder g steht. Wenn das Zeichen nach der eckigen Klammer ([) ein Ausrufezeichen (!) ist, wird der Ausdruck negiert. Zum Beispiel entspricht [!a-c] jedem Zeichen außer a, b oder c.

    Innerhalb eines Ausdrucks in eckigen Klammern stehen die Zeichen *, ? und \ für sich selbst. Der Bindestrich (-) steht für sich selbst, wenn er das erste Zeichen innerhalb der Klammern ist oder wenn er das erste Zeichen nach dem ! ist, wenn Sie negieren.

  • Geschweifte Klammern ({ }) umschließen eine Gruppe von Untermustern, wobei die Gruppe übereinstimmt, wenn ein Untermuster in der Gruppe übereinstimmt. Ein Komma (,) wird verwendet, um Untermuster voneinander zu trennen. Gruppen können nicht verschachtelt werden.

  • Führende Punktzeichen in Dateinamen werden als normale Zeichen bei Abgleichsoperationen behandelt. Beispielsweise stimmt das *-Exclude-Muster mit dem Dateinamen .hidden überein.

Beispiel Exclude-Muster in Amazon S3

Jedes Exclude-Muster wird mit dem Include-Pfad abgeglichen. Angenommen, Sie haben die folgende Amazon-S3-Verzeichnisstruktur:

/mybucket/myfolder/ departments/ finance.json market-us.json market-emea.json market-ap.json employees/ hr.json john.csv jane.csv juan.txt

Beim Include-Pfad s3://mybucket/myfolder/ sind folgende Ergebnisse Beispiele für Exclude-Muster:

Exclude-Muster Ergebnisse
departments/** Schließt alle Dateien und Ordner unterhalb von departments aus und schließt den Ordner employees und dessen Dateien ein.
departments/market* Schließt market-us.json, market-emea.json und market-ap.json aus.
**.csv Schließt alle Objekte unterhalb von myfolder aus, deren Namen mit .csv endet.
employees/*.csv Schließt alle .csv-Dateien im Ordneremployees aus.
Beispiel Ausschließen einer Teilmenge von Amazon-S3-Partitionen

Angenommen, Ihre Daten werden nach Tagen partitioniert, sodass sich jeder Tag eines Jahres in einer separaten Amazon-S3-Partition befindet. Im Januar 2015 gibt es 31 Partitionen. Um nun die Daten nur für die erste Januarwoche zu durchsuchen, müssen Sie alle Partitionen mit Ausnahme von Tag 1 bis 7 ausschließen:

2015/01/{[!0],0[8-9]}**, 2015/0[2-9]/**, 2015/1[0-2]/**

Schauen Sie sich die einzelnen Bestandteile dieses "glob"-Musters an. Der erste Teil, 2015/01/{[!0],0[8-9]}**, schließt alle Tage aus, die nicht mit einer "0" beginnen, sowie Tag 08 und Tag 09 von Monat 01 des Jahres 2015. Beachten Sie, dass "**" als Suffix des Tagesnummernmusters verwendet wird und Ordnergrenzen bis zu Ordnern auf unterer Ebene überschreitet. Bei Verwendung von "*" werden untere Ordnerebenen nicht ausgeschlossen.

Der zweite Teil, 2015/0[2-9]/**, schließt die Tage in den Monaten 02 bis 09 im Jahr 2015 aus.

Der dritte Teil, 2015/1[0-2]/**, schließt die Tage in den Monaten 10, 11 und 12 im Jahr 2015 aus.

Beispiel JDBCschließt Muster aus

Angenommen, Sie crawlen eine JDBC Datenbank mit der folgenden Schemastruktur:

MyDatabase/MySchema/ HR_us HR_fr Employees_Table Finance Market_US_Table Market_EMEA_Table Market_AP_Table

Beim Include-Pfad MyDatabase/MySchema/% sind folgende Ergebnisse Beispiele für Exclude-Muster:

Exclude-Muster Ergebnisse
HR* Schließt Tabellen mit Namen aus, die mit HR beginnen.
Market_* Schließt Tabellen mit Namen aus, die mit Market_ beginnen.
**_Table Schließt alle Tabellen mit Namen aus, die mit _Table enden.
Zusätzliche Crawler-Quellparameter

Jeder Quelltyp benötigt einen anderen Satz zusätzlicher Parameter.

Verbindung

Wählen Sie eine aus oder fügen Sie eine hinzu AWS Glue Verbindung. Weitere Informationen zu Verbindungen finden Sie unter Herstellen einer Verbindung zu Daten.

Zusätzliche Metadaten - optional (für JDBC Datenspeicher)

Wählen Sie zusätzliche Metadateneigenschaften aus, die der Crawler crawlen soll.

  • Kommentare: Crawlen Sie zugehörige Kommentare auf Tabellen- und Spaltenebene.

  • Rohdatentypen: Behalten Sie die Rohdatentypen der Tabellenspalten in zusätzlichen Metadaten bei. Als Standardverhalten übersetzt der Crawler die Rohdatentypen in Hive-kompatible Typen.

JDBCName der Treiberklasse — optional (für JDBC Datenspeicher)

Geben Sie einen benutzerdefinierten JDBC Treiberklassennamen für den Crawler ein, um eine Verbindung zur Datenquelle herzustellen:

  • Postgres: org.postgresql.Driver

  • MeinSQL: com.mysql.jdbc.Driver, com.mysql.cj.jdbc.Driver

  • Redshift: com.amazon.redshift.jdbc.Driver, com.amazon.redshift.jdbc42.Driver

  • Oracle: oracle.jdbc.driver. OracleDriver

  • SQLServer: com.microsoft.sqlserver.jdbc. SQLServerDriver

JDBCTreiber-S3-Pfad — optional (für JDBC Datenspeicher)

Wählen Sie einen vorhandenen Amazon-S3-Pfad zu einer .jar-Datei. Hier wird die .jar Datei gespeichert, wenn ein benutzerdefinierter JDBC Treiber für den Crawler verwendet wird, um eine Verbindung zur Datenquelle herzustellen.

Aktivieren Sie Datenabfrage (nur für Amazon-DynamoDB-, MongoDB-, MongoDB-Atlas- und Amazon-DocumentDB-Datenspeicher)

Wählen Sie aus, ob nur eine beispielhafte Datenabfrage durchsucht werden soll. Wenn diese Option nicht ausgewählt ist, wird die gesamte Tabelle durchsucht. Das Scannen aller Datensätze kann eine lange Zeit in Anspruch nehmen, wenn die Tabelle keinen hohen Durchsatz hat.

Erstellen von Tabellen für Abfragen (nur für Delta-Lake-Datenspeicher)

Wählen Sie aus, wie Sie die Delta-Lake-Tabellen erstellen möchten:

  • Erstellen nativer Tabellen: Ermöglicht die Integration mit Abfragemodulen, die die direkte Abfrage des Delta-Transaktionsprotokolls unterstützen.

  • Erstellen von Symlink-Tabellen: Erstellen Sie basierend auf den angegebenen Konfigurationsparametern einen Symlink-Manifest-Ordner mit Manifest-Dateien, die durch die Partitionsschlüssel partitioniert sind.

Scanrate – optional (nur für DynamoDB-Datenspeicher)

Geben Sie den Prozentsatz der Lesekapazitätseinheiten der DynamoDB-Tabelle an, die vom Crawler verwendet werden sollen. Lesekapazitätseinheiten sind ein von DynamoDB definierter Begriff und ein numerischer Wert, der als Ratenbegrenzer für die Anzahl der Lesevorgänge fungiert, die pro Sekunde für diese Tabelle durchgeführt werden können. Geben Sie einen Wert zwischen 0,1 und 1,5 ein. Falls nicht angegeben, ist der Standardwert 0,5 für bereitgestellte Tabellen und 1/4 der konfigurierten Maximalkapazität für On-Demand-Tabellen. Beachten Sie, dass für Crawler nur der Modus „Bereitgestellte Kapazität“ verwendet werden sollte. AWS Glue

Anmerkung

Legen Sie für DynamoDB-Datenspeicher den bereitgestellten Kapazitätsmodus für die Verarbeitung von Lese- und Schreibvorgängen für Ihre Tabellen fest. Der AWS Glue Crawler sollte nicht im On-Demand-Kapazitätsmodus verwendet werden.

Netzwerkverbindung – optional (nur für Amazon-S3-Datenspeicher)

Fügen Sie optional eine Netzwerkverbindung hinzu, die mit diesem Amazon-S3-Ziel verwendet werden soll. Beachten Sie, dass jeder Crawler auf eine Netzwerkverbindung beschränkt ist, sodass alle anderen Amazon-S3-Ziele ebenfalls dieselbe Verbindung verwenden (oder keine, falls leer gelassen).

Weitere Informationen zu Verbindungen finden Sie unter Herstellen einer Verbindung zu Daten.

Nur für eine Untergruppe von Dateien und Stichprobengröße (nur für Amazon-S3-Datenspeicher)

Geben Sie die Anzahl der Dateien in jedem Ordner an, die beim Crawling von Beispieldateien in einem Datensatz durchsucht werden sollen. Wenn dieses Feature aktiviert ist, wählt der Crawler statt alle Dateien in diesem Datensatz nach dem Zufallsprinzip einige Dateien in jedem Ordner aus, bei denen ein Crawling durchgeführt werden muss.

Der Sampling-Crawler eignet sich am besten für Kunden, die bereits über Kenntnisse ihrer Datenformate verfügen und wissen, dass sich Schemas in ihren Ordnern nicht ändern. Wenn Sie dieses Feature aktivieren, wird die Crawler-Laufzeit erheblich reduziert.

Ein gültiger Wert ist eine ganze Zahl zwischen 1 und 249. Wenn nicht angegeben, werden alle Dateien durchsucht.

Nachfolgende Crawler-Ausführungen

Dieses Feld ist ein globales Feld, das sich auf alle Amazon-S3-Datenquellen auswirkt.

Benutzerdefinierte Classifier – optional

Definieren Sie benutzerdefinierte Classifier, bevor Sie Crawler definieren. Ein Classifier prüft, ob eine bestimmte Datei in einem Format vorliegt, das der Crawler verarbeiten kann. Wenn dies der Fall ist, erstellt der Classifier ein Schema in Form eines StructType-Objekts, das dem Datenformat entspricht.

Weitere Informationen finden Sie unter Klassifikatoren definieren und verwalten.