Wie bestimmt ein Crawler, wann Partitionen zu erstellen sind? - 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.

Wie bestimmt ein Crawler, wann Partitionen zu erstellen sind?

Wenn ein AWS Glue-Crawler Amazon S3 durchsucht und mehrere Ordner in einem Bucket entdeckt, bestimmt er den Stamm einer Tabelle in der Ordnerstruktur und welche Ordner Partitionen einer Tabelle sind. Der Name der Tabelle basiert auf dem Amazon-S3-Präfix oder Ordnernamen. Sie stellen einen Include path (Include-Pfad) bereit, der auf die zu durchsuchende Ordnerebene zeigt. Wenn die Mehrzahl der Schemas auf einer Ordnerebene ähnlich sind, erstellt der Crawler Partitionen der Tabelle anstelle separater Tabellen. Damit der Crawler separate Tabellen erstellt, fügen Sie den Stammordner einer jeden Tabelle als separaten Datenspeicher hinzu, wenn Sie den Crawler definieren.

Sehen Sie sich beispielsweise die folgende Amazon-S3-Ordnerstruktur an:

Rechtecke auf mehreren Ebenen stellen eine Ordnerhierarchie in Amazon S3 dar. Das obere Rechteck wird als Sales bezeichnet. Das Rechteck darunter ist mit year=2019 gekennzeichnet. Zwei Rechtecke darunter, die mit month=Jan und month=Feb markiert sind. Jedes dieser Rechtecke hat zwei Rechtecke, die mit day=1 und day=2 markiert sind. Alle vier „Tag“ (unten) Rechtecke haben entweder zwei oder vier Dateien darunter. Alle Rechtecke und Dateien sind mit Linien verbunden.

Die Pfade zu den vier untersten Ordnern lauten wie folgt:

S3://sales/year=2019/month=Jan/day=1 S3://sales/year=2019/month=Jan/day=2 S3://sales/year=2019/month=Feb/day=1 S3://sales/year=2019/month=Feb/day=2

Gehen Sie davon aus, dass das Crawler-Ziel auf Sales festgelegt wird und dass alle Dateien im day=n-Ordner das gleiche Format (z. B. JSON, nicht verschlüsselt) sowie dieselben oder sehr ähnliche Schemas haben. Der Crawler erstellt eine einzelne Tabelle mit vier Partitionen, mit Partitionsschlüsseln year, month und day.

Sehen Sie sich im nächsten Beispiel die folgende Amazon-S3-Ordnerstruktur an:

s3://bucket01/folder1/table1/partition1/file.txt s3://bucket01/folder1/table1/partition2/file.txt s3://bucket01/folder1/table1/partition3/file.txt s3://bucket01/folder1/table2/partition4/file.txt s3://bucket01/folder1/table2/partition5/file.txt

Wenn sich die Schemas für table1 und table2 ähneln und im Crawler ein einzelner Datenspeicher mit Include path (Include-Pfad) s3://bucket01/folder1/ definiert ist, erstellt der Crawler eine einzelne Tabelle mit zwei Partitionsschlüsselspalten. Die erste Partitionsschlüsselspalte enthält table1 und table2. Der zweite Partitionsschlüsselspalte enthält partition1 bis partition3 für die table1-Partition sowie partition4 und partition5 für die table2-Partition. Zum Erstellen zweier separater Tabellen definieren Sie den Crawler mit zwei Datenspeichern. In diesem Beispiel definieren Sie den ersten Include path (Include-Pfad) als s3://bucket01/folder1/table1/ und den zweiten als s3://bucket01/folder1/table2.

Anmerkung

In Amazon Athena entspricht jede Tabelle einem Amazon-S3-Präfix mit allen darin enthaltenen Objekten. Wenn Objekte unterschiedliche Schemas haben, erkennt Athena unterschiedliche Objekte innerhalb desselben Präfix nicht als separate Tabellen. Dies kann der Fall sein, wenn ein Crawler mehrere Tabellen aus demselben Amazon-S3-Präfix erstellt. Dies kann zu ergebnislosen Abfragen in Athena führen. Damit Athena Tabellen richtig erkennen und abfragen kann, erstellen Sie den Crawler mit einem separaten Include path (Include-Pfad) für die unterschiedlichen Tabellenschemas in der Amazon-S3-Ordnerstruktur. Weitere Informationen finden Sie unter Best Practices When Using Athena with AWS Glue (Bewährte Methoden bei der Verwendung von Athena mit GLU) und in diesem AWS Knowledge Center-Artikel.