

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.

# Datenermittlung und Katalogisierung in AWS Glue
<a name="catalog-and-crawler"></a>

Das AWS Glue Data Catalog ist ein zentrales Repository, das Metadaten zu den Datensätzen Ihrer Organisation speichert. Es ein Index für die Speicherort-, Schema- und Laufzeitmetriken Ihrer Datenquellen. Die Metadaten werden in Metadatentabellen gespeichert, wobei jede Tabelle einen einzigen Datenspeicher darstellt. 

Sie können den Datenkatalog mithilfe eines Crawlers auffüllen, der Ihre Datenquellen automatisch scannt und Metadaten extrahiert. Ein Crawler kann eine Verbindung zu internen (AWS-basierten) Datenquellen und Datenquellen außerhalb von AWS aufbauen. 

Weitere Informationen zu den unterstützten Datenquellen finden Sie unter [Unterstützte Datenquellen für Crawling](crawler-data-stores.md).

Sie können Tabellen im Datenkatalog auch manuell erstellen, indem Sie die Tabellenstruktur, das Schema und die Partitionierungsstruktur entsprechend Ihren spezifischen Anforderungen definieren.

Weitere Informationen zum manuellen Erstellen von Metadatentabellen finden Sie unter [Manuelles Definieren von Metadaten](populate-dg-manual.md).

Sie können die Informationen im Datenkatalog verwenden, um Ihre ETL-Aufträge zu erstellen und zu überwachen. Der Datenkatalog lässt sich in andere AWS Analysedienste integrieren und bietet eine einheitliche Ansicht der Datenquellen, was die Verwaltung und Analyse von Daten erleichtert.
+ Amazon Athena: Speichern Sie Tabellenmetadaten im Datenkatalog für die Amazon-S3-Daten und fragen Sie sie mit SQL ab.
+ AWS Lake Formation — Definieren und verwalten Sie zentral detaillierte Datenzugriffsrichtlinien und überprüfen Sie den Datenzugriff.
+ Amazon EMR: Greifen Sie auf die im Datenkatalog definierten Datenquellen für die Verarbeitung von Big Data zu.
+ Amazon SageMaker AI — Schnelles und sicheres Erstellen, Trainieren und Implementieren von Modellen für maschinelles Lernen.Hauptmerkmale des Datenkatalogs

Im Folgenden sind die wichtigsten Aspekte des Datenkatalogs aufgeführt. 

Metadaten-Repository  
 Der Datenkatalog fungiert als zentrales Metadaten-Repository, in dem Informationen über den Speicherort, das Schema und die Eigenschaften Ihrer Datenquellen gespeichert werden. Diese Metadaten sind in Datenbanken und Tabellen organisiert, ähnlich wie ein herkömmlicher relationaler Datenbankkatalog. 

Automatische Auffindbarkeit von Daten  
 AWS-Glue-Crawler s kann neue oder aktualisierte Datenquellen automatisch erkennen und katalogisieren, wodurch der Aufwand für die manuelle Metadatenverwaltung reduziert und sichergestellt wird, dass Ihr Datenkatalog erhalten bleibt up-to-date. Durch die Katalogisierung Ihrer Datenquellen erleichtert der Datenkatalog Benutzern und Anwendungen das Auffinden und Verstehen der in Ihrem Unternehmen verfügbaren Datenbestände und fördert so die Wiederverwendung von Daten und die Zusammenarbeit.  
Der Datenkatalog unterstützt eine Vielzahl von Datenquellen, darunter Amazon S3, Amazon RDS, Amazon Redshift, Apache Hive und mehr. Mithilfe von AWS-Glue-Crawler s können Metadaten aus diesen Quellen automatisch abgeleitet und gespeichert werden.   
Weitere Informationen finden Sie unter [Verwenden von Crawlern zum Auffüllen des Datenkatalogs](add-crawler.md).

Schemaverwaltung  
Der Datenkatalog erfasst und verwaltet automatisch das Schema Ihrer Datenquellen, einschließlich Schemainferenz, Weiterentwicklung und Versionsverwaltung. Sie können Ihr Schema und Ihre Partitionen im Datenkatalog mithilfe von AWS Glue ETL-Jobs aktualisieren. 

Tabellenoptimierung  
Um die Leseleistung von AWS Analysediensten wie Amazon Athena und Amazon EMR sowie AWS Glue ETL-Jobs zu verbessern, bietet der Datenkatalog eine verwaltete Komprimierung (ein Prozess, der kleine Amazon S3 S3-Objekte zu größeren Objekten komprimiert) für Eisberg-Tabellen im Datenkatalog. Sie können die AWS Glue Konsole, AWS Lake Formation Konsole oder AWS API verwenden, um die AWS CLI Komprimierung für einzelne Iceberg-Tabellen, die sich im Datenkatalog befinden, zu aktivieren oder zu deaktivieren.  
Weitere Informationen finden Sie unter [Optimieren von Iceberg-Tabellen](table-optimizers.md).

Spaltenstatistiken  
 Sie können Statistiken auf Spaltenebene für Datenkatalog-Tabellen in Datenformaten wie Parquet, ORC, JSON, ION, CSV und XML berechnen, ohne zusätzliche Datenpipelines einrichten zu müssen. Spaltenstatistiken helfen Ihnen dabei, Datenprofile zu verstehen, indem sie Einblicke in die Werte innerhalb einer Spalte gewinnen. Der Datenkatalog unterstützt die Generierung von Statistiken für Spaltenwerte wie Minimalwert, Maximalwert, Gesamt-Nullwerte, Gesamtzahl unterschiedlicher Werte, durchschnittliche Länge von Werten und Gesamtzahl des Vorkommens von wahren Werten.   
Weitere Informationen finden Sie unter [Optimieren der Abfrageleistung mithilfe von Spaltenstatistiken](column-statistics.md).

Datenherkunft  
Der Datenkatalog speichert alle Transformationen und Operationen, die an Ihren Daten durchgeführt wurden, und liefert so Informationen zur Datenherkunft. Diese Informationen zur Herkunft sind für die Prüfung, Compliance und für das Verständnis der Herkunft der Daten von Nutzen.

Integration mit anderen Diensten AWS   
Der Datenkatalog lässt sich nahtlos in andere AWS Dienste wie Amazon Athena AWS Lake Formation, Amazon Redshift Spectrum und Amazon EMR integrieren. Diese Integration ermöglicht es Ihnen, Daten aus verschiedenen Datenspeichern über eine einzige, einheitliche Metadatenebene abzufragen und zu analysieren.

Sicherheit mit Zugriffskontrolle  
AWS Glue lässt sich integrieren AWS Lake Formation , um eine differenzierte Zugriffskontrolle für Datenkatalogressourcen zu unterstützen, sodass Sie Berechtigungen verwalten und den Zugriff auf Ihre Datenbestände auf der Grundlage der Richtlinien und Anforderungen Ihres Unternehmens sichern können. AWS Glue lässt sich in AWS Key Management Service (AWS KMS) integrieren, um Metadaten zu verschlüsseln, die im Datenkatalog gespeichert sind. 

Materialisierte Ansichten   
Der Datenkatalog unterstützt materialisierte Ansichten von Apache Iceberg. Dabei handelt es sich um verwaltete Tabellen, die vorberechnete Ergebnisse von SQL-Abfragen speichern und automatisch aktualisiert werden, wenn sich die zugrunde liegenden Quelldaten ändern. Materialisierte Ansichten vereinfachen Datenumwandlungs-Pipelines und beschleunigen die Abfrageleistung, da redundante Berechnungen vermieden werden.  
Sie können materialisierte Ansichten mit Apache Spark SQL in AWS Glue Version 5.1 und höher, Amazon EMR Version 7.12.0 und höher und Amazon Athena erstellen. Der Datenkatalog überwacht automatisch die Apache Iceberg-Quelltabellen und aktualisiert materialisierte Ansichten mithilfe einer verwalteten Recheninfrastruktur. Spark-Engines in AWS Glue, Amazon EMR und Amazon Athena können Abfragen automatisch umschreiben, um materialisierte Ansichten zu verwenden, wenn sie eine bessere Leistung bieten.  
Materialisierte Ansichten werden als Apache Iceberg-Tabellen in Amazon S3 S3-Tabellen-Buckets oder Amazon S3 S3-Allzweck-Buckets in Ihrem Konto gespeichert, sodass sie von mehreren Abfrage-Engines aus zugänglich sind. Der Datenkatalog verwaltet alle Aspekte des Lebenszyklus von Materialized Views, einschließlich automatischer Aktualisierungsplanung, inkrementeller Aktualisierungen und Metadatenverwaltung.  
Weitere Informationen finden Sie unter Verwenden von materialisierten Ansichten mit AWS Glue und Verwenden von materialisierten Ansichten mit Amazon EMR.

**Topics**
+ [Den AWS Glue Datenkatalog auffüllen](populate-catalog-methods.md)
+ [Füllen und Verwalten von Transaktionstabellen](populate-otf.md)
+ [Verwalten des Datenkatalogs](manage-catalog.md)
+ [Zugreifen auf den Datenkatalog](access_catalog.md)
+ [AWS Glue Bewährte Methoden für den Datenkatalog](best-practice-catalog.md)
+ [Überwachung der Nutzungsmetriken des Datenkatalogs in Amazon CloudWatch](data-catalog-cloudwatch-metrics.md)
+ [AWS Glue-Schemaregistrierung](schema-registry.md)

# Den AWS Glue Datenkatalog auffüllen
<a name="populate-catalog-methods"></a>

Sie können den AWS Glue Data Catalog mit den folgenden Methoden auffüllen:
+ AWS-Glue-Crawler — An AWS-Glue-Crawler kann Datenquellen wie Datenbanken, Data Lakes und Streaming-Daten automatisch erkennen und katalogisieren. Die Crawler sind die gängigste und empfohlene Methode zum Füllen von des Datenkatalogs, weil sie automatisch Metadaten für eine Vielzahl von Datenquellen erkennen und daraus ableiten können.
+  Manuelles Hinzufügen von Metadaten — Sie können Datenbanken, Tabellen und Verbindungsdetails manuell definieren und sie mithilfe der Konsole, der Lake Formation AWS Glue Formation-Konsole AWS CLI, oder dem Datenkatalog hinzufügen AWS Glue APIs. Die manuelle Eingabe ist nützlich, wenn Sie Datenquellen katalogisieren möchten, die nicht gecrawlt werden können. 
+ Integration mit anderen AWS Diensten — Sie können den Datenkatalog mit Metadaten von Diensten wie Amazon AWS Lake Formation Athena füllen. Diese Services können Datenquellen im Datenkatalog erkennen und registrieren. 
+  Daten aus einem vorhandenen Metadaten-Repository auffüllen — Wenn Sie bereits über einen Metadatenspeicher wie Apache Hive Metastore verfügen, können Sie diese Metadaten in AWS Glue den Datenkatalog importieren. Weitere Informationen finden Sie unter [Migration zwischen dem Hive Metastore und dem Hive Metastore](https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/Hive_metastore_migration). AWS Glue Data Catalog GitHub

**Topics**
+ [Verwenden von Crawlern zum Auffüllen des Datenkatalogs](add-crawler.md)
+ [Manuelles Definieren von Metadaten](populate-dg-manual.md)
+ [Integration mit Amazon S3 S3-Tabellen](glue-federation-s3tables.md)
+ [Integration mit anderen AWS Diensten](populate-dc-other-services.md)
+ [Einstellungen des Datenkatalogs](console-data-catalog-settings.md)

# Verwenden von Crawlern zum Auffüllen des Datenkatalogs
<a name="add-crawler"></a>

Sie können an verwenden AWS-Glue-Crawler , um sie AWS Glue Data Catalog mit Datenbanken und Tabellen zu füllen. Dies ist die primäre Methode, die von den meisten AWS Glue Benutzern verwendet wird. Ein Crawler kann in einem einzigen Lauf mehrere Datenspeicher durchsuchen. Nach dem Abschluss erstellt oder aktualisiert der Crawler eine oder mehrere Tabellen in Ihrem Data Catalog. Extract, Transform, Load (ETL)-Aufträge, die Sie in AWS Glue definieren, verwenden diese Data-Catalog-Tabellen als Quellen und Ziele. Der ETL-Auftrag führt Lese- und Schreibvorgänge in Datenspeichern durch, die in den Data-Catalog-Quell- und -Zieltabellen angegeben werden.

## Workflow
<a name="crawler-workflow"></a>

Das folgende Workflow-Diagramm zeigt, wie AWS Glue-Crawler mit Datenspeichern und anderen Elementen interagieren, um den Data Catalog zu füllen.

![\[Workflow, der zeigt, wie der AWS Glue-Crawler den Data Catalog in 5 grundlegenden Schritten füllt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/PopulateCatalog-overview.png)


Im Folgenden wird der grundlegende Workflow beschrieben, mit dem ein Crawler den AWS Glue Data Catalog füllt:

1. Ein Crawler führt alle von Ihnen ausgewählten angepassten *Classifier* aus, um das Schema Ihrer Daten abzuleiten. Sie stellen den Code für angepasste Classifier bereit, die in der von Ihnen angegebenen Reihenfolge ausgeführt werden.

   Der erste angepasste Classifier, der die Struktur Ihrer Daten erfolgreich erkennt, wird zur Erstellung eines Schemas verwendet. Angepasste Classifier, die in der Liste weiter unten stehen, werden übersprungen.

1. Wenn kein angepasster Classifier mit dem Schema Ihrer Daten übereinstimmt, versuchen die integrierten Classifier, das Schema Ihrer Daten zu erkennen. Ein Beispiel für einen integrierten Classifier ist einer, der JSON erkennt.

1. Der Crawler verbindet sich mit dem Datenspeicher. Einige Datenspeicher benötigen Verbindungseigenschaften für den Crawler-Zugriff.

1. Das abgeleitete Schema wird für Ihre Daten angelegt.

1. Der Crawler schreibt Metadaten in den Data Catalog. Eine Tabellendefinition enthält Metadaten zu den Daten in Ihrem Datenspeicher. Die Tabelle wird in eine Datenbank geschrieben, die einen Tabellen-Container im Data Catalog darstellt. Attribute einer Tabelle beinhalten die Klassifizierung – d. h. ein Label, das von dem Classifier erstellt wurde, der das Tabellenschema hergeleitet hat.

**Topics**
+ [Workflow](#crawler-workflow)
+ [Funktionsweise von Crawlern](#crawler-running)
+ [Wie bestimmt ein Crawler, wann Partitionen zu erstellen sind?](#crawler-s3-folder-table-partition)
+ [Unterstützte Datenquellen für Crawling](crawler-data-stores.md)
+ [Voraussetzungen für Crawler](crawler-prereqs.md)
+ [Definieren und Verwalten von Klassifizierern](add-classifier.md)
+ [Konfigurieren eines Crawlers](define-crawler.md)
+ [Planen eines Crawlers](schedule-crawler.md)
+ [Anzeigen von Crawler-Ergebnissen und -Details](console-crawlers-details.md)
+ [Anpassen des Crawlerverhaltens](crawler-configuration.md)
+ [Tutorial: Hinzufügen eines AWS Glue-Crawlers](tutorial-add-crawler.md)

## Funktionsweise von Crawlern
<a name="crawler-running"></a>

Wenn ein Crawler ausgeführt wird, werden für das Abfragen eines Datenspeichers folgende Aktionen verwendet:
+ **Klassifizieren von Daten, um das Format, das Schema und verknüpfte Eigenschaften der Rohdaten zu bestimmen** – Sie können die Ergebnisse der Klassifizierung konfigurieren, indem Sie einen benutzerdefinierten Classifier erstellen.
+ **Gruppieren von Daten in Tabellen oder Partitionen** – Daten werden basierend auf der Crawler-Heuristik gruppiert.
+ **Schreiben von Metadaten in den Data Catalog** – Sie können konfigurieren, wie der Crawler Tabellen und Partitionen hinzufügt, aktualisiert und löscht.

Beim Definieren eines Crawlers wählen Sie einen oder mehrere Classifier aus, die das Format Ihrer Daten bewerten, um ein Schema abzuleiten. Wenn der Crawler ausgeführt wird, wird der erste Classifier in der Liste, der erfolgreich Ihren Datenspeicher erkennt, zum Erstellen eines Schemas für Ihre Tabelle verwendet. Sie können integrierte Classifier verwenden oder eigene Classifier definieren. Sie definieren Ihre benutzerdefinierten Classifier in einer separaten Operation vor der Definition der Crawler. AWS Glue bietet integrierte Classifier zum Ableiten von Schemata aus gängigen Dateien mit Formaten wie z. B. JSON, CSV und Apache Avro. Die aktuelle Liste der integrierten Classifier in AWS Glue finden Sie unter [Integrierte Klassifizierer](add-classifier.md#classifier-built-in). 

Die Metadatentabellen, die von einem Crawler erstellt werden, sind in einer Datenbank enthalten, wenn Sie einen Crawler definieren. Wenn Ihr Crawler keine Datenbank definiert, werden Ihre Tabellen in der Standarddatenbank abgelegt. Darüber hinaus verfügt jede Tabelle über eine Klassifizierungsspalte, die vom Classifier gefüllt wird, der den Datenspeicher als erster erfolgreich erkennt.

Wenn die Datei, die durchsucht wird, komprimiert ist, muss der Crawler sie herunterladen, um sie zu verarbeiten. Wenn ein Crawler ausgeführt wird, fragt er Daten ab, um deren Format und Komprimierungstyp zu bestimmen, und schreibt diese Eigenschaften in den Data Catalog. Einige Dateiformate (z. B. Apache Parquet) ermöglichen das Komprimieren von Teilen der Datei beim Schreiben. Bei diesen Dateien stellen die komprimierten Daten eine interne Komponente der Datei dar und AWS Glue füllt die `compressionType`-Eigenschaft beim Schreiben von Tabellen in den Data Catalog nicht. Wenn dagegen eine *gesamte Datei* durch einen Komprimierungsalgorithmus komprimiert wird (z. B. gzip), wird die `compressionType`-Eigenschaft gefüllt, wenn die Tabellen in den Data Catalog geschrieben werden. 

Der Crawler generiert die Namen für die Tabellen, die er erstellt. Die Namen der Tabellen, die in der gespeichert sind, AWS Glue Data Catalog folgen diesen Regeln:
+ Nur alphanumerische Zeichen und Unterstriche (`_`) sind erlaubt.
+ Ein benutzerdefinierter Präfix darf nicht länger sein als 64 Zeichen.
+ Die maximale Länge des Namens darf nicht mehr als 128 Zeichen sein. Der Crawler kürzt generierte Namen, um sie an die maximale Größe anzupassen.
+ Wenn doppelte Tabellennamen auftreten, fügt der Crawler dem Namen einen Suffix als Hash-Zeichenfolge hinzu.

Wenn Ihr Crawler mehr als einmal ausgeführt wird, z. B. bei einem Zeitplan, sucht er nach neuen oder geänderten Dateien oder Tabellen in Ihrem Datenspeicher. Die Ausgabe des Crawlers umfasst die neuen Tabellen und Partitionen, die seit einer vorherigen Ausführung gefunden wurden.

## Wie bestimmt ein Crawler, wann Partitionen zu erstellen sind?
<a name="crawler-s3-folder-table-partition"></a>

Wenn ein AWS Glue Crawler den Amazon S3 S3-Datenspeicher scannt und mehrere Ordner in einem Bucket erkennt, 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.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawlers-s3-folders.png)


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](https://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html) (Bewährte Methoden bei der Verwendung von Athena mit GLU) und in diesem [AWS Knowledge Center-Artikel](https://aws.amazon.com/premiumsupport/knowledge-center/athena-empty-results/).

# Unterstützte Datenquellen für Crawling
<a name="crawler-data-stores"></a>

Crawler können sowohl dateibasierte als auch tabellenbasierte Datenspeicher durchsuchen.


| Zugriffstyp, den Crawler verwendet | Datastores | 
| --- | --- | 
| Native Clients |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/crawler-data-stores.html)  | 
| JDBC |  Amazon Redshift Snowflake Innerhalb von Amazon Relational Database Service (Amazon RDS) oder außerhalb von Amazon RDS: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/crawler-data-stores.html)  | 
| MongoDB-Client |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/crawler-data-stores.html)  | 

**Anmerkung**  
AWS Glue unterstützt derzeit keine Crawler für Datenstreams.

Für JDBC-, MongoDB-, MongoDB-Atlas und Amazon DocumentDB (mit MongoDB-Kompatibilität) müssen Sie eine AWS Glue-*Verbindung* angeben, die der Crawler zum Herstellen einer Verbindung mit dem Datenspeicher verwenden kann. Für Amazon S3 können Sie optional eine Verbindung vom Typ Netzwerk angeben. Eine Verbindung ist ein Data-Catalog-Objekt, in dem Verbindungsinformationen wie Anmeldeinformationen, URL, Informationen zu Amazon Virtual Private Cloud und mehr gespeichert werden. Weitere Informationen finden Sie unter [Herstellen einer Verbindung zu Daten](glue-connections.md).

Im Folgenden sind die Versionen der Treiber aufgeführt, die vom Crawler unterstützt werden:


| Produkt | Von Crawler unterstützter Treiber | 
| --- | --- | 
| PostgreSQL | 42,2,1 | 
| Amazon Aurora | Wie bei nativen Crawler-Treibern | 
| MariaDB | 8.0.13 | 
| Microsoft SQL Server | 6.1.0 | 
| MySQL | 8.0.13 | 
| Oracle | 11.2.2 | 
| Amazon Redshift | 4.1 | 
| Snowflake | 3.13,20 | 
| MongoDB | 4.7.2 | 
| MongoDB-Atlas | 4.7.2 | 

Im Folgenden finden Sie Hinweise zu den verschiedenen Datenspeichern.

**Amazon S3**  
Sie können einen Pfad in Ihrem Konto oder in einem anderen Konto durchsuchen. Wenn alle Amazon-S3-Dateien in einem Ordner über das gleiche Schema verfügen, erstellt der Crawler eine Tabelle. Wenn das Amazon-S3-Objekt partitioniert ist, wird nur eine Metadatentabelle erstellt und dem Data Catalog für diese Tabelle Partitionsinformationen hinzugefügt.

**Amazon S3 und Amazon DynamoDB**  
Crawler verwenden eine AWS Identity and Access Management (IAM-) Rolle, um Zugriff auf Ihre Datenspeicher zu erhalten. *Die Rolle, die Sie an den Crawler übergeben, muss über die Berechtigung für den Zugriff auf Amazon-S3-Pfade und Amazon-DynamoDB-Tabellen verfügen, die durchsucht werden*.

**Amazon DynamoDB**  
Beim Definieren eines Crawlers mit der AWS Glue-Konsole geben Sie eine DynamoDB-Tabelle an. Wenn Sie die AWS Glue-API verwenden, können Sie eine Liste von Tabellen angeben. Sie können nur eine kleine Stichprobe der Daten durchforsten, um die Laufzeiten von Crawlern zu reduzieren.

**Delta Lake**  
Für jeden Delta-Lake-Datenspeicher geben Sie an, wie diese Delta-Tabelle erstellt werden soll:  
+ **Erstellen nativer Tabellen**: Ermöglicht die Integration mit Abfragemodulen, die die direkte Abfrage des Delta-Transaktionsprotokolls unterstützen. Weitere Informationen finden Sie unter [Abfragen von Delta-Lake-Tabellen](https://docs.aws.amazon.com/athena/latest/ug/delta-lake-tables.html).
+ **Erstellen von Symlink-Tabellen**: Erstellen Sie auf der Grundlage der angegebenen Konfigurationsparameter einen `_symlink_manifest`-Ordner mit Manifestdateien, die durch die Partitionsschlüssel partitioniert sind.

**Iceberg**  
Sie geben für jeden Iceberg-Datenspeicher einen Amazon-S3-Pfad an, der die Metadaten für Ihre Iceberg-Tabellen enthält. Wenn der Crawler die Metadaten der Iceberg-Tabelle entdeckt, registriert er sie im Data Catalog. Sie können einen Zeitplan für den Crawler festlegen, um die Tabellen auf dem neuesten Stand zu halten.  
Sie können diese Parameter für den Datenspeicher definieren:  
+ **Ausschlüsse**: Ermöglicht das Überspringen bestimmter Ordner.
+ **Maximale Durchquerungstiefe**: Legt die Tiefenbeschränkung fest, die der Crawler in Ihrem Amazon-S3-Bucket crawlen kann. Die standardmäßige maximale Durchquerungstiefe beträgt 10 und die maximal einstellbare Tiefe beträgt 20.

**Hudi**  
Geben Sie für jeden Hudi-Datenspeicher einen Amazon-S3-Pfad an, der die Metadaten für Ihre Hudi-Tabellen enthält. Wenn der Crawler die Metadaten der Hudi-Tabelle entdeckt, registriert er sie im Data Catalog. Sie können einen Zeitplan für den Crawler festlegen, um die Tabellen auf dem neuesten Stand zu halten.  
Sie können diese Parameter für den Datenspeicher definieren:  
+ **Ausschlüsse**: Ermöglicht das Überspringen bestimmter Ordner.
+ **Maximale Durchquerungstiefe**: Legt die Tiefenbeschränkung fest, die der Crawler in Ihrem Amazon-S3-Bucket crawlen kann. Die standardmäßige maximale Durchquerungstiefe beträgt 10 und die maximal einstellbare Tiefe beträgt 20.
Zeitstempelspalten mit `millis` als logischen Typen werden aufgrund einer Inkompatibilität mit Hudi 0.13.1 und Zeitstempeltypen als `bigint` interpretiert. Eine Lösung wird möglicherweise in der kommenden Hudi-Version bereitgestellt.
Hudi-Tabellen werden wie folgt kategorisiert, mit jeweils spezifischen Auswirkungen:  
+ Copy on Write (CoW, Beim Schreiben kopieren): Daten werden in einem spaltenbasierten Format (Parquet) gespeichert, und jedes Update erstellt während eines Schreibvorgangs eine neue Version von Dateien.
+ Merge on Read (MoR, Beim Lesen zusammenführen): Daten werden mit einer Kombination aus spalten- (Parquet) und zeilenbasierten (Avro) Formaten gespeichert. Updates werden in zeilenbasierten Delta-Dateien protokolliert und nach Bedarf komprimiert, um neue Versionen der Spaltendateien zu erstellen.
Bei CoW-Datasets wird jedes Mal, wenn ein Datensatz aktualisiert wird, die Datei, die den Datensatz enthält, mit den aktualisierten Werten neu geschrieben. Bei einem MoR-Datensatz schreibt Hudi jedes Mal, wenn es eine Aktualisierung gibt, nur die Zeile für den geänderten Datensatz. MoR eignet sich besser für schreib- oder änderungsintensive Workloads mit weniger Lesevorgängen. CoW eignet sich besser für leseintensive Workloads für Daten, die sich seltener ändern.  
Hudi bietet drei Abfragetypen für den Zugriff auf die Daten:  
+ Snapshot-Abfragen: Abfragen, die den neuesten Snapshot der Tabelle ab einer bestimmten Commit- oder Komprimierungsaktion anzeigen. Bei MoR-Tabellen stellen Snapshot-Abfragen den neuesten Status der Tabelle dar, indem die Basis- und Deltadateien des letzten Datei-Slices zum Zeitpunkt der Abfrage zusammengeführt werden.
+ Inkrementelle Abfragen: Bei Abfragen werden nur neue Daten angezeigt, die seit einem bestimmten Commit/einer bestimmten Komprimierung in die Tabelle geschrieben wurden. Dies bietet effektiv Änderungsströme, um inkrementelle Data-Pipelines zu ermöglichen.
+ Lesen von optimierten Abfragen: Bei MoR-Tabellen zeigen Abfragen die neuesten komprimierten Daten an. Bei CoW-Tabellen sehen Abfragen die neuesten festgeschriebenen Daten.
Bei Copy-On-Write Tabellen erstellen die Crawler mit dem Serde eine einzelne Tabelle im Datenkatalog. ReadOptimized `org.apache.hudi.hadoop.HoodieParquetInputFormat`  
Bei Merge-On-Read Tabellen erstellt der Crawler zwei Tabellen im Datenkatalog für dieselbe Tabellenposition:  
+ Eine Tabelle mit Suffix`_ro`, die das Serde verwendet. ReadOptimized `org.apache.hudi.hadoop.HoodieParquetInputFormat`
+ Eine Tabelle mit Suffix`_rt`, die die RealTime Serde verwendet und Snapshot-Abfragen ermöglicht:. `org.apache.hudi.hadoop.realtime.HoodieParquetRealtimeInputFormat`

**MongoDB und Amazon DocumentDB (mit MongoDB-Kompatibilität)**  
MongoDB-Versionen ab Version 3.2 werden unterstützt. Sie können nur eine kleine Stichprobe der Daten durchforsten, um die Laufzeiten von Crawlern zu reduzieren.

**Relationale Datenbank**  
Die Authentifizierung erfolgt mit einem Datenbankbenutzernamen und einem -Passwort. Abhängig vom Typ der Datenbank-Engine können Sie auswählen, welche Objekte durchsucht werden, beispielsweise Datenbanken, Schemas oder Tabellen.

**Snowflake**  
Der Snowflake JDBC-Crawler unterstützt das Crawling der Tabelle, der externen Tabelle, der Ansicht und der materialisierten Ansicht. Die materialisierte Ansichtsdefinition wird nicht ausgefüllt.  
Bei externen Snowflake-Tabellen durchsucht der Crawler nur, wenn er auf einen Amazon-S3-Speicherort verweist. Zusätzlich zum Tabellenschema durchsucht der Crawler auch den Amazon-S3-Speicherort, das Dateiformat und die Ausgabe als Tabellenparameter in der Data-Catalog-Tabelle. Beachten Sie, dass die Partitionsinformationen der partitionierten externen Tabelle nicht ausgefüllt werden.  
ETL wird derzeit nicht für Data-Catalog-Tabellen unterstützt, die mit dem Snowflake-Crawler erstellt wurden.

# Voraussetzungen für Crawler
<a name="crawler-prereqs"></a>

Der Crawler übernimmt die Berechtigungen der AWS Identity and Access Management (IAM-) Rolle, die Sie bei der Definition angeben. Diese IAM-Rolle muss über Berechtigungen zum Extrahieren von Daten aus Ihrem Datenspeicher und zum Schreiben in den Data Catalog verfügen. Die AWS Glue-Konsole führt nur IAM-Rollen auf, denen eine Vertrauensrichtlinie für den AWS Glue-Prinzipal-Service angefügt ist. Von der Konsole aus können Sie auch eine IAM-Rolle mit einer IAM-Richtlinie für den Zugriff auf Amazon-S3-Datenspeicher erstellen, auf die der Crawler zugreift. Weitere Informationen zum Bereitstellen von Rollen für AWS Glue finden Sie unter [Identitätsbasierte Richtlinien für Glue AWS](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies).

**Anmerkung**  
Beim Crawlen eines Delta Lake-Datenspeichers benötigen Sie Read/Write Berechtigungen für den Amazon S3 S3-Standort.

Für Ihren Crawler können Sie eine Rolle erstellen und die folgenden Richtlinien anfügen:
+ Die `AWSGlueServiceRole` AWS verwaltete Richtlinie, die die erforderlichen Berechtigungen für den Datenkatalog gewährt
+ Eine Inline-Richtlinie, die Berechtigungen für die Datenquelle erteilt.
+ Eine Inline-Richtlinie, die `iam:PassRole` Berechtigungen für die Rolle gewährt.

Ein schnellerer Ansatz besteht darin, den Crawler-Assistenten der AWS Glue-Konsole eine Rolle für Sie erstellen zu lassen. Die Rolle, die sie erstellt, ist speziell für den Crawler bestimmt und umfasst die `AWSGlueServiceRole` AWS verwaltete Richtlinie sowie die erforderliche Inline-Richtlinie für die angegebene Datenquelle.

Wenn Sie eine vorhandene Rolle für einen Crawler angeben, stellen Sie sicher, dass dieser die `AWSGlueServiceRole`-Richtlinie oder eine gleichwertige Version dieser Richtlinie (oder eine abgespeckte Version) sowie die erforderlichen Inline-Richtlinien enthält. Für einen Amazon-S3-Datenspeicher wäre die Inline-Richtlinie beispielsweise mindestens die folgende: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::bucket/object*"
      ]
    }
  ]
}
```

------

Für einen Amazon-DynamoDB-Datenspeicher wäre die Richtlinie beispielsweise mindestens die folgende: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:DescribeTable",
        "dynamodb:Scan"
      ],
      "Resource": [
        "arn:aws:dynamodb:us-east-1:111122223333:table/table-name*"
      ]
    }
  ]
}
```

------

Wenn der Crawler verschlüsselte Amazon S3 S3-Daten liest AWS Key Management Service (AWS KMS), muss die IAM-Rolle außerdem über die Entschlüsselungsberechtigung für den Schlüssel verfügen. AWS KMS Weitere Informationen finden Sie unter [Schritt 2: Erstellen einer IAM-Rolle für AWS Glue](create-an-iam-role.md).

# Definieren und Verwalten von Klassifizierern
<a name="add-classifier"></a>

Ein Classifier liest die Daten in einem Datenspeicher. Wenn er das Format der Daten erkennt, erzeugt er ein Schema. Der Classifier gibt auch eine Zahl für die Gewissheit zurück, um anzugeben, wie sicher die Formaterkennung war. 

AWS Glue bietet eine Reihe vordefinierter Classifier, Sie können aber auch benutzerdefinierte Classifier erstellen. AWS Glue ruft zuerst benutzerdefinierte Classifier auf, und zwar in der Reihenfolge, die Sie in Ihrer Crawler-Definition angeben. Je nach den Ergebnissen, die von benutzerdefinierten Classifiern zurückgegeben werden, kann AWS Glue auch integrierte Classifier aufrufen. Wenn ein Classifier während der Verarbeitung `certainty=1.0` zurückgibt, bedeutet dies, dass es zu 100 % sicher ist, dass er das richtige Schemas erstellen kann. AWS Glue verwendet dann die Ausgabe dieses Classifiers. 

Wenn kein Classifier `certainty=1.0` zurückgibt, verwendet AWS Glue die Ausgabe des Classifiers mit der höchsten Gewissheit. Wenn kein Classifier eine Gewissheit von über `0.0` zurückgibt, gibt AWS Glue die Standardklassifikationszeichenfolge `UNKNOWN` zurück.

## Wann verwende ich einen Classifier?
<a name="classifier-when-used"></a>

Sie verwenden Classifier, wenn Sie einen Datenspeicher durchsuchen, um Metadatentabellen in AWS Glue Data Catalog zu definieren. Sie können Ihren Crawler mit einer geordneten Gruppe von Classifiern einrichten. Wenn der Crawler einen Classifier aufruft, bestimmt dieser, ob die Daten erkannt werden. Wenn der Classifier die Daten nicht erkennen kann oder nicht 100 %ig sicher ist, ruft der Crawler den nächsten Classifier in der Liste auf, um festzustellen ob dieser die Daten erkennen kann. 

 Weitere Informationen zur Erstellung eines Classifiers mit der AWS Glue-Konsole finden Sie unter [Erstellen von Klassifizierern mit der AWS Glue-Konsole](console-classifiers.md). 

## Benutzerdefinierte Classifier
<a name="classifier-defining"></a>

Die Ausgabe eines Classifiers enthält eine Zeichenfolge, die die Klassifizierung oder das Format der Datei (z. B. `json`) sowie das Schema der Datei angibt. Bei einem benutzerdefinierten Classifier definieren Sie die Logik für die Erstellung des Schemas basierend auf dem Classifier-Typ. Classifier-Typen umfassen das Festlegen von Schemas basierend auf Grok-Mustern, XML-Tags und JSON-Pfaden.

Wenn Sie eine Classifier-Definition ändern, werden Daten, die zuvor mit dem Crawler durchsucht wurden, nicht neu klassifiziert. Ein Crawler führt eine Nachverfolgung zuvor durchsuchter Daten durch. Neue Daten werden mit dem aktualisierten Classifier klassifiziert. Dies kann ein aktualisiertes Schema zur Folge haben. Hat sich das Schema Ihrer Daten weiterentwickelt, aktualisieren Sie den Classifier, um allen Schemaänderungen Rechnung zu tragen, wenn Ihr Crawler ausgeführt wird. Zur Neuklassifizierung von Daten zur Korrektur eines fehlerhaften Classifiers erstellen Sie einen neuen Crawler mit dem aktualisierten Classifier. 

Weitere Informationen zum Erstellen von benutzerdefinierten Classifiern in AWS Glue finden Sie unter [Schreiben von benutzerdefinierten Klassifizierern für verschiedene Datenformate](custom-classifier.md).

**Anmerkung**  
Wenn Ihr Datenformat von einem der integrierten Classifier erkannt wird, müssen Sie keinen benutzerdefinierten Classifier erstellen.

## Integrierte Klassifizierer
<a name="classifier-built-in"></a>

 AWS Glue bietet integrierte Classifier für verschiedene Formate, darunter JSON, CSV, Web-Protokolle und viele Datenbanksysteme.

Wenn AWS Glue keinen benutzerdefinierten Classifier findet, der mit 100%iger Sicherheit zum Eingabedatenformat passt, ruft es die integrierten Classifier in der Reihenfolge auf, die in der folgenden Tabelle gezeigt wird. Die integrierten Classifier geben ein Ergebnis zurück, um anzugeben, ob das Format übereinstimmt (`certainty=1.0`) oder nicht übereinstimmt (`certainty=0.0`). Der erste Classifier mit `certainty=1.0` stellt die Klassifizierungszeichenfolge und das Schema für eine Metadatentabelle in Ihrem Data Catalog bereit.


| Typ des Klassifikators | Klassifizierungszeichenfolge | Hinweise | 
| --- | --- | --- | 
| Apache Avro | avro | Liest das Schema am Anfang der Datei, um das Format zu bestimmen. | 
| Apache ORC | orc | Liest die Metadaten der Datei zu Bestimmung des Formats. | 
| Apache Parquet | parquet | Liest das Schema am Ende der Datei, um das Format zu bestimmen. | 
| JSON | json | Liest den Anfang der Datei, um das Format zu bestimmen. | 
| Binäres JSON | bson | Liest den Anfang der Datei, um das Format zu bestimmen. | 
| XML | xml | Liest den Anfang der Datei, um das Format zu bestimmen. AWS Glue bestimmt das Tabellenschema basierend auf den XML-Tags im Dokument.  Weitere Informationen zum Erstellen eines benutzerdefinierten XML-Classifiers zur Angabe von Zeilen in dem Dokument finden Sie unter [Angepasste XML-Classifier schreiben](custom-classifier.md#custom-classifier-xml).  | 
| Amazon Ion | ion | Liest den Anfang der Datei, um das Format zu bestimmen. | 
| Kombiniertes Apache-Protokoll | combined\$1apache | Legt Protokollformate über ein Grok-Muster fest. | 
| Apache-Protokoll | apache | Legt Protokollformate über ein Grok-Muster fest. | 
| Linux-Kernel-Protokoll | linux\$1kernel | Legt Protokollformate über ein Grok-Muster fest. | 
| Microsoft-Protokoll | microsoft\$1log | Legt Protokollformate über ein Grok-Muster fest. | 
| Ruby-Protokoll | ruby\$1logger | Liest den Anfang der Datei, um das Format zu bestimmen. | 
| Squid 3.x-Protokoll | squid | Liest den Anfang der Datei, um das Format zu bestimmen. | 
| Redis-Überwachungsprotokoll | redismonlog | Liest den Anfang der Datei, um das Format zu bestimmen. | 
| Redis-Protokoll | redislog | Liest den Anfang der Datei, um das Format zu bestimmen. | 
| CSV | csv | Prüft auf die folgenden Trennzeichen: Komma (,), Verkettungszeichen (\$1), Tabulator (\$1t), Semikolon (;) und Strg-A (\$1u0001). Strg-A ist das Unicode-Steuerzeichen für Start Of Heading. | 
| Amazon Redshift | redshift | Verwendet eine JDBC-Verbindung zum Importieren von Metadaten. | 
| MySQL | mysql | Verwendet eine JDBC-Verbindung zum Importieren von Metadaten. | 
| PostgreSQL | postgresql | Verwendet eine JDBC-Verbindung zum Importieren von Metadaten. | 
| Oracle-Datenbank | oracle | Verwendet eine JDBC-Verbindung zum Importieren von Metadaten. | 
| Microsoft SQL Server | sqlserver | Verwendet eine JDBC-Verbindung zum Importieren von Metadaten. | 
| Amazon DynamoDB | dynamodb | Liest Daten aus der DynamoDB-Tabelle. | 

Dateien in den folgenden komprimierten Formaten können klassifiziert werden:
+ ZIP (unterstützt für Archive, die nur eine einzige Datei enthalten). Beachten Sie, dass Zip in anderen Services nicht gut unterstützt wird (wegen des Archivs).
+ BZIP
+ GZIP
+ LZ4
+ Snappy (unterstützt sowohl für Standard- und Hadoop-native Snappy-Formate)

### Integrierter CSV-Classifier
<a name="classifier-builtin-rules"></a>

Der integrierte CSV-Classifier analysiert CSV-Dateiinhalte, um das Schema für eine AWS Glue-Tabelle zu bestimmen. Dieser Classifier prüft auf folgende Trennzeichen:
+ Komma (,)
+ Pipe (\$1)
+ Tab (\$1t)
+ Semikolon (;)
+ Strg-A (\$1 u0001)

  Strg-A ist das Unicode-Steuerzeichen für `Start Of Heading`.

Damit die Tabelle als CSV klassifiziert wird, muss das Tabellenschema mindestens zwei Spalten und zwei Datenzeilen aufweisen. Der CSV-Classifier nutzt eine Reihe von Heuristiken, um zu ermitteln, ob ein Header in einer bestimmten Datei vorhanden ist. Kann der Classifier keinen Header in der ersten Datenzeile feststellen, werden Spaltenüberschriften als `col1`, `col2` `col3` und so weiter angezeigt. Der integrierte CSV-Classifier bestimmt, ob ein Header durch Auswertung der folgenden Merkmale der Datei abgeleitet wird:
+ Jede Spalte in einem potenziellen Header analysiert einen STRING-Datentyp.
+ Mit Ausnahme der letzten Spalte hat jede Spalte in einem potenziellen Header einen Inhalt mit weniger als 150 Zeichen. Damit ein abschließendes Trennzeichen möglich ist, kann die letzte Spalte in der gesamten Datei leer sein.
+ Jede Spalte in einem potenziellen Header muss die AWS Glue-`regex`-Anforderungen für einen Spaltennamen erfüllen.
+ Die Kopfzeile muss sich ausreichend von den anderen Datenzeilen unterscheiden. Zu diesem Zweck muss mindestens eine Zeile nicht als STRING-Type analysiert werden. Wenn alle Spalten vom Typ STRING sind, unterscheidet sich die erste Datenzeile nicht ausreichend genug von den folgenden Zeilen, um als Header verwendet werden zu können.

**Anmerkung**  
Wenn der integrierte CSV-Classifier Ihre AWS Glue-Tabelle nicht wie gewünscht erstellt, können Sie eine der folgenden Alternativen versuchen:  
Ändern Sie die Spaltennamen im Data Catalog, setzen Sie `SchemaChangePolicy` auf LOG und legen Sie die Partitionsausgabekonfiguration für zukünftige Crawler-Ausführungen auf `InheritFromTable` fest.
Erstellen Sie einen benutzerdefinierten Grok-Classifier, um die Daten zu analysieren und die von Ihnen gewünschten Spalten zuzuweisen.
Der integrierte CSV-Classifier erstellt Tabellen, die auf `LazySimpleSerDe` als Serialisierungsbibliothek verweisen. Dies ist eine gute Möglichkeit für die Typinferenz. Wenn die CSV-Daten jedoch Zeichenketten in Anführungszeichen enthalten, bearbeiten Sie die Tabellendefinition und ändern Sie die SerDe Bibliothek in`OpenCSVSerDe`. Passen Sie alle abgeleiteten Typen an STRING an, setzen Sie `SchemaChangePolicy` auf LOG und legen Sie die Partitionsausgabekonfiguration für zukünftige Crawler-Ausführungen auf `InheritFromTable` fest. Weitere Informationen zu SerDe Bibliotheken finden Sie unter [SerDe Referenz](https://docs.aws.amazon.com/athena/latest/ug/serde-reference.html) im Amazon Athena Athena-Benutzerhandbuch.

# Schreiben von benutzerdefinierten Klassifizierern für verschiedene Datenformate
<a name="custom-classifier"></a>

Sie können einen angepassten Classifier bereitstellen, um Ihre Daten in AWS Glue zu klassifizieren. Sie können einen benutzerdefinierten Klassifikator mit einem Grok-Muster, einem XML-Tag, JavaScript Object Notation (JSON) oder kommagetrennten Werten (CSV) erstellen. Ein AWS Glue-Crawler kann benutzerdefinierten Classifier aufrufen. Wenn der Classifier die Daten erkennt, gibt er die Klassifizierung und das Schema der Daten an den Crawler zurück. Möglicherweise müssen Sie einen angepassten Classifier definieren, wenn Ihre Daten nicht mit den integrierten Classifiern übereinstimmen oder wenn Sie die vom Crawler erstellten Tabellen anpassen möchten.

 Weitere Informationen zur Erstellung eines Classifiers mit der AWS Glue-Konsole finden Sie unter [Erstellen von Klassifizierern mit der AWS Glue-Konsole](console-classifiers.md). 

AWS Glue führt angepasste Classifier vor integrierten Classifiern in der von Ihnen angegebenen Reihenfolge aus. Wenn ein Crawler einen Classifier findet, der zu den Daten passt, werden die Klassifizierungszeichenkette und das Schema für die Definition von Tabellen verwendet, die in Ihren AWS Glue Data Catalog geschrieben werden.

**Topics**
+ [Angepasste Grok-Classifier schreiben](#custom-classifier-grok)
+ [Angepasste XML-Classifier schreiben](#custom-classifier-xml)
+ [Angepasste JSON-Classifier schreiben](#custom-classifier-json)
+ [Angepasste CSV-Classifier schreiben](#custom-classifier-csv)

## Angepasste Grok-Classifier schreiben
<a name="custom-classifier-grok"></a>

Grok ist ein Werkzeug, das verwendet wird, um Textdaten über ein passendes Muster zu analysieren. Ein Grok-Muster ist ein benannter Satz von regulären Ausdrücken (regex), die verwendet werden, um Daten zeilenweise abzugleichen. AWS Glue verwendet Grok-Muster, um das Schema Ihrer Daten herzuleiten. Wenn ein Grok-Muster mit Ihren Daten übereinstimmt, verwendet AWS Glue das Muster, um die Struktur Ihrer Daten zu bestimmen und Feldern zuzuordnen.

AWS Glue stellt viele integrierte Muster bereit. Sie können außerdem Ihre eigenen definieren. Sie können ein Grok-Muster mit Hilfe von integrierten Mustern und angepassten Mustern in Ihrer angepassten Classifier-Definition erstellen. Sie können ein Grok-Muster anpassen, um spezielle Textdateiformate zu klassifizieren.

**Anmerkung**  
Benutzerdefinierte AWS Glue-Grok-Classifier verwenden die `GrokSerDe` Serialisierungsbibliothek für Tabellen, die im AWS Glue Data Catalog erstellt wurden. Wenn Sie das AWS Glue Data Catalog mit Amazon Athena, Amazon EMR oder Redshift Spectrum verwenden, finden Sie in der Dokumentation zu diesen Diensten Informationen zur Unterstützung von. `GrokSerDe` Derzeit treten möglicherweise Probleme mit der Abfrage von Tabellen auf, die mit `GrokSerDe` von Amazon EMR und Redshift Spectrum erstellt wurden.

Im Folgenden wird die grundlegende Syntax für die Komponenten eines Grok-Musters beschrieben:

```
%{PATTERN:field-name}
```

Daten, die mit dem benannten `PATTERN` übereinstimmen, werden der `field-name`-Spalte im Schema zugeordnet. Sie erhalten den Standarddatentyp `string`. Optional kann der Datentyp für das Feld als `byte`, `boolean`, `double`, `short`, `int`, `long` oder `float` in das resultierende Schema übernommen werden.

```
%{PATTERN:field-name:data-type}
```

Um z. B. ein `num`-Feld auf einen `int`-Datentyp festzulegen, können Sie das folgende Muster verwenden: 

```
%{NUMBER:num:int}
```

Muster können aus anderen Mustern zusammengesetzt werden. Sie können z. B. ein Muster für einen `SYSLOG`-Zeitstempel verwenden, das durch Muster für Monat, Tag des Monats und Uhrzeit definiert ist (beispielsweise `Feb 1 06:25:43`). Für diese Daten können Sie das folgende Muster definieren:

```
SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
```

**Anmerkung**  
Grok-Muster können immer nur eine Zeile auf einmal verarbeiten. Mehrzeilige Muster werden nicht unterstützt. Auch Zeilenumbrüche innerhalb eines Musters werden nicht unterstützt.

### Benutzerdefinierte Werte für den Grok-Klassifizierer
<a name="classifier-values"></a>

Wenn Sie einen Grok-Klassifizierer definieren, geben Sie die folgenden Werte an, um den benutzerdefinierten Klassifizierer zu erstellen.

**Name**  
Name des Classifiers.

**Klassifizierung**  
Die Zeichenfolge, die geschrieben wird, um das Format der klassifizierten Daten zu beschreiben (z. B. `special-logs`).

**Grok-Muster**  
Die Menge von Mustern, die auf die Datenspeicher angewendet werden, um festzustellen, ob es eine Übereinstimmung gibt. Diese Muster stammen aus [integrierten Mustern](#classifier-builtin-patterns) in AWS Glue und beliebigen, von Ihnen definierten angepassten Mustern.  
Im Folgenden sehen Sie ein Beispiel für ein Grok-Muster:  

```
%{TIMESTAMP_ISO8601:timestamp} \[%{MESSAGEPREFIX:message_prefix}\] %{CRAWLERLOGLEVEL:loglevel} : %{GREEDYDATA:message}
```
Wenn die Daten mit `TIMESTAMP_ISO8601` übereinstimmen, wird eine Schema-Spalte `timestamp` erzeugt. Das Verhalten ist für die anderen benannten Muster im Beispiel ähnlich.

**Benutzerdefinierte Muster**  
Von Ihnen definierte, optionale Muster. Diese Muster werden durch das Grok-Muster referenziert, das Ihre Daten klassifiziert. Sie können diese angepassten Muster in dem Grok-Muster referenzieren, das auf Ihre Daten angewendet wird. Jedes angepasste Komponentenmuster muss sich in einer separaten Zeile befinden. Die Syntax für [reguläre Ausdrücke (regex)](http://en.wikipedia.org/wiki/Regular_expression) wird verwendet, um das Muster zu definieren.   
Im Folgenden finden Sie ein Beispiel für die Verwendung von angepassten Mustern:  

```
CRAWLERLOGLEVEL (BENCHMARK|ERROR|WARN|INFO|TRACE)
MESSAGEPREFIX .*-.*-.*-.*-.*
```
Das erste angepasste benannte Muster (`CRAWLERLOGLEVEL`) ist eine Übereinstimmung, wenn die Daten mit einer der aufgezählten Zeichenfolgen übereinstimmen. Das zweite benutzerdefinierte Muster (`MESSAGEPREFIX`) versucht, eine Nachrichtenpräfix-Zeichenfolge zu finden.

AWS Glue verfolgt die Erstellungszeit, die letzte Aktualisierungszeit und die Version Ihres Classifiers.

### Integrierte Muster
<a name="classifier-builtin-patterns"></a>

AWS Glue bietet viele gängige Muster, die Sie zum Erstellen eines angepassten Classifiers verwenden können. Sie fügen dem `grok pattern` in einer Classifier-Definition ein benanntes Muster hinzu.

Die folgende Liste umfasst einer Zeile für jedes Muster. Pro Zeile folgt nach der Definition der Name des Musters. [Die Syntax für reguläre Ausdrücke (regex)](http://en.wikipedia.org/wiki/Regular_expression) wird bei der Definition des Musters verwendet.

```
#<noloc>&GLU;</noloc> Built-in patterns
 USERNAME [a-zA-Z0-9._-]+
 USER %{USERNAME:UNWANTED}
 INT (?:[+-]?(?:[0-9]+))
 BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
 NUMBER (?:%{BASE10NUM:UNWANTED})
 BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))
 BASE16FLOAT \b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\.[0-9A-Fa-f]*)?)|(?:\.[0-9A-Fa-f]+)))\b
 BOOLEAN (?i)(true|false)
 
 POSINT \b(?:[1-9][0-9]*)\b
 NONNEGINT \b(?:[0-9]+)\b
 WORD \b\w+\b
 NOTSPACE \S+
 SPACE \s*
 DATA .*?
 GREEDYDATA .*
 #QUOTEDSTRING (?:(?<!\\)(?:"(?:\\.|[^\\"])*"|(?:'(?:\\.|[^\\'])*')|(?:`(?:\\.|[^\\`])*`)))
 QUOTEDSTRING (?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))
 UUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}
 
 # Networking
 MAC (?:%{CISCOMAC:UNWANTED}|%{WINDOWSMAC:UNWANTED}|%{COMMONMAC:UNWANTED})
 CISCOMAC (?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4})
 WINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})
 COMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})
 IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?
 IPV4 (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])
 IP (?:%{IPV6:UNWANTED}|%{IPV4:UNWANTED})
 HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-_]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-_]{0,62}))*(\.?|\b)
 HOST %{HOSTNAME:UNWANTED}
 IPORHOST (?:%{HOSTNAME:UNWANTED}|%{IP:UNWANTED})
 HOSTPORT (?:%{IPORHOST}:%{POSINT:PORT})
 
 # paths
 PATH (?:%{UNIXPATH}|%{WINPATH})
 UNIXPATH (?>/(?>[\w_%!$@:.,~-]+|\\.)*)+
 #UNIXPATH (?<![\w\/])(?:/[^\/\s?*]*)+
 TTY (?:/dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+))
 WINPATH (?>[A-Za-z]+:|\\)(?:\\[^\\?*]*)+
 URIPROTO [A-Za-z]+(\+[A-Za-z+]+)?
 URIHOST %{IPORHOST}(?::%{POSINT:port})?
 # uripath comes loosely from RFC1738, but mostly from what Firefox
 # doesn't turn into %XX
 URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%_\-]*)+
 #URIPARAM \?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)?
 URIPARAM \?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]]*
 URIPATHPARAM %{URIPATH}(?:%{URIPARAM})?
 URI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?
 
 # Months: January, Feb, 3, 03, 12, December
 MONTH \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b
 MONTHNUM (?:0?[1-9]|1[0-2])
 MONTHNUM2 (?:0[1-9]|1[0-2])
 MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
 
 # Days: Monday, Tue, Thu, etc...
 DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)
 
 # Years?
 YEAR (?>\d\d){1,2}
 # Time: HH:MM:SS
 #TIME \d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?
 # TIME %{POSINT<24}:%{POSINT<60}(?::%{POSINT<60}(?:\.%{POSINT})?)?
 HOUR (?:2[0123]|[01]?[0-9])
 MINUTE (?:[0-5][0-9])
 # '60' is a leap second in most time standards and thus is valid.
 SECOND (?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)
 TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])
 # datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it)
 DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
 DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
 DATESTAMP_US %{DATE_US}[- ]%{TIME}
 DATESTAMP_EU %{DATE_EU}[- ]%{TIME}
 ISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE}))
 ISO8601_SECOND (?:%{SECOND}|60)
 TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
 TZ (?:[PMCE][SD]T|UTC)
 DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
 DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
 DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
 DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}
 CISCOTIMESTAMP %{MONTH} %{MONTHDAY} %{TIME}
 
 # Syslog Dates: Month Day HH:MM:SS
 SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
 PROG (?:[\w._/%-]+)
 SYSLOGPROG %{PROG:program}(?:\[%{POSINT:pid}\])?
 SYSLOGHOST %{IPORHOST}
 SYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>
 HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}
 
 # Shortcuts
 QS %{QUOTEDSTRING:UNWANTED}
 
 # Log formats
 SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
 
 MESSAGESLOG %{SYSLOGBASE} %{DATA}
 
 COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{Bytes:bytes=%{NUMBER}|-})
 COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}
 COMMONAPACHELOG_DATATYPED %{IPORHOST:clientip} %{USER:ident;boolean} %{USER:auth} \[%{HTTPDATE:timestamp;date;dd/MMM/yyyy:HH:mm:ss Z}\] "(?:%{WORD:verb;string} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion;float})?|%{DATA:rawrequest})" %{NUMBER:response;int} (?:%{NUMBER:bytes;long}|-)
 
 
 # Log Levels
 LOGLEVEL ([A|a]lert|ALERT|[T|t]race|TRACE|[D|d]ebug|DEBUG|[N|n]otice|NOTICE|[I|i]nfo|INFO|[W|w]arn?(?:ing)?|WARN?(?:ING)?|[E|e]rr?(?:or)?|ERR?(?:OR)?|[C|c]rit?(?:ical)?|CRIT?(?:ICAL)?|[F|f]atal|FATAL|[S|s]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)
```

## Angepasste XML-Classifier schreiben
<a name="custom-classifier-xml"></a>

XML definiert die Struktur eines Dokuments mithilfe von Tags in der Datei. Mit einem angepassten XML-Classifier können Sie den Tag-Namen angeben, der für die Definition einer Zeile verwendet wird.

### Benutzerdefinierte Klassifiziererwerte für einen XML-Klassifizierer
<a name="classifier-values-xml"></a>

Wenn Sie einen XML-Classifier definieren, stellen Sie die folgenden Werte für AWS Glue bereit, um den Classifier zu erstellen. Das Klassifizierungsfeld dieses Classifiers ist auf `xml` festgelegt.

**Name**  
Name des Classifiers.

**Row-Tag**  
Der XML-Tag-Name, der eine Tabellenzeile im XML-Dokument definiert, ohne spitze Klammern (`< >`). Der Name muss den XML-Regeln für ein Tag entsprechen.  
Das Element, das die Zeilendaten enthält, darf **kein** selbstschließendes, leeres Element sein. Dieses leere Element wird beispielsweise **nicht** von AWS Glue analysiert:  

```
            <row att1=”xx” att2=”yy” />  
```
 Leere Elemente können wie folgt geschrieben werden:  

```
            <row att1=”xx” att2=”yy”> </row> 
```

AWS Glue verfolgt die Erstellungszeit, die letzte Aktualisierungszeit und die Version Ihres Classifiers.

Angenommen, Sie haben die folgende XML-Datei. Zum Erstellen einer AWS Glue-Tabelle, die nur Spalten für Autor und Titel enthält, generieren Sie einen Classifier in der AWS Glue-Konsole mit **Row tag** (Zeilen-Tag) als `AnyCompany`. Fügen Sie dann einen Crawler hinzu, der den benutzerdefinierten Classifier verwendet, und führen Sie ihn aus.

```
<?xml version="1.0"?>
<catalog>
   <book id="bk101">
     <AnyCompany>
       <author>Rivera, Martha</author>
       <title>AnyCompany Developer Guide</title>
     </AnyCompany>
   </book>
   <book id="bk102">
     <AnyCompany>   
       <author>Stiles, John</author>
       <title>Style Guide for AnyCompany</title>
     </AnyCompany>
   </book>
</catalog>
```

## Angepasste JSON-Classifier schreiben
<a name="custom-classifier-json"></a>

JSON ist ein Datenaustauschformat. Es definiert Datenstrukturen mit Name-Wert-Paaren oder einer geordneten Liste von Werten. Mit einem angepassten JSON-Classifier können Sie den JSON-Pfad zu einer Datenstruktur angeben, über den das Schema für Ihre Tabelle definiert wird.

### Angepasste Classifier-Werte in AWS Glue
<a name="classifier-values-json"></a>

Wenn Sie einen JSON-Classifier festlegen, stellen Sie die folgenden Werte für AWS Glue bereit, um den Classifier zu erstellen. Das Klassifizierungsfeld dieses Classifiers ist auf `json` festgelegt.

**Name**  
Name des Classifiers.

**JSON-Pfad**  
Ein JSON-Pfad, der auf ein Objekt zeigt, das zur Definition eines Tabellenschemas verwendet wird. Der JSON-Pfad kann in Punkt- oder Klammer-Notation angegeben werden. Folgende Operatoren werden unterstützt:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/custom-classifier.html)

AWS Glue verfolgt die Erstellungszeit, die letzte Aktualisierungszeit und die Version Ihres Classifiers.

**Example der Verwendung eines JSON-Classifiers zum Auslesen von Datensätzen aus einem Array**  
Angenommen, Ihre JSON-Daten sind ein Array mit Datensätzen. Die ersten paar Zeilen Ihrer Datei könnten beispielsweise wie folgt aussehen:  

```
[
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:ak",
    "name": "Alaska"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:al\/cd:1",
    "name": "Alabama's 1st congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:al\/cd:2",
    "name": "Alabama's 2nd congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:al\/cd:3",
    "name": "Alabama's 3rd congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:al\/cd:4",
    "name": "Alabama's 4th congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:al\/cd:5",
    "name": "Alabama's 5th congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:al\/cd:6",
    "name": "Alabama's 6th congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:al\/cd:7",
    "name": "Alabama's 7th congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:ar\/cd:1",
    "name": "Arkansas's 1st congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:ar\/cd:2",
    "name": "Arkansas's 2nd congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:ar\/cd:3",
    "name": "Arkansas's 3rd congressional district"
  },
  {
    "type": "constituency",
    "id": "ocd-division\/country:us\/state:ar\/cd:4",
    "name": "Arkansas's 4th congressional district"
  }
]
```
Bei der Ausführung eines Crawlers mit dem integrierten JSON-Classifier wird die gesamte Datei zur Definition des Schemas verwendet. Da Sie keinen JSON-Pfad angeben, behandelt der Crawler die Daten als ein Objekt (als Array). Das Schema kann beispielsweise wie folgt aussehen:  

```
root
|-- record: array
```
Um ein Schema zu erstellen, das auf jedem Datensatz im JSON-Array basiert, erstellen Sie einen angepassten JSON-Classifier und geben Sie den JSON-Pfad als `$[*]` an. Wenn Sie diesen JSON-Pfad angeben, fragt der Classifier alle 12 Datensätze im Array ab, um das Schema zu bestimmen. Das resultierende Schema enthält für jedes Objekt eigene Felder, wie im folgenden Beispiel gezeigt:  

```
root
|-- type: string
|-- id: string
|-- name: string
```

**Example Verwendung eines JSON-Classifiers, um nur Teile einer Datei zu untersuchen**  
Angenommen, Ihre JSON-Daten folgen dem Muster der JSON-Beispieldatei `s3://awsglue-datasets/examples/us-legislators/all/areas.json` von [http://everypolitician.org/](http://everypolitician.org/). Beispielobjekte in der JSON-Datei sehen wie folgt aus:  

```
{
  "type": "constituency",
  "id": "ocd-division\/country:us\/state:ak",
  "name": "Alaska"
}
{
  "type": "constituency",
  "identifiers": [
    {
      "scheme": "dmoz",
      "identifier": "Regional\/North_America\/United_States\/Alaska\/"
    },
    {
      "scheme": "freebase",
      "identifier": "\/m\/0hjy"
    },
    {
      "scheme": "fips",
      "identifier": "US02"
    },
    {
      "scheme": "quora",
      "identifier": "Alaska-state"
    },
    {
      "scheme": "britannica",
      "identifier": "place\/Alaska"
    },
    {
      "scheme": "wikidata",
      "identifier": "Q797"
    }
  ],
  "other_names": [
    {
      "lang": "en",
      "note": "multilingual",
      "name": "Alaska"
    },
    {
      "lang": "fr",
      "note": "multilingual",
      "name": "Alaska"
    },
    {
      "lang": "nov",
      "note": "multilingual",
      "name": "Alaska"
    }
  ],
  "id": "ocd-division\/country:us\/state:ak",
  "name": "Alaska"
}
```
Bei der Ausführung eines Crawlers mit dem integrierten JSON-Classifier wird die gesamte Datei zum Erstellen des Schemas verwendet. Es könnte das folgende Schema erstellt werden:  

```
root
|-- type: string
|-- id: string
|-- name: string
|-- identifiers: array
|    |-- element: struct
|    |    |-- scheme: string
|    |    |-- identifier: string
|-- other_names: array
|    |-- element: struct
|    |    |-- lang: string
|    |    |-- note: string
|    |    |-- name: string
```
Um ein Schema zu erstellen, das nur das "`id`"-Objekt verwendet, erstellen Sie einen angepassten JSON-Classifier und geben Sie den JSON-Pfad als `$.id` an. Dann basiert das Schema nur auf dem Feld "`id`":  

```
root
|-- record: string
```
Die ersten paar mit diesem Schema extrahierten Datenzeilen sehen so aus:  

```
{"record": "ocd-division/country:us/state:ak"}
{"record": "ocd-division/country:us/state:al/cd:1"}
{"record": "ocd-division/country:us/state:al/cd:2"}
{"record": "ocd-division/country:us/state:al/cd:3"}
{"record": "ocd-division/country:us/state:al/cd:4"}
{"record": "ocd-division/country:us/state:al/cd:5"}
{"record": "ocd-division/country:us/state:al/cd:6"}
{"record": "ocd-division/country:us/state:al/cd:7"}
{"record": "ocd-division/country:us/state:ar/cd:1"}
{"record": "ocd-division/country:us/state:ar/cd:2"}
{"record": "ocd-division/country:us/state:ar/cd:3"}
{"record": "ocd-division/country:us/state:ar/cd:4"}
{"record": "ocd-division/country:us/state:as"}
{"record": "ocd-division/country:us/state:az/cd:1"}
{"record": "ocd-division/country:us/state:az/cd:2"}
{"record": "ocd-division/country:us/state:az/cd:3"}
{"record": "ocd-division/country:us/state:az/cd:4"}
{"record": "ocd-division/country:us/state:az/cd:5"}
{"record": "ocd-division/country:us/state:az/cd:6"}
{"record": "ocd-division/country:us/state:az/cd:7"}
```
Um ein Schema zu erstellen, das auf einem tief verschachtelten Objekt (z. B. "`identifier`") in der JSON-Datei basiert, können Sie einen angepassten JSON-Classifier erstellen und den JSON-Pfad als `$.identifiers[*].identifier` angeben. Obwohl das Schema dem vorherigen Beispiel ähnlich ist, basiert es auf einem anderen Objekt in der JSON-Datei.   
Das Schema sieht wie folgt aus:  

```
root
|-- record: string
```
Die ersten Datenzeilen aus der Tabelle zeigen, dass das Schema auf den Daten im Objekt "`identifier`" basiert:  

```
{"record": "Regional/North_America/United_States/Alaska/"}
{"record": "/m/0hjy"}
{"record": "US02"}
{"record": "5879092"}
{"record": "4001016-8"}
{"record": "destination/alaska"}
{"record": "1116270"}
{"record": "139487266"}
{"record": "n79018447"}
{"record": "01490999-8dec-4129-8254-eef6e80fadc3"}
{"record": "Alaska-state"}
{"record": "place/Alaska"}
{"record": "Q797"}
{"record": "Regional/North_America/United_States/Alabama/"}
{"record": "/m/0gyh"}
{"record": "US01"}
{"record": "4829764"}
{"record": "4084839-5"}
{"record": "161950"}
{"record": "131885589"}
```
Um eine Tabelle zu erstellen, die auf einem anderen tief verschachtelten Objekt basiert (z. B. dem Feld "`name`" im Array "`other_names`" in der JSON-Datei), können Sie einen angepassten JSON-Classifier erstellen und den JSON-Pfad als `$.other_names[*].name` festlegen. Obwohl das Schema dem vorherigen Beispiel ähnlich ist, basiert es auf einem anderen Objekt in der JSON-Datei. Das Schema sieht wie folgt aus:  

```
root
|-- record: string
```
Die ersten Datenzeilen aus der Tabelle zeigen, dass das Schema auf den Daten im Objekt "`name`" im Array "`other_names`" basiert:  

```
{"record": "Alaska"}
{"record": "Alaska"}
{"record": "Аляска"}
{"record": "Alaska"}
{"record": "Alaska"}
{"record": "Alaska"}
{"record": "Alaska"}
{"record": "Alaska"}
{"record": "Alaska"}
{"record": "ألاسكا"}
{"record": "ܐܠܐܣܟܐ"}
{"record": "الاسكا"}
{"record": "Alaska"}
{"record": "Alyaska"}
{"record": "Alaska"}
{"record": "Alaska"}
{"record": "Штат Аляска"}
{"record": "Аляска"}
{"record": "Alaska"}
{"record": "আলাস্কা"}
```

## Angepasste CSV-Classifier schreiben
<a name="custom-classifier-csv"></a>

 Mit benutzerdefinierten CSV-Klassifikatoren können Sie Datentypen für jede Spalte im benutzerdefinierten CSV-Klassifikatorfeld angeben. Sie können den Datentyp jeder Spalte durch ein Komma trennen. Durch die Angabe von Datentypen können Sie die vom Crawler abgeleiteten Datentypen überschreiben und sicherstellen, dass die Daten entsprechend klassifiziert werden.

Sie können die SerDe CSV-Verarbeitung im Klassifikator festlegen, der im Datenkatalog angewendet wird.

Wenn Sie einen benutzerdefinierten Klassifikator erstellen, können Sie den Classifer auch für verschiedene Crawler wiederverwenden.
+  Bei CSV-Dateien, die nur Kopfzeilen (keine Daten) enthalten, werden diese Dateien als UNKNOWN klassifiziert, da nicht genügend Informationen bereitgestellt werden. Wenn Sie in der Option *Column headings* (Spaltenüberschriften) angeben, dass die CSV-Datei „Has headings“, also Überschriften enthält, und die Datentypen angeben, können wir diese Dateien korrekt klassifizieren. 

Sie können einen benutzerdefinierten CSV-Classifier zum Ableiten des Schemas verschiedener Typen von CSV-Daten verwenden. Zu den benutzerdefinierten Attributen, die Sie für Ihren Klassifikator angeben können, gehören Trennzeichen, eine SerDe CSV-Option, Optionen für den Header und die Angabe, ob bestimmte Validierungen an den Daten durchgeführt werden sollen.

### Angepasste Classifier-Werte in AWS Glue
<a name="classifier-values-csv"></a>

Wenn Sie einen CSV-Classifier festlegen, stellen Sie die folgenden Werte für AWS Glue bereit, um den Classifier zu erstellen. Das Klassifizierungsfeld dieses Classifiers ist auf `csv` festgelegt.

**Name des Classifiers**  
Name des Classifiers.

**CSV-Serde**  
Legt die CSV-Daten SerDe für die Verarbeitung im Klassifikator fest, die im Datenkatalog angewendet werden. Die Optionen sind Open CSV SerDe, Lazy SerDe Simple und Keine. Sie können den Wert „None“ angeben, wenn der Crawler die Erkennung durchführen soll.

**Spaltentrennzeichen**  
Eine benutzerdefiniertes Symbol zur Bezeichnung, wodurch die einzelnen Spalteneinträge in der Zeile voneinander getrennt werden. Geben Sie ein Unicode-Zeichen an. Wenn Sie Ihr Trennzeichen nicht eingeben können, können Sie es kopieren und einfügen. Dies funktioniert für druckbare Zeichen, einschließlich solcher, die Ihr System nicht unterstützt (normalerweise angezeigt als □).

**Anführungszeichen**  
Ein benutzerdefiniertes Symbol zur Bezeichnung, wodurch Inhalte zu einem einzelnen Spaltenwert miteinander kombiniert werden. Muss sich von dem Spaltentrennzeichen unterscheiden. Geben Sie ein Unicode-Zeichen an. Wenn Sie Ihr Trennzeichen nicht eingeben können, können Sie es kopieren und einfügen. Dies funktioniert für druckbare Zeichen, einschließlich solcher, die Ihr System nicht unterstützt (normalerweise angezeigt als □).

**Spaltenüberschriften**  
Gibt das Verhalten an, wie Spaltenüberschriften in der CSV-Datei erkannt werden sollen. Wenn Ihre benutzerdefinierte CSV-Datei Spaltenüberschriften besitzt, geben Sie eine durch Komma getrennte Liste der Spaltenüberschriften ein.

**Verarbeitungsoptionen: Dateien mit einzelnen Spalte erlauben**  
Aktiviert die Verarbeitung von Dateien, die nur eine Spalte enthalten.

**Verarbeitungsoptionen: Leerzeichen vor Identifizierung von Spaltenwerten abtrennen**  
Gibt an, ob Werte vor dem Identifizieren des Typ der Spaltenwerte abgetrennt werden sollen.

**Benutzerdefinierte Datentypen – *optional***  
 Geben Sie den benutzerdefinierten Datentyp durch ein Komma getrennt ein. Gibt die benutzerdefinierten Datentypen in der CSV-Datei an. Der benutzerdefinierte Datentyp muss ein unterstützter Datentyp sein. Unterstützte Datentypen sind: „BINARY“, „BOOLEAN“, „DATE“, „DECIMAL“, „DOUBLE“, „FLOAT“, „INT“, „LONG“, „SHORT“, „STRING“, „TIMESTAMP“. Bei nicht unterstützten Datentypen wird ein Fehler angezeigt. 

# Erstellen von Klassifizierern mit der AWS Glue-Konsole
<a name="console-classifiers"></a>

Ein Classifier bestimmt das Schema Ihrer Daten. Sie können einen benutzerdefinierten Classifier erstellen und von AWS Glue aus auf ihn verweisen. 

## Classifier erstellen
<a name="add-classifier-console"></a>

Zum Hinzufügen eines Classifiers in der AWS Glue-Konsole wählen Sie **Add classifier (Classifier hinzufügen) aus**. Wenn Sie einen Classifier definieren, geben Sie Werte für Folgendes an:
+ **Classifier-Name** – Geben Sie einen eindeutigen Namen für Ihren Classifier ein.
+ **Classifier-Typ** – Der Klassifizierungstyp der Tabellen, die von diesem Classifier abgeleitet werden.
+ **Letzte Aktualisierung** – Der letzte Zeitpunkt, zu dem dieser Classifier aktualisiert wurde.

**Name des Classifiers**  
Geben Sie einen eindeutigen Namen für Ihren Classifier ein.

**Typ des Klassifikators**  
Wählen Sie den zu erstellenden Classifier aus.

Konfigurieren Sie je nach gewähltem Classifier-Typ die folgenden Eigenschaften für Ihren Classifier:

------
#### [ Grok ]
+ **Klassifizierung** 

  Beschreiben Sie das Format oder den Typ der Daten, die klassifiziert werden, oder geben Sie ein benutzerdefiniertes Label an. 
+ **Grok-Muster** 

  Dies dient dazu, Ihre Daten zu analysieren und in ein strukturiertes Schema einzufügen. Das Grok-Muster besteht aus benannten Mustern, die das Format Ihres Datenspeichers beschreiben. Sie schreiben dieses Grok-Muster mit den benannten integrierten Mustern von AWS Glue und mit benutzerdefinierten Mustern, die Sie in das Feld **Custom patterns (Benutzerdefinierte Muster)** einfügen. Auch wenn die Grok-Debugger-Ergebnisse nicht unbedingt mit den Ergebnissen von AWS Glue übereinstimmen, empfehlen wir, dass Sie Ihr Muster mit Beispieldaten und einem Grok-Debugger testen. Grok-Debugger finden Sie im Internet. Die benannten integrierten Muster, die von AWS Glue bereitgestellt werden, sind in der Regel mit Grok-Mustern kompatibel, die im Internet verfügbar sind. 

  Erstellen Sie Ihr Grok-Muster durch iteratives Hinzufügen von benannten Mustern und überprüfen Sie Ihre Ergebnisse in einem Debugger. Diese Aktivität gibt Ihnen die Gewissheit, dass Ihre Daten analysiert werden können, wenn der AWS Glue-Crawler Ihr Grok-Muster ausführt.
+ **Benutzerdefinierte Muster** 

  Für Grok-Classifier sind dies optionale Bausteine für das **Grok pattern** (Grok-Muster), das Sie schreiben. Wenn integrierte Muster Ihre Daten nicht analysieren können, müssen Sie möglicherweise ein benutzerdefiniertes Muster schreiben. Diese benutzerdefinierten Muster werden in diesem Feld definiert und im Feld **Grok pattern** (Grok-Muster) referenziert. Jedes benutzerdefinierte Muster wird in einer separaten Zeile definiert. Es besteht wie integrierte Muster aus einer benannten Musterdefinition, die [reguläre Ausdruckssyntax (Regex)](http://en.wikipedia.org/wiki/Regular_expression) verwendet. 

  Im folgenden Beispiel folgt auf den Namen `MESSAGEPREFIX` eine reguläre Ausdrucksdefinition für Ihre Daten, um festzustellen, ob das Muster eingehalten wird. 

  ```
  MESSAGEPREFIX .*-.*-.*-.*-.*
  ```

------
#### [ XML ]
+ **Row-Tag** 

  Für XML-Classifier ist dies der Name des XML-Tags zur Definition einer Tabellenzeile im XML-Dokument. Geben Sie den Namen ohne spitze Klammern `< >` an. Der Name muss den XML-Regeln für ein Tag entsprechen.

  Weitere Informationen finden Sie unter [Angepasste XML-Classifier schreiben](custom-classifier.md#custom-classifier-xml). 

------
#### [ JSON ]
+ **JSON-Pfad** 

  Für JSON-Classifier handelt es sich hierbei um den JSON-Pfad zum Objekt, Array oder Wert, das bzw. der eine Zeile der Tabelle, die erstellt wird, definiert. Geben Sie den Namen in JSON-Syntax entweder mit Punkt- oder Klammernnotation unter Verwendung von Operatoren an, die von AWS Glue unterstützt werden. 

  Weitere Informationen finden Sie in der Liste der Operatoren in [Angepasste JSON-Classifier schreiben](custom-classifier.md#custom-classifier-json). 

------
#### [ CSV ]
+ **Spaltentrennzeichen** 

  Ein Symbol zur Bezeichnung, wodurch die einzelnen Spalteneinträge in der Zeile voneinander getrennt werden. Wählen Sie das Begrenzungszeichen in der Liste aus, oder wählen Sie `Other`, um ein benutzerdefiniertes Trennzeichen einzugeben.
+ **Anführungszeichen** 

  Ein einzelnes Zeichen oder Symbol zur Bezeichnung wodurch Inhalte zu einem einzelnen Spaltenwert miteinander kombiniert werden. Muss sich von dem Spaltentrennzeichen unterscheiden. Wählen Sie das Angebotssymbol aus der Liste aus, oder wählen Sie `Other`, um ein benutzerdefiniertes Anführungszeichen einzugeben.
+ **Spaltenüberschriften** 

  Gibt das Verhalten an, wie Spaltenüberschriften in der CSV-Datei erkannt werden sollen. Sie können `Has headings`, `No headings` oder `Detect headings` wählen. Wenn Ihre benutzerdefinierte CSV-Datei Spaltenüberschriften besitzt, geben Sie eine durch Komma getrennte Liste der Spaltenüberschriften ein. 
+ **Zulassen von Dateien mit einzelner Spalte** 

  Damit die Tabelle als CSV klassifiziert wird, muss das Tabellenschema mindestens zwei Spalten und zwei Datenzeilen aufweisen. Verwenden Sie diese Option, um die Verarbeitung von Dateien zu erlauben, die nur eine Spalte enthalten.
+ **Leerzeichen vor Identifizierung von Spaltenwerten abtrennen** 

  Diese Option gibt an, ob Werte vor dem Identifizieren des Typs der Spaltenwerte abgetrennt werden sollen.
+  **Benutzerdefinierter Datentyp** 

   (Optional) – Geben Sie benutzerdefinierte Datentypen in eine kommagetrennte Liste ein. Die unterstützten Datentypen sind: „BINARY“, „BOOLEAN“, „DATE“, „DECIMAL“, „DOUBLE“, „FLOAT“, „INT“, „LONG“, „SHORT“, „STRING“, „TIMESTAMP“. 
+  **CSV-Serde** 

   (Optional) — A SerDe für die Verarbeitung von CSV im Classifier, das im Datenkatalog angewendet wird. Wählen Sie `Open CSV SerDe`, `Lazy Simple SerDe`, oder `None` aus. Sie können den `None`-Wert angeben, wenn der Crawler die Erkennung durchführen soll. 

------

Weitere Informationen finden Sie unter [Schreiben von benutzerdefinierten Klassifizierern für verschiedene Datenformate](custom-classifier.md).

## Classifier anzeigen
<a name="view-classifiers-console"></a>

Zum Anzeigen einer Liste aller Classifier, die Sie erstellt haben, öffnen Sie die AWS Glue-Konsole über [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) und wählen Sie die Registerkarte **Classifiers** aus.

Die Liste zeigt die folgenden Eigenschaften für jeden Classifier an:
+ **Classifier** – Der Name des Classifiers. Beim Erstellen eines Classifiers müssen Sie einen Namen angeben.
+ **Klassifizierung** – Der Klassifizierungstyp der Tabellen, die von diesem Classifier abgeleitet werden.
+ **Letzte Aktualisierung** – Der letzte Zeitpunkt, zu dem dieser Classifier aktualisiert wurde.

## Classifier verwalten
<a name="manage-classifiers-console"></a>

In der Liste **Classifiers (Classifier)** in der AWS Glue-Konsole können Sie Classifier hinzufügen, bearbeiten und löschen. Um weitere Details über einen Classifier zu sehen, wählen Sie den Classifier-Namen in der Liste aus. Zu den Details gehören die Informationen, die Sie beim Erstellen des Classifiers definiert haben. 

# Konfigurieren eines Crawlers
<a name="define-crawler"></a>

Ein Crawler greift auf Ihren Datenspeicher zu, identifiziert Metadaten und erstellt Tabellendefinitionen im AWS Glue Data Catalog. Im Bereich **Crawler** in der AWS Glue Konsole sind alle Crawler aufgeführt, die Sie erstellen. In der Liste werden Status und Metriken aus der letzten Ausführung Ihres Crawlers angezeigt.

 Dieses Thema behandelt den step-by-step Prozess der Konfiguration eines Crawlers und behandelt wichtige Aspekte wie das Einrichten der Crawler-Parameter, das Definieren der zu durchforstenden Datenquellen, das Einrichten der Sicherheit und das Verwalten der gecrawlten Daten. 

**Topics**
+ [Schritt 1: Festlegen der Crawler-Eigenschaften](define-crawler-set-crawler-properties.md)
+ [Schritt 2: Auswahl von Datenquellen und Classifier](define-crawler-choose-data-sources.md)
+ [Schritt 3: Konfigurieren der Sicherheitseinstellungen](define-crawler-configure-security-settings.md)
+ [Schritt 4: Festlegen von Ausgabe und Zeitplanung](define-crawler-set-output-and-scheduling.md)
+ [Schritt 5: Überprüfen und Erstellen](define-crawler-review.md)

# Schritt 1: Festlegen der Crawler-Eigenschaften
<a name="define-crawler-set-crawler-properties"></a>

**Konfigurieren eines Crawlers**

1. Melden Sie sich bei an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\). Wählen Sie im Navigationsbereich **Crawlers** aus.

1.  Wählen Sie **Crawler erstellen** aus und befolgen Sie die Anweisungen im Assistenten zum **Hinzufügen eines Crawlers**. Der Assistent führt Sie durch die Schritte, die zum Erstellen eines Crawlers erforderlich sind. Wenn Sie benutzerdefinierte Klassifizierer hinzufügen möchten, um das Schema zu definieren, finden Sie weitere Informationen unter [Definieren und Verwalten von Klassifizierern](add-classifier.md). 

1.  Geben Sie einen Namen für Ihren Crawler und eine Beschreibung ein (optional). Sie können Ihren Crawler mit einem **Tag-Schlüssel** und einem optionalen **Tag-Wert** markieren. Nach der Erstellung sind Tag-Schlüssel schreibgeschützt. Verwenden Sie Tags für manche Ressourcen, damit sie leichter zu organisieren und identifizieren sind. Weitere Informationen finden Sie unter AWS Tags in AWS Glue.   
**Name**  
Der Name darf Buchstaben (A–Z), Zahlen (0–9), Bindestriche (-) oder Unterstriche (\$1) enthalten und bis zu 255 Zeichen lang sein.  
**Description**  
Die Beschreibung kann bis zu 2048 Zeichen lang sein.  
**Tags (Markierungen)**  
Verwenden Sie Tags zum Organisieren und Identifizieren Ihrer Ressourcen. Weitere Informationen finden Sie hier:   
   + [AWS Schlagworte in AWS Glue](monitor-tags.md)

# Schritt 2: Auswahl von Datenquellen und Classifier
<a name="define-crawler-choose-data-sources"></a>

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

Weitere Informationen zu unterstützten Datenquellen finden Sie unter [Unterstützte Datenquellen für Crawling](crawler-data-stores.md).

**Konfiguration der Datenquelle**  
Wählen Sie die entsprechende Option für **Sind Ihre Daten bereits AWS Glue-Tabellen zugeordnet?**, entweder „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 Arten (Amazon S3, JDBC etc.) durchsuchen.

  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 Ihrem AWS Glue Data Catalog aus. 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](tables-described.md#update-manual-tables).

  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-Include-Pfad](crawler-grouping-policy.md).
  + 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 der AWS Glue API.   
 Legen Sie mit Athena den Speicherort auf Ihren Amazon-S3-Ordner und den Tabellentyp auf „DELTA“ fest.   

```
CREATE EXTERNAL TABLE database_name.table_name
LOCATION 's3://bucket/folder/'
TBLPROPERTIES ('table_type' = 'DELTA')
```
 Geben Sie mithilfe der AWS Glue API den Tabellentyp in der Tabelle mit den Tabellenparametern an. Die Tabellenparameter müssen das folgende key/value Paar enthalten. Weitere Informationen zum Erstellen einer Tabelle finden Sie in der [Boto3-Dokumentation für create\$1table](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue/client/create_table.html).   

```
{
    "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://*bucket*/*prefix*/an*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:///*bucket*an. *prefix*  
Bei Iceberg- und Hudi-Datenspeichern befindet sich der Iceberg/Hudi Ordner möglicherweise in einem untergeordneten Ordner des Stammordners. Der Crawler durchsucht alle Ordner unterhalb eines Pfades nach einem Hudi-Ordner.  
Für einen JDBC-Datenspeicher  
Geben Sie je nach *<database>* Datenbankprodukt *<database>**<schema>*/*<table>*oder/*<table>*ein. Oracle Database und MySQL unterstützen kein Schema im Pfad. Sie können das Prozentzeichen (%) durch *<schema>* oder ersetzen*<table>*. Geben Sie beispielsweise für eine Oracle-Datenbank mit einer Systemkennung (SID) von `orcl` `orcl/%` ein, um alle Tabellen zu importieren, auf die der in der Verbindung benannte Benutzer Zugriff hat.  
Bitte beachten Sie die Groß- und Kleinschreibung.
 Wenn Sie sich dafür entscheiden, Ihre eigenen JDBC-Treiberversionen einzubinden, verbrauchen AWS Glue-Crawler Ressourcen in AWS Glue-Aufträgen und Amazon-S3-Buckets, um sicherzustellen, dass Ihre bereitgestellten Treiber in Ihrer Umgebung ausgeführt werden. Der zusätzliche Ressourcenverbrauch wird in Ihrem Konto angezeigt. Treiber sind auf die unter [Hinzufügen einer AWS Glue-Verbindung](https://docs.aws.amazon.com/glue/latest/dg/console-connections.html) beschriebenen Eigenschaften beschränkt.   
Für einen MongoDB-, MongoDB-Atlas- oder Amazon-DocumentDB-Datenspeicher  
Für MongoDB, MongoDB Atlas und Amazon DocumentDB (mit MongoDB-Kompatibilität) ist die Syntax `database/collection`.
Bei JDBC-Datenspeichern lautet die Syntax entweder `database-name/schema-name/table-name` oder `database-name/table-name`. Die Syntax hängt davon ab, ob die Datenbank-Engine Schemas innerhalb einer Datenbank unterstützt. Bei Datenbank-Engines wie MySQL oder Oracle geben Sie beispielsweise keinen `schema-name` im Include-Pfad 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 Exclude-Pfad ein.   
Ein Crawler stellt über eine AWS Glue-Verbindung, die eine JDBC URI-Verbindungszeichenfolge enthält, eine Verbindung zu einem JDBC-Datenspeicher her. Der Crawler hat nur über den JDBC-Benutzernamen und das dazugehörige Passwort in der AWS Glue-Verbindung Zugriff auf Objekte in der Datenbank-Engine. *Der Crawler kann nur Tabellen erstellen, auf die er über die JDBC-Verbindung zugreifen kann.* Nachdem der Crawler auf die Datenbank-Engine mit dem JDBC-URI zugegriffen hat, wird der Include-Pfad verwendet, um festzulegen, welche Tabellen der Datenbank-Engine im Data Catalog erstellt werden. Wenn Sie beispielsweise bei MySQL einen Include-Pfad von `MyDatabase/%` angeben, werden alle Tabellen in `MyDatabase` im Data Catalog angelegt. 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 Erweiterungen`create_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 Exclude-Muster.       
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/define-crawler-choose-data-sources.html)
AWS Glue interpretiert `glob`-Exclude-Muster 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 `a``b`, `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.

**Example 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:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/define-crawler-choose-data-sources.html)

**Example 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 "\$1\$1" als Suffix des Tagesnummernmusters verwendet wird und Ordnergrenzen bis zu Ordnern auf unterer Ebene überschreitet. Bei Verwendung von "\$1" 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.

**Example JDBC-Exclude-Muster**  
Angenommen, Sie führen ein Crawling für eine JDBC-Datenbank mit der folgenden Schemastruktur durch:  

```
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:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/define-crawler-choose-data-sources.html)

**Zusätzliche Crawler-Quellparameter**  
Jeder Quelltyp benötigt einen anderen Satz zusätzlicher Parameter.

**Connection (Verbindung)**  
Wählen Sie eine AWS Glue-Verbindung aus oder fügen Sie sie hinzu. Weitere Informationen zu Verbindungen finden Sie unter [Herstellen einer Verbindung zu Daten](glue-connections.md).

**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.

**Klassenname des JDBC-Treibers – 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
+ MySQL: 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
+ SQL-Server: com.microsoft.sqlserver.jdbc. SQLServerTreiber

**S3-Pfad des JDBC-Treibers – 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 verwendet wird, damit der Crawler eine Verbindung zur Datenquelle herstellt.

**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. Wenn nichts angegeben wird, beträgt der Standardwert 0,5 bei bereitgestellte Tabellen und 1/4 der maximal konfigurierten Kapazität bei On-Demand-Tabellen. Beachten Sie, dass für AWS Glue Crawler nur der Modus „Bereitgestellte Kapazität“ verwendet werden sollte.  
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 (für Amazon-S3-, Delta-, Iceberg-, Hudi- und Katalog-Zieldatenspeicher)**  
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](glue-connections.md).

**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.  
+ Alle Unterordner crawlen: Crawlen Sie alle Ordner bei jedem weiteren Crawl erneut.
+ Nur neue Unterordner crawlen: Nur Amazon-S3-Ordner, die seit dem letzten Crawling hinzugefügt wurden, werden gecrawlt. Wenn die Schemas kompatibel sind, werden den vorhandenen Tabellen neue Partitionen hinzugefügt. Weitere Informationen finden Sie unter [Planen inkrementeller Crawls zum Hinzufügen neuer Partitionen](incremental-crawls.md).
+ Crawlen basierend auf Ereignissen: Verlassen Sie sich auf Amazon-S3-Ereignisse, um zu steuern, welche Ordner gecrawlt werden sollen. Weitere Informationen finden Sie unter [Beschleunigung von Crawls mithilfe von Amazon S3-Ereignisbenachrichtigungen](crawler-s3-event-notifications.md).

**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 [Definieren und Verwalten von Klassifizierern](add-classifier.md).

# Schritt 3: Konfigurieren der Sicherheitseinstellungen
<a name="define-crawler-configure-security-settings"></a>

**IAM role (IAM-Rolle)**  
Der Crawler übernimmt diese Rolle. Sie muss über ähnliche Berechtigungen wie die AWS verwaltete Richtlinie verfügen`AWSGlueServiceRole`. Für Amazon-S3- und DynamoDB-Quellen muss er auch über Berechtigungen für den Zugriff auf den Datenspeicher verfügen. Wenn der Crawler mit AWS Key Management Service (AWS KMS) verschlüsselte Amazon S3 S3-Daten liest, muss die Rolle über Entschlüsselungsberechtigungen für den AWS KMS Schlüssel verfügen.   
Für einen Amazon-S3-Datenspeicher wären zusätzliche Berechtigungen, die der Rolle zugeordnet sind, ähnlich wie die folgenden:     
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::bucket/object*"
      ]
    }
  ]
}
```
Für einen Amazon-DynamoDB-Datenspeicher wären zusätzliche Berechtigungen, die der Rolle zugeordnet sind, ähnlich wie die folgenden:     
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:DescribeTable",
        "dynamodb:Scan"
      ],
      "Resource": [
        "arn:aws:dynamodb:*:111122223333:table/table-name*"
      ]
    }
  ]
}
```
 Um Ihren eigenen JDBC-Treiber hinzuzufügen, müssen zusätzliche Berechtigungen hinzugefügt werden.   
+  Gewähren Sie Berechtigungen für die folgenden Auftragsaktionen: `CreateJob`, `DeleteJob`, `GetJob`, `GetJobRun`, `StartJobRun`. 
+  Gewähren Sie Berechtigungen für alle Amazon-S3-Aktionen: `s3:DeleteObjects`, `s3:GetObject`, `s3:ListBucket`, `s3:PutObject`. 
**Anmerkung**  
Der `s3:ListBucket` ist nicht erforderlich, wenn die Amazon-S3-Bucket-Richtlinie deaktiviert ist.
+  Gewähren Sie Service Principal Zugriff auf bucket/folder in der Amazon S3 S3-Richtlinie. 
 Beispiel einer Amazon-S3-Richtlinie:     
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/driver-parent-folder/driver.jar",
                "arn:aws:s3:::amzn-s3-demo-bucket"
            ]
        }
    ]
}
```
 AWS Glue erstellt die folgenden Ordner (`_crawler` und `_glue_job_crawler` auf derselben Ebene wie der JDBC-Treiber in Ihrem Amazon-S3-Bucket. Wenn der Treiberpfad beispielsweise `<s3-path/driver_folder/driver.jar>` lautet, werden die folgenden Ordner erstellt, sofern sie noch nicht vorhanden sind:   
+  <s3-path/driver\$1folder/\$1crawler> 
+  <s3-path/driver\$1folder/\$1glue\$1job\$1crawler> 
 Optional können Sie einem Crawler eine Sicherheitskonfiguration hinzufügen, um Verschlüsselungsoptionen im Ruhezustand festzulegen.  
Weitere Informationen erhalten Sie unter [Schritt 2: Erstellen einer IAM-Rolle für AWS Glue](create-an-iam-role.md) und [Identitäts- und Zugriffsmanagement für AWS Glue](security-iam.md).

**Lake-Formation-Konfiguration – optional**  
Erlauben Sie dem Crawler, Lake-Formation-Anmeldeinformationen für das Crawling der Datenquelle zu verwenden.  
Wenn Sie **Use Lake Formation credentials for crawling S3 data source** (Lake-Formation-Anmeldeinformationen für das Crawling der S3-Datenquelle verwenden) aktivieren, kann der Crawler Lake-Formation-Anmeldeinformationen für das Crawling der Datenquelle verwenden. Wenn die Datenquelle zu einem anderen Konto gehört, müssen Sie die registrierte Konto-ID angeben. Andernfalls crawlt der Crawler nur die Datenquellen, die dem Konto zugeordnet sind. Gilt nur für Amazon-S3- und Data-Catalog-Datenquellen.

**Sicherheitskonfiguration – optional**  
Die Einstellungen enthalten Sicherheitskonfigurationen. Weitere Informationen finden Sie hier:   
+ [Verschlüsselung von Daten, die geschrieben wurden von AWS Glue](encryption-security-configuration.md)
Sobald eine Sicherheitskonfiguration für einen Crawler festgelegt ist, können Sie sie ändern, aber nicht entfernen. Um die Sicherheitsstufe eines Crawlers zu verringern, legen Sie das Sicherheitsfeature in Ihrer Konfiguration explizit auf `DISABLED` fest oder erstellen Sie einen neuen Crawler.

# Schritt 4: Festlegen von Ausgabe und Zeitplanung
<a name="define-crawler-set-output-and-scheduling"></a>

**Konfiguration der Ausgabe**  
Zu den Optionen gehören, wie der Crawler u. a. erkannte Schemaänderungen und gelöschte Objekte im Datenspeicher verarbeiten sollte. Weitere Informationen finden Sie unter [Anpassen des Crawlerverhaltens](crawler-configuration.md).

**Crawler-Zeitplan**  
Sie können einen Crawler bei Bedarf ausführen oder einen zeitbasierten Zeitplan für Ihre Crawler und Aufträge in AWS Glue definieren. Die Definition dieser Zeitpläne verwendet die Unix-ähnliche Cron-Syntax. Weitere Informationen finden Sie unter [Planen eines Crawlers](schedule-crawler.md).

# Schritt 5: Überprüfen und Erstellen
<a name="define-crawler-review"></a>

Überprüfen Sie die von Ihnen konfigurierten Crawler-Einstellungen und erstellen Sie den Crawler.

# Planen eines Crawlers
<a name="schedule-crawler"></a>

Sie können einen AWS Glue-Crawler auf Anforderung oder nach regelmäßigem Zeitplan ausführen. Wenn Sie einen Crawler auf der Grundlage eines Zeitplans einrichten, können Sie bestimmte Einschränkungen festlegen, wie z. B. die Häufigkeit der Crawler-Ausführungen, an welchen Tagen der Woche er ausgeführt wird und zu welchem Zeitpunkt. Sie können diese benutzerdefinierten Zeitpläne im *cron*-Format erstellen. Weitere Informationen finden Sie unter [Cron](http://en.wikipedia.org/wiki/Cron) in Wikipedia.

Wenn Sie einen Crawler-Zeitplan erstellen, sollten Sie die Features und Einschränkungen von Cron berücksichtigen. Wenn Sie z. B. Ihren Crawler jeden Monat am 31. ausführen möchten, denken Sie daran, dass einige Monate keine 31 Tage haben.

**Topics**
+ [Erstellen eines Crawler-Zeitplans](create-crawler-schedule.md)
+ [Erstellen Sie einen Zeitplan für einen vorhandenen Crawler.](Update-crawler-schedule.md)

# Erstellen eines Crawler-Zeitplans
<a name="create-crawler-schedule"></a>

Sie können mit der AWS Glue Konsole oder AWS CLI einen Zeitplan für den Crawler erstellen.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\). 

1. Wählen Sie im Navigationsbereich **Crawlers** aus.

1. Führen Sie die Schritte 1 bis 3 im Abschnitt [Konfigurieren eines Crawlers](define-crawler.md) aus.

1. Wählen Sie [Schritt 4: Festlegen von Ausgabe und Zeitplanung](define-crawler-set-output-and-scheduling.md) unter einen **Crawler-Zeitplan** aus, um die Häufigkeit der Ausführung festzulegen. Sie können den Crawler so einstellen, dass er stündlich, täglich, wöchentlich oder monatlich ausgeführt wird, oder einen benutzerdefinierten Zeitplan mit Cron-Ausdrücken festlegen.

   Ein Cron-Ausdruck ist eine Zeichenfolge, die ein Zeitplanmuster darstellt und aus 6 durch Leerzeichen getrennten Feldern besteht: \$1 \$1 \$1 \$1 \$1 <Minute> <Stunde> <Monatstag> <Monat> <Wochentag> <Jahr> 

   Um beispielsweise eine Aufgabe jeden Tag um Mitternacht auszuführen, lautet der Cron-Ausdruck: 0 0 \$1 \$1 ? \$1

   Weitere Informationen finden Sie unter [Cron-Ausdrücke](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions).

1. Überprüfen Sie die von Ihnen konfigurierten Crawler-Einstellungen und erstellen Sie den Crawler so, dass er nach einem Zeitplan ausgeführt wird.

------
#### [ AWS CLI ]

```
aws glue create-crawler 
 --name myCrawler \
 --role AWSGlueServiceRole-myCrawler  \
 --targets '{"S3Targets":[{Path="s3://amzn-s3-demo-bucket/"}]}' \
 --schedule cron(15 12 * * ? *)
```

------

Weitere Informationen über die Verwendung von Cron zum Planen von Aufträgen und Crawlern finden Sie unter [Zeitpläne für Aufträge und Crawler](monitor-data-warehouse-schedule.md). 

# Erstellen Sie einen Zeitplan für einen vorhandenen Crawler.
<a name="Update-crawler-schedule"></a>

Befolgen Sie diese Schritte, um einen wiederkehrenden Zeitplan für einen vorhandenen Crawler einzurichten.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\). 

1. Wählen Sie im Navigationsbereich **Crawlers** aus.

1. Wählen Sie einen Crawler, für den Sie einen Zeitplan erstellen möchten, aus der verfügbaren Liste aus.

1. Wählen Sie im Menü **Aktionen** die Option **Bearbeiten** aus.

1. Scrollen Sie nach unten zu **Schritt 4: Festlegen von Ausgabe und Zeitplanung** und wählen Sie **Bearbeiten** aus. 

1.  Aktualisieren Sie Ihren Crawler-Zeitplan unter **Crawler-Zeitplan**. 

1. Wählen Sie **Aktualisieren** aus.

------
#### [ AWS CLI ]

Verwenden Sie den folgenden CLI-Befehl, um eine vorhandene Crawler-Konfiguration zu aktualisieren:

```
aws glue update-crawler-schedule 
   --crawler-name myCrawler
   --schedule cron(15 12 * * ? *)
```

------

# Anzeigen von Crawler-Ergebnissen und -Details
<a name="console-crawlers-details"></a>

 Nachdem der Crawler erfolgreich ausgeführt wurde, erstellt er Tabellendefinitionen im Data Catalog. Wählen Sie im Navigationsbereich die Option **Tables (Tabellen)** aus, um die Tabellen anzuzeigen, die von Ihrem Crawler in der von Ihnen angegebenen Datenbank erstellt wurden. 

 Sie können Informationen zum Crawler selbst wie folgt anzeigen:
+ Auf der Seite **Crawler** auf der AWS Glue Konsole werden die folgenden Eigenschaften für einen Crawler angezeigt:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/console-crawlers-details.html)
+  Um den Verlauf für einen Crawler anzuzeigen, wählen Sie **Crawler** im Navigationsbereich, um die von Ihnen erstellten Crawler anzuzeigen. Wählen Sie einen Crawler aus der Liste der verfügbaren Crawler aus. Sie können die Crawler-Eigenschaften und den Crawler-Verlauf auf der Registerkarte **Crawler runs** (Crawler-Ausführungen) einsehen. 

   Auf der Registerkarte „Crawler runs“ (Crawler-Ausführungen) werden Informationen zu jedem Zeitpunkt angezeigt, zu dem der Crawler ausgeführt wurde, einschließlich **Startzeit (UTC),** **Endzeit (UTC)**,**Dauer**, **Status**, **DPU-Stunden** und **Tabellenänderungen**. 

  Die Registerkarte der Crawler-Ausführungen gibt nur die Crawls zurück, die seit dem Startdatum des Crawler-Verlaufs-Features stattgefunden haben, und behält Crawls nur bis zu 12 Monate bei. Ältere Crawls werden nicht zurückgegeben.
+ Um zusätzliche Informationen anzuzeigen, wählen Sie eine Registerkarte auf der Seite mit den Crawler-Details aus. Auf jeder Registerkarte werden Informationen zum Crawler angezeigt. 
  +  **Plan**: Alle für den Crawler erstellten Zeitpläne werden hier angezeigt. 
  +  **Datenquellen**: Alle vom Crawler gescannten Datenquellen werden hier angezeigt. 
  +  **Classifier**: Alle dem Crawler zugewiesenen Classifier werden hier angezeigt. 
  +  **Tags**: Alle Tags, die erstellt und einer AWS Ressource zugewiesen wurden, werden hier angezeigt. 

# Parameter, die vom Crawler in Data-Catalog-Tabellen festgelegt wurden
<a name="table-properties-crawler"></a>

 Diese Tabelleneigenschaften werden von AWS Glue Crawlern festgelegt. Wir erwarten, dass Benutzer die `classification`- und `compressionType`-Eigenschaften nutzen. Andere Eigenschaften, einschließlich Schätzungen der Tabellengröße, werden für interne Berechnungen verwendet, und wir übernehmen keine Garantie für deren Richtigkeit oder Anwendbarkeit auf Kundenanwendungsfälle. Das Ändern dieser Parameter kann das Verhalten des Crawlers verändern. Wir unterstützen diesen Workflow nicht. 


| Eigenschaftsschlüssel | Eigenschaftenwert | 
| --- | --- | 
| UPDATED\$1BY\$1CRAWLER | Name des Crawlers, der die Aktualisierung durchführt. | 
| connectionName | Der Name der Verbindung im Data Catalog für den Crawler, der zum Herstellen einer Verbindung mit dem Datenspeicher verwendet wird. | 
| recordCount | Schätzen Sie die Anzahl der Datensätze in der Tabelle, basierend auf Dateigrößen und Kopfzeilen. | 
| skip.header.line.count | Zeilen wurden übersprungen, um die Kopfzeile zu überspringen. Wird auf Tabellen gesetzt, die als CSV klassifiziert sind. | 
| CrawlerSchemaSerializerVersion | Zur internen Verwendung | 
| classification | Format der Daten, abgeleitet vom Crawler. Weitere Informationen zu den von AWS Glue Crawlern unterstützten Datenformaten finden Sie unter. [Integrierte Klassifizierer](add-classifier.md#classifier-built-in) | 
| CrawlerSchemaDeserializerVersion | Zur internen Verwendung | 
| sizeKey | Kombinierte Größe der Dateien in der gecrawlten Tabelle. | 
| averageRecordSize | Durchschnittliche Zeilengröße in der Tabelle, in Bytes. | 
| compressionType | Art der Komprimierung, die für Daten in der Tabelle verwendet wird. Weitere Informationen zu den von AWS Glue Crawlern unterstützten Komprimierungstypen finden Sie unter. [Integrierte Klassifizierer](add-classifier.md#classifier-built-in) | 
| typeOfData | `file`, `table` oder `view`. | 
| objectCount | Anzahl der Objekte unter dem Amazon-S3-Pfad für die Tabelle. | 

 Diese zusätzlichen Tabelleneigenschaften werden von AWS Glue Crawlern für Snowflake-Datenspeicher festgelegt. 


| Eigenschaftsschlüssel | Eigenschaftenwert | 
| --- | --- | 
| aws:RawTableLastAltered | Zeichnet den letzten geänderten Zeitstempel der Snowflake-Tabelle auf. | 
| ViewOriginalText | Zeigt die SQL-Anweisung an. | 
| ViewExpandedText | Zeigt eine im Base64-Format codierte SQL-Anweisung an. | 
| ExternalTable:S3Location | Amazon-S3-Speicherort der externen Snowflake-Tabelle. | 
| ExternalTable:FileFormat | Amazon S3-Dateiformat der externen Snowflake-Tabelle. | 

 Diese zusätzlichen Tabelleneigenschaften werden von AWS Glue Crawlern für Datenspeicher vom Typ JDBC wie Amazon Redshift, Microsoft SQL Server, MySQL, PostgreSQL und Oracle festgelegt. 


| Eigenschaftsschlüssel | Eigenschaftenwert | 
| --- | --- | 
| aws:RawType | Wenn ein Crawler die Daten im Data Catalog speichert, übersetzt er die Datentypen in Hive-kompatible Typen, was häufig dazu führt, dass die Informationen zum nativen Datentyp verloren gehen. Der Crawler gibt den `aws:RawType`-Parameter aus, um den Datentyp auf nativer Ebene bereitzustellen. | 
| aws:RawColumnComment | Wenn einer Spalte in der Datenbank ein Kommentar zugeordnet ist, gibt der Crawler den entsprechenden Kommentar in der Katalogtabelle aus. Die Kommentarzeichenfolge wird auf 255 Byte gekürzt. Kommentare werden für Microsoft SQL Server nicht unterstützt.  | 
| aws:RawTableComment | Wenn einer Tabelle in der Datenbank ein Kommentar zugeordnet ist, gibt der Crawler den entsprechenden Kommentar in der Katalogtabelle aus. Die Kommentarzeichenfolge wird auf 255 Byte gekürzt. Kommentare werden für Microsoft SQL Server nicht unterstützt. | 

# Anpassen des Crawlerverhaltens
<a name="crawler-configuration"></a>

Wenn Sie einen konfigurieren AWS-Glue-Crawler, haben Sie mehrere Möglichkeiten, das Verhalten Ihres Crawlers zu definieren.
+ **Inkrementelle Crawls** – Sie können einen Crawler so konfigurieren, dass er inkrementelle Crawls ausführt, um nur neue Partitionen zum Tabellenschema hinzuzufügen. 
+ **Partitionsindizes** – Ein Crawler erstellt standardmäßig Partitionsindizes für Amazon-S3- und Delta-Lake-Ziele, um eine effiziente Suche nach bestimmten Partitionen zu ermöglichen.
+ **Beschleunigen der Crawling-Zeit durch die Verwendung von Amazon-S3-Ereignissen** – Sie können einen Crawler so konfigurieren, dass er Amazon-S3-Ereignisse verwendet, um die Änderungen zwischen zwei Crawls zu identifizieren, indem er alle Dateien aus dem Unterordner auflistet, der das Ereignis ausgelöst hat, anstatt das gesamte Amazon-S3- oder Datenkatalogziel aufzulisten.
+ **Behandlung von Schemaänderungen** – Sie können verhindern, dass Crawler Änderungen am vorhandenen Schema vornehmen. Sie können die AWS-Managementkonsole oder die AWS Glue API verwenden, um zu konfigurieren, wie Ihr Crawler bestimmte Arten von Änderungen verarbeitet. 
+ **Ein einziges Schema für mehrere Amazon-S3-Pfade** – Sie können einen Crawler so konfigurieren, dass er für jeden S3-Pfad ein einziges Schema erstellt, wenn die Daten kompatibel sind.
+ **Tabellenposition und Partitionierungsebenen** – Die Crawler-Option auf Tabellenebene bietet Ihnen die Flexibilität, dem Crawler mitzuteilen, wo sich die Tabellen befinden und wie Partitionen erstellt werden sollen. 
+ **Tabellenschwellenwert** – Sie können die maximale Anzahl von Tabellen festlegen, die der Crawler erstellen darf, indem Sie eine Tabellenschwelle angeben.
+ **AWS Lake Formation Anmeldeinformationen** — Sie können einen Crawler so konfigurieren, dass er Lake Formation Formation-Anmeldeinformationen verwendet, um auf einen Amazon S3 S3-Datenspeicher oder eine Datenkatalogtabelle mit einem zugrunde liegenden Amazon S3 S3-Speicherort innerhalb desselben AWS-Konto oder eines anderen AWS-Konto zuzugreifen. 

 Weitere Informationen zur Verwendung der AWS Glue-Konsole zum Hinzufügen eines Crawlers finden Sie unter [Konfigurieren eines Crawlers](define-crawler.md). 

**Topics**
+ [Planen inkrementeller Crawls zum Hinzufügen neuer Partitionen](incremental-crawls.md)
+ [Generieren von Partitionsindizes](crawler-configure-partition-indexes.md)
+ [Verhindern, dass ein Crawler ein vorhandenes Schema ändert](crawler-schema-changes-prevent.md)
+ [Erstellen eines einzelnen Schemas für jeden Amazon-S3-Include-Pfad](crawler-grouping-policy.md)
+ [Festlegen von Tabellenspeicherort und Partitionierungsebene](crawler-table-level.md)
+ [Angeben der maximalen Anzahl von Tabellen, die der Crawler erstellen darf](crawler-maximum-number-of-tables.md)
+ [Konfigurieren eines Crawlers für die Verwendung von Lake-Formation-Anmeldeinformationen](crawler-lf-integ.md)
+ [Beschleunigung von Crawls mithilfe von Amazon S3-Ereignisbenachrichtigungen](crawler-s3-event-notifications.md)

# Planen inkrementeller Crawls zum Hinzufügen neuer Partitionen
<a name="incremental-crawls"></a>

Sie können die AWS-Glue-Crawler Ausführung inkrementeller Crawls so konfigurieren, dass dem Tabellenschema nur neue Partitionen hinzugefügt werden. Wenn der Crawler zum ersten Mal ausgeführt wird, führt er einen vollständigen Crawl durch, um die gesamte Datenquelle zu verarbeiten und das vollständige Schema sowie alle vorhandenen Partitionen in AWS Glue Data Catalog aufzuzeichnen.

Nach dem ersten vollständigen Crawl werden nur noch inkrementelle Crawls durchgeführt, bei denen der Crawler nur die neuen Partitionen identifiziert und hinzufügt, die seit dem letzten Crawl hinzugefügt wurden. Dieser Ansatz führt zu niedrigeren Crawl-Zeiten, da der Crawler nicht mehr bei jeder Ausführung die gesamte Datenquelle verarbeiten muss, sondern sich nur noch auf die neuen Partitionen konzentriert. 

**Anmerkung**  
Änderungen oder Löschungen vorhandener Partitionen werden von inkrementellen Crawls nicht erkannt. Diese Konfiguration eignet sich am besten für Datenquellen mit einem stabilen Schema. Wenn eine einmalige größere Schemaänderung auftritt, empfiehlt es sich, den Crawler vorübergehend so einzustellen, dass er einen vollständigen Crawl durchführt, um das neue Schema genau zu erfassen, und dann wieder in den inkrementellen Crawling-Modus zurückzukehren. 

Das folgende Diagramm zeigt, dass der Crawler bei aktivierter Einstellung für inkrementelles Crawling nur den neu hinzugefügten Ordner „month=March“ erkennt und dem Katalog hinzufügt.

![\[Das folgende Diagramm zeigt, dass Dateien für den Monat März hinzugefügt wurden.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawlers-s3-folders-new.png)


Gehen Sie wie folgt vor, um Ihren Crawler so zu aktualisieren, dass er inkrementelle Crawls durchführt:

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)

1. Wählen Sie im **Datenkatalog** die Option **Crawler** aus.

1. Wählen Sie einen Crawler aus, den Sie für das inkrementelle Crawling einrichten möchten.

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie **Schritt 2 aus. Wählen Sie Datenquellen und Klassifikatoren** aus.

1. Wählen Sie die Datenquelle aus, für die Sie inkrementelle Crawls durchführen möchten. 

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie unter **Nachfolgende Crawl-Ausführungen** die Option **Nur neue Unterordner crawlen** aus.

1. Wählen Sie **Aktualisieren** aus.

Informationen zum Erstellen eines Zeitplans für einen Crawler finden Sie unter [Planen eines Crawlers](schedule-crawler.md).

------
#### [ AWS CLI ]

```
aws glue update-crawler \
 --name myCrawler \
 --recrawl-policy RecrawlBehavior=CRAWL_NEW_FOLDERS_ONLY \
 --schema-change-policy UpdateBehavior=LOG,DeleteBehavior=LOG
```

------

**Hinweise und Einschränkungen**  
Wenn diese Option aktiviert ist, können Sie die Amazon-S3-Zieldatenspeicher beim Bearbeiten des Crawlers nicht ändern. Diese Option wirkt sich auf bestimmte Crawler-Konfigurationseinstellungen aus. Wenn diese Option aktiviert ist, erzwingt sie das Aktualisierungs- und Löschverhalten des Crawlers für `LOG`. Dies bedeutet, dass:
+ Wenn Objekte entdeckt werden, bei denen Schemas nicht kompatibel sind, fügt der Crawler die Objekte nicht dem Datenkatalog hinzu und fügt dieses Detail als Protokoll in Logs hinzu. CloudWatch 
+ Gelöschte Objekte werden im Datenkatalog nicht aktualisiert.

# Generieren von Partitionsindizes
<a name="crawler-configure-partition-indexes"></a>

Der Datenkatalog unterstützt die Erstellung von Partitionsindizes, um eine effiziente Suche nach bestimmten Partitionen zu ermöglichen. Weitere Informationen finden Sie unter [Erstellen von Partitionsindizes](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html). Der AWS Glue Crawler erstellt standardmäßig Partitionsindizes für Amazon S3- und Delta Lake-Ziele.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)

1. Wählen Sie im **Datenkatalog** die Option **Crawler** aus.

1. Wenn Sie einen Crawler definieren, ist die Option zum **automatischen Erstellen von Partitionsindizes** standardmäßig unter **Erweiterte Optionen** auf der Seite **Festlegen der Ausgabe und Zeitplanung** aktiviert.

   Um diese Option zu deaktivieren, können Sie das Kontrollkästchen **Partitionsindizes automatisch erstellen** in der Konsole deaktivieren. 

1. Schließen Sie die Crawler-Konfiguration ab und wählen Sie **Crawler erstellen** aus.

------
#### [ AWS CLI ]

 Sie können diese Option auch deaktivieren, indem Sie die AWS CLI verwenden und den `CreatePartitionIndex ` im Parameter `configuration` festlegen. Der Standardwert ist "True".

```
aws glue update-crawler \
    --name myCrawler \
    --configuration '{"Version": 1.0, "CreatePartitionIndex": false }'
```

------

## Nutzungshinweise für Partitionsindizes
<a name="crawler-configure-partition-indexes-usage-notes"></a>
+ Vom Crawler erstellte Tabellen verfügen standardmäßig nicht über die Variable `partition_filtering.enabled`. Weitere Informationen finden Sie unter [AWS Glue -Partitionsindizierung und -filterung](https://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html#glue-best-practices-partition-index).
+ Das Erstellen von Partitionsindizes für verschlüsselte Partitionen wird nicht unterstützt.

# Verhindern, dass ein Crawler ein vorhandenes Schema ändert
<a name="crawler-schema-changes-prevent"></a>

 Sie können verhindern, dass AWS-Glue-Crawler s bei der Ausführung Schemaänderungen am Datenkatalog vornimmt. Standardmäßig aktualisieren Crawler das Schema im Data Catalog so, dass es der Datenquelle entspricht, die gecrawlt wird. Manchmal möchten Sie jedoch möglicherweise verhindern, dass der Crawler das vorhandene Schema ändert, insbesondere wenn Sie die Daten transformiert oder bereinigt haben und nicht möchten, dass das ursprüngliche Schema die Änderungen überschreibt.

 Gehen Sie wie unten beschrieben vor, um Ihren Crawler so zu konfigurieren, dass er das bestehende Schema in einer Tabellendefinition nicht überschreibt. 

------
#### [  AWS-Managementkonsole  ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Wählen Sie im **Datenkatalog** die Option **Crawler** aus.

1. Wählen Sie einen Crawler in der Liste aus und wählen Sie **Bearbeiten** aus.

1. Wählen Sie **Schritt 4: Festlegen von Ausgabe und Zeitplanung** aus.

1. Wählen Sie unter **Erweiterte Optionen** die Option **Nur neue Spalten hinzufügen** oder **Änderung ignorieren und Tabelle im Data Catalog nicht aktualisieren** aus. 

1.  Sie können außerdem eine Crawler-Konfigurationsoption **Alle neuen und vorhandenen Partitionen mit Metadaten aus der Tabelle aktualisieren** festlegen. Dadurch wird festgelegt, dass Partitionsschemas von der Tabelle erben. 

1. Wählen Sie **Aktualisieren** aus.

------
#### [ AWS CLI ]

Das folgende Beispiel zeigt, wie ein Crawler so konfiguriert wird, dass er das bestehende Schema nicht ändert, sondern nur neue Spalten hinzufügt:

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
```

Das folgende Beispiel zeigt, wie ein Crawler so konfiguriert wird, dass er das bestehende Schema nicht ändert und keine neue Spalten hinzufügt:

```
aws glue update-crawler \
  --name myCrawler \
  --schema-change-policy UpdateBehavior=LOG \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }}}'
```

------
#### [ API ]

Wenn Sie nicht möchten, dass ein Tabellenschema geändert wird, wenn ein Crawler ausgeführt wird, legen Sie die Schemaänderungsrichtlinie auf `LOG` fest. 

Legen Sie folgende Parameter fest, wenn Sie den Crawler mit der API konfigurieren:
+ Legen Sie das `UpdateBehavior`-Feld in der `SchemaChangePolicy`-Struktur auf `LOG` fest.
+  Legen Sie das `Configuration`-Feld mit einer Zeichenfolgendarstellung des folgenden JSON-Objekts in der Crawler-API fest, beispielsweise: 

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

------

# Erstellen eines einzelnen Schemas für jeden Amazon-S3-Include-Pfad
<a name="crawler-grouping-policy"></a>

Standardmäßig gilt: Wenn ein Crawler Tabellen für in Amazon S3 gespeicherte Daten definiert, berücksichtigt er sowohl die Datenkompatibilität als auch die Schema-Ähnlichkeit. Zu den berücksichtigten Datenkompatibilitätsfaktoren gehört unter anderem, ob die Daten das gleiche Format haben (z. B. JSON), den gleichen Kompressionstyp (z. B. GZIP), die Struktur des Amazon-S3-Pfades und andere Datenattribute. Die Ähnlichkeit des Schemas ist ein Maß dafür, wie ähnlich die Schemas separater Amazon-S3-Objekte sind.

Um diese Option veranschaulichen, nehmen Sie an, Sie definieren einen Crawler mit dem Include-Pfad `s3://amzn-s3-demo-bucket/table1/`. Wenn der Crawler ausgeführt wird, findet er zwei JSON-Dateien mit den folgenden Eigenschaften:
+ **Datei 1** – `S3://amzn-s3-demo-bucket/table1/year=2017/data1.json`
+ *Dateiinhalt* – `{“A”: 1, “B”: 2}`
+ *Schema* – `A:int, B:int`
+ **Datei 2** – `S3://amzn-s3-demo-bucket/table1/year=2018/data2.json`
+ *Dateiinhalt* – `{“C”: 3, “D”: 4}`
+ *Schema* – `C: int, D: int`

Standardmäßig erstellt der Crawler zwei Tabellen namens `year_2017` und `year_2018`, da die Schemas nicht ausreichend ähnlich sind. Wenn jedoch die Option **Create a single schema for each S3 path (Erstellen eines einzelnen Schemas für jeden S3-Pfad)** ausgewählt ist, und wenn die Daten kompatibel sind, erstellt der Crawler eine Tabelle. Die Tabelle hat das Schema `A:int,B:int,C:int,D:int` und `partitionKey` `year:string`.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Wählen Sie unter dem **Datenkatalog** die Option **Crawler** aus.

1. Wenn Sie einen neuen Crawler konfigurieren, wählen Sie unter **Ausgabe und Planung** unter den erweiterten Optionen die Option **Ein einzelnes Schema für jeden S3-Pfad erstellen** aus. 

------
#### [ AWS CLI ]

Sie können einen Crawler konfigurieren, um `CombineCompatibleSchemas` in einer gemeinsamen Tabellendefinition durchzuführen, sofern dies möglich ist. Mit dieser Option berücksichtigt der Crawler weiterhin die Datenkompatibilität, ignoriert aber die Ähnlichkeit der spezifischen Schemata bei der Auswertung von Amazon-S3-Objekten im angegebenen Include-Pfad.

Wenn Sie den Crawler mit dem konfigurieren AWS CLI, legen Sie die folgende Konfigurationsoption fest:

```
aws glue update-crawler \
   --name myCrawler \
   --configuration '{"Version": 1.0, "Grouping": {"TableGroupingPolicy": "CombineCompatibleSchemas" }}'
```

------
#### [ API ]

Verwenden Sie die folgende Konfigurationsoption, wenn Sie den Crawler mit der API konfigurieren:

 Legen Sie das `Configuration`-Feld mit einer Zeichenfolgendarstellung des folgenden JSON-Objekts in der Crawler-API fest, beispielsweise: 

```
{
   "Version": 1.0,
   "Grouping": {
      "TableGroupingPolicy": "CombineCompatibleSchemas" }
}
```

------

# Festlegen von Tabellenspeicherort und Partitionierungsebene
<a name="crawler-table-level"></a>

Standardmäßig gilt: Wenn ein Crawler für in Amazon S3 gespeicherte Daten Tabellen definiert, versucht der Crawler, Schemata zusammenzuführen und Tabellen auf oberster Ebene zu erstellen (`year=2019`). In einigen Fällen kann es vorkommen, dass der Crawler eine Tabelle für den Ordner `month=Jan` erstellen soll aber stattdessen eine Partition erstellt, da ein Ordner der gleichen Ebene (`month=Mar`) in dieselbe Tabelle gespeichert wurde.

Die Crawler-Option auf Tabellenebene bietet Ihnen die Flexibilität, dem Crawler mitzuteilen, wo sich die Tabellen befinden und wie Partitionen erstellt werden sollen. Wenn Sie eine **Tabellen-Ebene** angeben, wird die Tabelle auf dieser absoluten Ebene aus dem Amazon S3 Bucket erstellt.

![\[Crawler-Gruppierung mit Tabellenebene, die als Ebene 2 angegeben ist.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawler-table-level1.jpg)


 Wenn Sie den Crawler auf der Konsole konfigurieren, können Sie einen Wert für die Crawler-Option **Tabellen-Ebene** angeben. Der Wert muss eine positive Ganzzahl sein, die die Tabellenposition (die absolute Ebene im Datensatz) angibt. Die Ebene für den Ordner der obersten Ebene ist 1. Beispiel: Wenn die Ebene auf 3 festgelegt wurde, wird die Tabelle für den Pfad `mydataset/year/month/day/hour` am Speicherort `mydataset/year/month` erstellt. 

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Wählen Sie unter dem **Datenkatalog** die Option **Crawler** aus.

1. Wenn Sie einen Crawler konfigurieren, wählen Sie unter **Ausgabe und Planung** unter **Erweiterte Optionen** die Option **Tabellenebene** aus.

![\[Geben Sie eine Tabellenebene in der Crawler-Konfiguration an.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawler-configuration-console.png)


------
#### [ AWS CLI ]

Wenn Sie den Crawler mit dem konfigurieren AWS CLI, legen Sie den `configuration` Parameter wie im Beispielcode fest: 

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "Grouping": { "TableLevelConfiguration": 2 }}'
```

------
#### [ API ]

Legen Sie das `Configuration`-Feld mit einer Zeichenfolgendarstellung des folgenden JSON-Objekts fest, wenn Sie den Crawler mit der API konfigurieren, beispielsweise: 

```
configuration = jsonencode(
{
   "Version": 1.0,
   "Grouping": {
            TableLevelConfiguration = 2  
        }
})
```

------
#### [ CloudFormation ]

In diesem Beispiel legen Sie die Option **auf Tabellenebene** fest, die in der Konsole in Ihrer CloudFormation Vorlage verfügbar ist:

```
"Configuration": "{
    \"Version\":1.0,
    \"Grouping\":{\"TableLevelConfiguration\":2}
}"
```

------

# Angeben der maximalen Anzahl von Tabellen, die der Crawler erstellen darf
<a name="crawler-maximum-number-of-tables"></a>

Sie können optional die maximale Anzahl von Tabellen angeben, die der Crawler erstellen darf, indem Sie a `TableThreshold` über die AWS Glue Konsole oder AWS CLI angeben. Wenn die vom Crawler während des Crawlings erkannten Tabellen größer als dieser Eingabewert sind, schlägt das Crawling fehl und es werden keine Daten in den Data Catalog geschrieben.

Dieser Parameter ist nützlich, wenn die Tabellen, die vom Crawler erkannt und erstellt werden, viel größer sind als erwartet. Dafür kann es mehrere Gründe geben, wie zum Beispiel:
+ Wenn Sie einen AWS Glue Job zum Auffüllen Ihrer Amazon S3 S3-Speicherorte verwenden, können Sie am Ende leere Dateien auf derselben Ebene wie ein Ordner haben. Wenn Sie in solchen Fällen einen Crawler an diesem Amazon-S3-Speicherort ausführen, erstellt der Crawler aufgrund von Dateien und Ordnern, die auf derselben Ebene vorhanden sind, mehrere Tabellen.
+ Wenn Sie `"TableGroupingPolicy": "CombineCompatibleSchemas"` nicht konfigurieren, erhalten Sie möglicherweise mehr Tabellen als erwartet. 

Sie geben den `TableThreshold` als Ganzzahl größer 0 an. Dieser Wert wird pro Crawler konfiguriert. Das heißt, für jedes Crawling wird dieser Wert berücksichtigt. Beispiel: Für einen Crawler wurde der `TableThreshold`-Wert auf 5 gesetzt. Bei jedem Crawl wird die Anzahl der erkannten Tabellen mit diesem Tabellen-Schwellenwert (5) AWS Glue verglichen. Wenn die Anzahl der erkannten Tabellen unter 5 liegt, werden die Tabellen in den Datenkatalog AWS Glue geschrieben. Falls nicht, schlägt der Crawl fehl, ohne in den Datenkatalog zu schreiben.

------
#### [ AWS-Managementkonsole ]

**Zur Einstellung `TableThreshold` verwenden Sie: AWS-Managementkonsole**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Legen Sie bei der Konfiguration eines Crawlers unter **Ausgabe und Planung** den **maximalen Tabellenschwellenwert** auf die Anzahl der Tabellen fest, die der Crawler generieren darf.  
![\[Im Bereich Ausgabe und Planung der AWS Konsole wird der Parameter Maximaler Schwellenwert für Tabellen angezeigt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawler-max-tables.png)

------
#### [ AWS CLI ]

Zum Einstellen `TableThreshold` mit dem AWS CLI:

```
aws glue update-crawler \
    --name myCrawler \
    --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": { "TableThreshold": 5 }}}'
```

------
#### [ API ]

Festlegen von `TableThreshold` mit der API:

```
"{"Version":1.0,
"CrawlerOutput":
{"Tables":{"AddOrUpdateBehavior":"MergeNewColumns",
"TableThreshold":5}}}";
```

------

Fehlermeldungen werden protokolliert, um Ihnen zu helfen, Tabellenpfade zu identifizieren und Ihre Daten zu bereinigen. Beispiel: Melden Sie sich bei Ihrem Konto an, wenn der Crawler fehlschlägt, weil die Tabellenanzahl größer als der angegebene Tabellenschwellenwert war:

```
Table Threshold value = 28, Tables detected - 29
```

In CloudWatch protokollieren wir alle erkannten Tabellenpositionen als INFO-Meldung. Ein Fehler wird als Grund für den Fehlschlag protokolliert.

```
ERROR com.amazonaws.services.glue.customerLogs.CustomerLogService - CustomerLogService received CustomerFacingException with message 
The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog.
com.amazonaws.services.glue.exceptions.CustomerFacingInternalException: The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. 
Failing crawler without writing to Data Catalog.
```

# Konfigurieren eines Crawlers für die Verwendung von Lake-Formation-Anmeldeinformationen
<a name="crawler-lf-integ"></a>

Sie können einen Crawler so konfigurieren, dass er AWS Lake Formation Anmeldeinformationen für den Zugriff auf einen Amazon S3 S3-Datenspeicher oder eine Datenkatalogtabelle mit einem zugrunde liegenden Amazon S3 S3-Speicherort innerhalb desselben AWS-Konto oder eines anderen AWS-Konto verwendet. Sie können eine vorhandene Data-Catalog-Tabelle als Crawler-Ziel konfigurieren, wenn sich der Crawler und die Data-Catalog-Tabelle im selben Konto befinden. Derzeit ist nur ein einzelnes Katalogziel mit einer einzigen Katalogtabelle zulässig, wenn eine Datenkatalogtabelle als Ziel eines Crawlers verwendet wird.

**Anmerkung**  
Wenn Sie eine Data-Catalog-Tabelle als Crawler-Ziel definieren, stellen Sie sicher, dass der zugrunde liegende Speicherort der Data-Catalog-Tabelle ein Amazon-S3-Speicherort ist. Crawler, die Lake-Formation-Anmeldeinformationen verwenden, unterstützen nur Data-Catalog-Ziele mit zugrunde liegenden Amazon-S3-Speicherorten.

## Einrichtung erforderlich, wenn sich der Crawler und der registrierte Amazon-S3-Speicherort oder die Data-Catalog-Tabelle im selben Konto befinden (In-Account-Crawling)
<a name="in-account-crawling"></a>

Damit der Crawler mithilfe der Lake-Formation-Anmeldeinformationen auf einen Datenspeicher oder eine Data-Catalog-Tabelle zugreifen kann, müssen Sie den Datenspeicherort bei Lake Formation registrieren. Außerdem muss die IAM-Rolle des Crawlers über Berechtigungen zum Lesen der Daten von dem Ziel verfügen, an dem der Amazon-S3-Bucket registriert ist.

Sie können die folgenden Konfigurationsschritte mit dem AWS-Managementkonsole oder AWS Command Line Interface (AWS CLI) ausführen.

------
#### [ AWS-Managementkonsole ]

1. Bevor Sie einen Crawler für den Zugriff auf die Crawler-Quelle konfigurieren, registrieren Sie den Datenspeicherort des Datenspeichers oder des Data Catalog bei Lake Formation. Registrieren Sie in der Lake Formation Formation-Konsole ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) einen Amazon S3 S3-Standort als Stammverzeichnis Ihres Data Lakes an dem Ort, AWS-Konto an dem der Crawler definiert ist. Weitere Informationen finden Sie unter [Registrieren eines Amazon-S3-Speicherorts](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html).

1. Gewähren Sie der IAM-Rolle **Data location** (Datenspeicherort)-Berechtigungen, die für die Crawler-Ausführung verwendet wird, damit der Crawler die Daten vom Ziel in Lake Formation lesen kann. Weitere Informationen finden Sie unter [Erteilen von Datenspeicherortberechtigungen (im selben Konto)](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html).

1. Gewähren Sie der Crawler-Rolle Zugriffsberechtigungen (`Create`) auf die Datenbank, die als Ausgabedatenbank angegeben ist. Weitere Informationen finden Sie unter [Erteilen von Datenbankberechtigungen mit der Lake-Formation-Konsole und der benannten Ressourcenmethode](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html).

1. Erstellen Sie in der IAM-Konsole ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) eine IAM-Rolle für den Crawler. Fügen Sie die `lakeformation:GetDataAccess`-Richtlinie zur Rolle hinzu.

1. Wählen Sie in der AWS Glue Konsole ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) bei der Konfiguration des Crawlers die Option **Lake Formation Formation-Anmeldeinformationen für das Crawlen der Amazon S3 S3-Datenquelle verwenden** aus.
**Anmerkung**  
Das Feld accountId ist optional für das In-Account-Crawling.

------
#### [ AWS CLI ]

```
aws glue --profile demo create-crawler --debug --cli-input-json '{
    "Name": "prod-test-crawler",
    "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role",
    "DatabaseName": "prod-run-db",
    "Description": "",
    "Targets": {
    "S3Targets":[
                {
                 "Path": "s3://amzn-s3-demo-bucket"
                }
                ]
                },
   "SchemaChangePolicy": {
      "UpdateBehavior": "LOG",
      "DeleteBehavior": "LOG"
  },
  "RecrawlPolicy": {
    "RecrawlBehavior": "CRAWL_EVERYTHING"
  },
  "LineageConfiguration": {
    "CrawlerLineageSettings": "DISABLE"
  },
  "LakeFormationConfiguration": {
    "UseLakeFormationCredentials": true,
    "AccountId": "111122223333"
  },
  "Configuration": {
           "Version": 1.0,
           "CrawlerOutput": {
             "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" },
             "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" }
           },
           "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" }
         },
  "CrawlerSecurityConfiguration": "",
  "Tags": {
    "KeyName": ""
  }
}'
```

------

# Einrichtung erforderlich, wenn sich der Crawler und der registrierte Amazon-S3-Standort im selben Konto befinden (Cross-Account-Crawling)
<a name="cross-account-crawling"></a>

Damit der Crawler mit Lake-Formation-Anmeldeinformationen auf einen Datenspeicher in einem anderen Konto zugreifen kann, müssen Sie zuerst den Amazon-S3-Datenspeicherort bei Lake Formation registrieren. Anschließend erteilen Sie dem Konto des Crawlers Datenspeicherortberechtigungen, indem Sie die folgenden Schritte ausführen.

Sie können die folgenden Schritte mit dem AWS-Managementkonsole oder ausführen AWS CLI.

------
#### [ AWS-Managementkonsole ]

1. In dem Konto, in dem der Amazon-S3-Speicherort registriert ist (Konto B):

   1. Registrieren Sie einen Amazon-S3-Pfad bei Lake Formation. Weitere Informationen finden Sie unter [Registrieren eines Amazon-S3-Standorts](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html).

   1.  Gewähren Sie **Data location** (Datenspeicherort)-Berechtigungen für das Konto (Konto A), in dem der Crawler ausgeführt wird. Weitere Informationen finden Sie unter [Erteilen von Datenstandortberechtigungen](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html). 

   1. Erstellen Sie eine leere Datenbank in Lake Formation mit dem zugrunde liegenden Speicherort als Amazon-S3-Speicherort. Weitere Informationen finden Sie unter [Erstellen einer Datenbank](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-database.html).

   1. Gewähren Sie Konto A (das Konto, in dem der Crawler ausgeführt wird) Zugriff auf die Datenbank, die Sie im vorherigen Schritt erstellt haben. Weitere Informationen finden Sie unter [Erteilen von Datenbankberechtigungen](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html). 

1. In dem Konto, in dem der Crawler erstellt und ausgeführt wird (Konto A):

   1.  Akzeptieren Sie mithilfe der AWS RAM Konsole die Datenbank, die vom externen Konto (Konto B) gemeinsam genutzt wurde. Weitere Informationen finden Sie unter [Annehmen einer Einladung zur gemeinsamen Nutzung einer Ressource von AWS Resource Access Manager](https://docs.aws.amazon.com/lake-formation/latest/dg/accepting-ram-invite.html). 

   1.  Erstellen Sie eine IAM-Rolle für den Crawler. Fügen Sie die `lakeformation:GetDataAccess`-Richtlinie zur Rolle hinzu.

   1.  Erteilen Sie in der Lake Formation-Konsole ([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)) der IAM-Rolle, die für den Crawler-Lauf verwendet wurde, **Datenstandortberechtigungen** für den Amazon S3 S3-Zielstandort, damit der Crawler die Daten vom Ziel in Lake Formation lesen kann. Weitere Informationen finden Sie unter [Erteilen von Datenstandortberechtigungen](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html). 

   1.  Erstellen Sie einen Ressourcenlink in der freigegebenen Datenbank. Weitere Informationen finden Sie unter [Erstellen eines Ressourcenlinks](https://docs.aws.amazon.com/lake-formation/latest/dg/create-resource-link-database.html). 

   1.  Gewähren Sie der Crawler-Rolle Zugriffsberechtigungen (`Create`) in der gemeinsam genutzten Datenbank und (`Describe`) dem Ressourcenlink. Der Ressourcenlink wird in der Ausgabe für den Crawler angegeben. 

   1.  Wählen Sie in der AWS Glue Konsole ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) bei der Konfiguration des Crawlers die Option **Lake Formation Formation-Anmeldeinformationen für das Crawlen der Amazon S3 S3-Datenquelle verwenden** aus.

      Geben Sie für kontoübergreifendes Crawling die AWS-Konto ID an, unter der der Amazon S3 S3-Zielstandort bei Lake Formation registriert ist. Das Feld „accountId“ ist optional für das Crawling im Konto.   
![\[IAM role selection and Lake Formation configuration options for AWS-Glue-Crawler security settings.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/cross-account-crawler.png)

------
#### [ AWS CLI ]

```
aws glue --profile demo create-crawler --debug --cli-input-json '{
    "Name": "prod-test-crawler",
    "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role",
    "DatabaseName": "prod-run-db",
    "Description": "",
    "Targets": {
    "S3Targets":[
                {
                 "Path": "s3://amzn-s3-demo-bucket"
                }
                ]
                },
   "SchemaChangePolicy": {
      "UpdateBehavior": "LOG",
      "DeleteBehavior": "LOG"
  },
  "RecrawlPolicy": {
    "RecrawlBehavior": "CRAWL_EVERYTHING"
  },
  "LineageConfiguration": {
    "CrawlerLineageSettings": "DISABLE"
  },
  "LakeFormationConfiguration": {
    "UseLakeFormationCredentials": true,
    "AccountId": "111111111111"
  },
  "Configuration": {
           "Version": 1.0,
           "CrawlerOutput": {
             "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" },
             "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" }
           },
           "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" }
         },
  "CrawlerSecurityConfiguration": "",
  "Tags": {
    "KeyName": ""
  }
}'
```

------

**Anmerkung**  
Ein Crawler, der Lake-Formation-Anmeldeinformationen verwendet, wird nur für Amazon-S3- und Data-Catalog-Ziele unterstützt.
Für Ziele, die Lake-Formation-Anmeldeinformationen verwenden, müssen die zugrunde liegenden Amazon-S3-Speicherorte demselben Bucket angehören. Beispielsweise können Kunden mehrere Ziele verwenden (s3://amzn-s3-demo-bucket1/folder1, s3://amzn-s3-demo-bucket1/folder2), solange sich alle Zielorte unter demselben Bucket (amzn-s3-demo-bucket1) befinden. Die Angabe verschiedener Buckets (s3://amzn-s3-demo-bucket1/folder1, s3://amzn-s3-demo-bucket2/folder2) ist nicht zulässig.
Derzeit ist nur ein einzelnes Katalogziel mit einer einzigen Katalogtabelle zulässig, wenn eine Data Catalog als Ziel eines Crawlers verwendet wird.

# Beschleunigung von Crawls mithilfe von Amazon S3-Ereignisbenachrichtigungen
<a name="crawler-s3-event-notifications"></a>

Anstatt die Objekte aus einem Amazon S3- oder Data Catalog-Ziel aufzulisten, können Sie den Crawler so konfigurieren, dass er Amazon S3-Ereignisse verwendet, um Änderungen zu finden. Dieses Feature verbessert die Recrawl-Zeit, indem Amazon S3-Ereignisse verwendet werden, um die Änderungen zwischen zwei Crawls zu identifizieren, indem alle Dateien aus dem Unterordner aufgeführt werden, der das Ereignis ausgelöst hat, anstatt das vollständige Amazon S3- oder Data Calatog-Ziel aufzulisten.

Der erste Crawl listet alle Amazon S3-Objekte aus dem Ziel auf. Nach dem ersten erfolgreichen Crawl können Sie wählen, ob Sie manuell oder nach einem festgelegten Zeitplan recrawlen möchten. Der Crawler listet nur die Objekte dieser Ereignisse auf, anstatt alle Objekte aufzulisten.

Wenn das Ziel eine Datenkatalogtabelle ist, aktualisiert der Crawler die vorhandenen Tabellen im Datenkatalog mit Änderungen (z. B. zusätzliche Partitionen in einer Tabelle).

Die Vorteile eines Umstiegs zu einem ereignisbasierten Crawler auf Amazon S3 sind:
+ Ein schnelleres Recrawl, da die Auflistung aller Objekte aus dem Ziel nicht erforderlich ist, stattdessen erfolgt die Auflistung bestimmter Ordner, in denen Objekte hinzugefügt oder gelöscht werden.
+ Eine Senkung der Gesamtdurchforstungskosten, da die Auflistung bestimmter Ordner erfolgt, in denen Objekte hinzugefügt oder gelöscht werden.

Die Amazon S3-Ereignisdurchforstung wird ausgeführt, indem Amazon S3-Ereignisse aus der SQS-Warteschlange basierend auf dem Crawler-Zeitplan verwendet werden. Es fallen keine Kosten an, wenn keine Ereignisse in der Warteschlange vorhanden sind. Amazon S3-Ereignisse können so konfiguriert werden, dass sie direkt in die SQS-Warteschlange bzw. in Fällen, in denen mehrere Verbraucher dasselbe Ereignis benötigen, in eine Kombination aus SNS und SQS gelangen. Weitere Informationen finden Sie unter [Einrichten eines Kontos für Amazon S3-Ereignisbenachrichtigungen](#crawler-s3-event-notifications-setup).

Nach dem Erstellen und Konfigurieren des Crawlers im Ereignismodus wird das erste Crawl im Listing-Modus ausgeführt, indem eine vollständige Auflistung des Amazon S3- oder Data Catalog-Ziels ausgeführt wird. Das folgende Protokoll bestätigt den Crawl-Vorgang durch den Verbrauch von Amazon S3-Ereignissen nach dem ersten erfolgreichen Crawl: „Der Crawl wird durch den Verbrauch von Amazon S3-Ereignissen ausgeführt.“

Nach dem Erstellen des Amazon S3-Ereigniscrawls und dem Aktualisieren der Crawler-Eigenschaften, die sich auf das Crawl auswirken können, wird das Crawl im List-Modus ausgeführt und das folgende Protokoll wird hinzugefügt: „Crawl läuft nicht im S3-Ereignismodus“.

**Anmerkung**  
Die maximale Anzahl der zu verarbeitenden Nachrichten beträgt 100 000 Nachrichten pro Crawl.

## Überlegungen und Einschränkungen
<a name="s3event-crawler-limitations"></a>

Die folgenden Überlegungen und Einschränkungen gelten, wenn Sie einen Crawler so konfigurieren, dass er Amazon-S3-Ereignisbenachrichtigungen verwendet, um Änderungen zu finden. 
+  **Wichtiges Verhalten bei gelöschten Partitionen** 

  Bei Verwendung von Amazon-S3-Ereigniscrawlern mit Datenkatalogtabellen:
  +  Wenn Sie eine Partition mit dem API-Aufruf `DeletePartition` löschen, müssen Sie auch alle S3-Objekte unter dieser Partition löschen und bei der Konfiguration Ihrer S3-Ereignisbenachrichtigungen **Alle Objektentfernungsereignisse** auswählen. Wenn keine Löschereignisse konfiguriert sind, erstellt der Crawler die gelöschte Partition bei seiner nächsten Ausführung neu. 
+ Nur ein einziges Ziel wird vom Crawler unterstützt, unabhängig davon, ob es sich um Amazon S3- oder Data Catalog-Ziele handelt.
+ SQS auf privater VPC wird nicht unterstützt.
+ Amazon S3-Probenahme wird nicht unterstützt.
+ Das Crawlerziel sollte ein Ordner für ein Amazon S3-Ziel oder eine oder mehrereAWS Glue Data Catalog-Tabellen für ein Data Catalog-Ziel sein.
+ Der Pfad-Platzhalter „alles“ wird nicht unterstützt: s3://%
+ Bei einem Data Catalog-Ziel sollten alle Katalogtabellen auf denselben Amazon S3-Bucket für den Amazon S3-Ereignismodus verweisen.
+ Bei einem Data Catalog-Ziel sollte eine Katalogtabelle nicht auf einen Amazon S3-Speicherort im Delta Lake-Format verweisen (der Ordner \$1symlink enthält oder das `InputFormat` der Katalogtabelle überprüft).

**Topics**
+ [Überlegungen und Einschränkungen](#s3event-crawler-limitations)
+ [Einrichten eines Kontos für Amazon S3-Ereignisbenachrichtigungen](#crawler-s3-event-notifications-setup)
+ [Einrichten eines Crawlers für Amazon-S3-Ereignisbenachrichtigungen für ein Amazon-S3-Ziel:](crawler-s3-event-notifications-setup-console-s3-target.md)
+ [Einrichten eines Crawlers für Amazon-S3-Ereignisbenachrichtigungen für eine Datenkatalogtabelle](crawler-s3-event-notifications-setup-console-catalog-target.md)

## Einrichten eines Kontos für Amazon S3-Ereignisbenachrichtigungen
<a name="crawler-s3-event-notifications-setup"></a>

Führen Sie die folgenden Einrichtungsaufgaben aus. Beachten Sie, dass die Werte in Klammern auf die konfigurierbaren Einstellungen aus dem Skript verweisen.

1. Sie müssen Ereignisbenachrichtigungen für Ihren Amazon S3-Bucket einrichten.

   Weitere Informationen finden Sie unter [Amazon-S3-Ereignisbenachrichtigungen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html).

1. Um den ereignisbasierten Amazon S3-Crawler zu verwenden, müssen Sie die Ereignisbenachrichtigung auf für den Amazon-S3-Bucket aktivieren, wobei Ereignisse aus dem Präfix gefiltert werden, was dem S3-Ziel und dem Speicher in SQS entspricht. Sie können SQS und Ereignisbenachrichtigungen über die Konsole einrichten, indem Sie die Schritte unter [Exemplarische Vorgehensweise: Konfigurieren eines Buckets für Benachrichtigungen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html) befolgen.

1. Fügen Sie die folgende SQS-Richtlinie der vom Crawler verwendeten Rolle hinzu. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
           "sqs:DeleteMessage",
           "sqs:GetQueueUrl",
           "sqs:ListDeadLetterSourceQueues",
           "sqs:ReceiveMessage",
           "sqs:GetQueueAttributes",
           "sqs:ListQueueTags",
           "sqs:SetQueueAttributes",
           "sqs:PurgeQueue"
         ],
         "Resource": "arn:aws:sqs:us-east-1:111122223333:cfn-sqs-queue"
       }
     ]
   }
   ```

------

# Einrichten eines Crawlers für Amazon-S3-Ereignisbenachrichtigungen für ein Amazon-S3-Ziel:
<a name="crawler-s3-event-notifications-setup-console-s3-target"></a>

Gehen Sie wie folgt vor, um einen Crawler für Amazon S3 S3-Ereignisbenachrichtigungen für ein Amazon S3 S3-Ziel einzurichten, indem Sie die Option AWS-Managementkonsole oder AWS CLI verwenden.

------
#### [ AWS-Managementkonsole ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die GuardDuty Konsole unter [https://console.aws.amazon.com/guardduty/](https://console.aws.amazon.com/guardduty/).

1.  Legen Sie Ihre Crawler-Eigenschaften fest. Weitere Informationen finden Sie unter [Festlegen von Crawler-Konfigurationsoptionen auf der AWS Glue-Konsole](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console). 

1.  Im Abschnitt **Data source configuration** (Datenquellenkonfiguration) werden Sie Folgendes gefragt: *Sind Ihre Daten bereits AWS Glue-Tabellen zugeordnet?* 

    Standardmäßig ist **Not yet** (Noch nicht) ausgewählt. Behalten Sie bei diesem die Standardeinstellungen bei, da Sie eine Amazon-S3-Datenquelle verwenden und die Daten noch keinen AWS Glue-Tabellen zugeordnet sind. 

1.  Wählen Sie im Abschnitt **Data sources** (Datenquellen) **Add a data source** (Datenquelle hinzufügen) aus.   
![\[Data source configuration interface with options to select or add data sources for crawling.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawler-s3-event-console1.png)

1.  Konfigurieren Sie im Modal **Add a data source** (Datenquelle hinzufügen) die Amazon-S3-Datenquelle: 
   +  **Data source** (Datenquelle): Standardmäßig ist Amazon S3 ausgewählt. 
   +  **Network connection** (Netzwerkverbindung) (Optional): Wählen Sie **Add new connection** (Neue Verbindung hinzufügen). 
   +  **Location of Amazon S3 data** (Speicherort der Amazon-S3-Daten): Standardmäßig ist **In this account** (In diesem Konto) ausgewählt. 
   +  **Amazon S3 path** (Amazon-S3-Pfad): Geben Sie den Amazon-S3-Pfad an, wo Ordner und Dateien gecrawlt werden. 
   +  **Subsequent crawler runs** (Nachfolgende Crawler-Ausführungen): Wählen Sie **Crawl based on events** (Crawling basierend auf Ereignissen) aus, um Amazon-S3-Ereignisbenachrichtigungen für Ihren Crawler zu verwenden. 
   +  **SQS ARN hinzufügen**: Geben Sie die Datenspeicherparameter einschließlich eines gültigen SQS ARN an. (Beispiel: `arn:aws:sqs:region:account:sqs`). 
   +  **Dead-Letter SQS ARN hinzufügen** (Optional): Geben Sie einen gültigen Amazon Dead-Letter SQS ARN an. (Beispiel: `arn:aws:sqs:region:account:deadLetterQueue`). 
   +  Wählen Sie **Add an Amazon S3 data source** (Amazon-S3-Datenquelle hinzufügen) aus.   
![\[Add data source dialog for S3, showing options for network connection and crawl settings.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawler-s3-event-console2.png)

------
#### [ AWS CLI ]

 Im Folgenden finden Sie ein Beispiel für einen Amazon S3 AWS CLI S3-Aufruf, um einen Crawler so zu konfigurieren, dass er Ereignisbenachrichtigungen verwendet, um einen Amazon S3 S3-Ziel-Bucket zu crawlen. 

```
Create Crawler:
aws glue update-crawler \
    --name myCrawler \
    --recrawl-policy RecrawlBehavior=CRAWL_EVENT_MODE \
    --schema-change-policy UpdateBehavior=UPDATE_IN_DATABASE,DeleteBehavior=LOG
    --targets '{"S3Targets":[{"Path":"s3://amzn-s3-demo-bucket/", "EventQueueArn": "arn:aws:sqs:us-east-1:012345678910:MyQueue"}]}'
```

------

# Einrichten eines Crawlers für Amazon-S3-Ereignisbenachrichtigungen für eine Datenkatalogtabelle
<a name="crawler-s3-event-notifications-setup-console-catalog-target"></a>

Wenn Sie ein Datenkatalogziel haben, richten Sie einen Crawler für Amazon-S3-Ereignisbenachrichtigungen mit der AWS Glue-Konsole ein:

1.  Legen Sie Ihre Crawler-Eigenschaften fest. Weitere Informationen finden Sie unter [Festlegen von Crawler-Konfigurationsoptionen auf der AWS Glue-Konsole](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console). 

1.  Im Abschnitt **Data source configuration** (Datenquellenkonfiguration) werden Sie Folgendes gefragt: *Sind Ihre Daten bereits AWS Glue-Tabellen zugeordnet?* 

    Wählen Sie **Ja**, um vorhandene Tabellen aus Ihrem Data Catalog als Datenquelle auszuwählen. 

1.  Wählen Sie im Abschnitt **Glue-Tabellen** die Option **Tabellen hinzufügen**.   
![\[Data source configuration interface with options to select existing Glue tables or add new ones.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawler-s3-event-console1-cat.png)

1.  Konfigurieren Sie im Modal **Tabelle hinzufügen** die Datenbank und die Tabellen: 
   +  **Network connection** (Netzwerkverbindung) (Optional): Wählen Sie **Add new connection** (Neue Verbindung hinzufügen). 
   +  **Datenbank**: Wählen Sie eine Datenbank im Data Catalog. 
   +  **Tabellen**: Wählen Sie eine oder mehrere Tabellen aus dieser Datenbank im Data Catalog aus. 
   +  **Subsequent crawler runs** (Nachfolgende Crawler-Ausführungen): Wählen Sie **Crawl based on events** (Crawling basierend auf Ereignissen) aus, um Amazon-S3-Ereignisbenachrichtigungen für Ihren Crawler zu verwenden. 
   +  **SQS ARN hinzufügen**: Geben Sie die Datenspeicherparameter einschließlich eines gültigen SQS ARN an. (Beispiel: `arn:aws:sqs:region:account:sqs`). 
   +  **Dead-Letter SQS ARN hinzufügen** (Optional): Geben Sie einen gültigen Amazon Dead-Letter SQS ARN an. (Beispiel: `arn:aws:sqs:region:account:deadLetterQueue`). 
   +  Wählen Sie **Bestätigen** aus.   
![\[Add Glue tables dialog with network, database, tables, and crawler options.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawler-s3-event-console2-cat.png)

# Tutorial: Hinzufügen eines AWS Glue-Crawlers
<a name="tutorial-add-crawler"></a>

In diesem AWS Glue-Beispiel werden Sie aufgefordert, Ankunftsdaten für große Luftfahrtunternehmen zu analysieren und so das monatliche Flugaufkommen bei verschiedenen Abflugflughäfen zu berechnen. Sie haben Flugdaten für das Jahr 2016 im CSV-Format in Amazon S3 gespeichert. Bevor Sie die Daten transformieren und analysieren, katalogisieren Sie die Metadaten im AWS Glue Data Catalog.

In diesem Tutorial wollen wir einen Crawler nutzen, der Metadaten aus diesen Flugprotokollen in Amazon S3 ableitet und eine Tabelle in Ihrem Data Catalog erstellt.

**Topics**
+ [Voraussetzungen](#tutorial-add-crawler-prerequisites)
+ [Schritt 1: Einen Crawler erstellen](#tutorial-add-crawler-step1)
+ [Schritt 2: Den Crawler ausführen](#tutorial-add-crawler-step2)
+ [Schritt 3: AWS Glue Data Catalog-Objekte anzeigen](#tutorial-add-crawler-step3)

## Voraussetzungen
<a name="tutorial-add-crawler-prerequisites"></a>

In diesem Tutorial wird davon ausgegangen, dass Sie ein AWS Konto und Zugriff darauf habenAWS Glue.

## Schritt 1: Einen Crawler erstellen
<a name="tutorial-add-crawler-step1"></a>

Die folgenden Schritte zeigen, wie Sie einen Crawler konfigurieren und ausführen, der die Metadaten aus einer CSV-Datei in Amazon S3 extrahiert.

**Einen Crawler erstellen, der Dateien auf Amazon S3 liest**

1. Wählen Sie in der AWS Glue Servicekonsole im Menü auf der linken Seite **Crawlers** aus.

1. Wählen Sie auf der Crawlers-Seite die Option **Crawler erstellen** aus. Es erscheint eine Folge von Seiten, auf denen Sie Details zum Crawler eingeben sollen.  
![\[Der Screenshot zeigt die Crawler-Seite. Von dort aus können Sie einen Crawler erstellen oder einen vorhandenen Crawler bearbeiten, duplizieren, löschen oder anzeigen.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/crawlers-create_crawler.png)

1. Geben Sie im Namensfeld des Crawlers **Flights Data Crawler** ein und wählen Sie **Next (Weiter)** aus.

   Crawler rufen Classifier auf, um das Schema Ihrer Daten abzuleiten. In diesem Tutorial wird standardmäßig der integrierte Classifier für CSV verwendet. 

1. Wählen Sie für den Crawler-Quelltyp die Option **Data stores (Datenspeicher)** und anschließend **Next (Weiter)** aus.

1. Jetzt wollen wir den Crawler auf Ihre Daten verweisen. Wählen Sie auf der Seite **Add a data store (Datenspeicher hinzufügen)** den Datenspeicher „Amazon S3“ aus. In diesem Tutorial wird keine Verbindung verwendet. Lassen Sie daher das Feld **Connection (Verbindung)** leer, wenn Sie es sehen. 

   Wählen Sie unter **Crawl data in (Daten durchsuchen in)** die Option **Specified path in another account (Angegebener Pfad in einem anderen Konto)** aus. Geben Sie dann bei **Include path (Pfad hinzufügen)** den Pfad ein, in dem der Crawler die Flugdaten finden kann. In diesem Fall ist es **s3://crawler-public-us-east-1/flight/2016/csv**. Nachdem Sie den Pfad eingegeben haben, ändert sich der Titel dieses Feldes zu **Include path (Pfad hinzufügen)**. Wählen Sie **Next (Weiter)**.

1. Sie können mehrere Datenspeicher mit einem einzigen Crawler durchsuchen. In diesem Tutorial verwenden wir jedoch nur einen einzelnen Datenspeicher. Wählen Sie daher **No (Nein)** aus und danach **Next (Weiter)**.

1. Der Crawler benötigt Berechtigungen, um auf den Datenspeicher zuzugreifen und Objekte im AWS Glue Data Catalog erstellen zu können. Um diese Berechtigungen zu konfigurieren, wählen Sie **Create an IAM role (IAM-Rolle erstellen)** aus. Der Name der IAM-Rolle beginnt mit `AWSGlueServiceRole-`. Im Feld geben Sie den letzten Teil des Rollennamens ein. Geben Sie **CrawlerTutorial** ein und wählen Sie **Next (Weiter)** aus. 
**Anmerkung**  
Um eine IAM-Rolle zu erstellen, muss Ihr AWS Benutzer die Berechtigungen `CreateRole`, `CreatePolicy` und `AttachRolePolicy` haben.

   Der Assistent erstellt eine IAM-Rolle mit dem Namen`AWSGlueServiceRole-CrawlerTutorial`, hängt die AWS verwaltete Richtlinie an diese Rolle `AWSGlueServiceRole` an und fügt eine Inline-Richtlinie hinzu, die Lesezugriff auf den Amazon S3 S3-Standort ermöglicht. `s3://crawler-public-us-east-1/flight/2016/csv`

1. Erstellen Sie einen Zeitplan für den Crawler. Wählen Sie bei **Frequency (Häufigkeit)** die Option **Run on demand (Bei Bedarf ausführen)** aus und danach **Next (Weiter)**. 

1. Crawler erstellen in Ihrem Data Catalog Tabellen. Tabellen befinden sich in einer Datenbank im Data Catalog. Wählen Sie zuerst **Add a databse (Datenbank hinzufügen)**, um eine Datenbank zu erstellen. Geben Sie im Popup-Fenster **test-flights-db** als Datenbankname ein und wählen Sie dann **Create (Erstellen)** aus.

   Geben Sie als Nächstes **flights** bei **Prefix added to tables (Präfix für Tabellen)** ein. Lassen Sie bei den restlichen Feldern die Standardwerte stehen und wählen Sie **Next (Weiter)** aus.

1. Überprüfen Sie die Eingaben im Assistenten **Add crawler (Crawler hinzufügen)**. Wenn Sie Fehler bemerken, können Sie mit **Back (Zurück)** zu den vorherigen Seiten zurück und Änderungen vorzunehmen.

   Nachdem Sie alles überprüft haben, wählen Sie **Finish (Abschließen)** aus, um den Crawler zu erstellen.

## Schritt 2: Den Crawler ausführen
<a name="tutorial-add-crawler-step2"></a>

Nachdem Sie einen Crawler erstellt haben, leitet Sie der Assistenten zur Ansicht des Crawlers weiter. Da Sie den Crawler mit einem On-Demand-Zeitplan erstellen, haben Sie die Möglichkeit, den Crawler auszuführen.

**Den Crawler ausführen**

1. Das Banner am oberen Rand dieser Seite zeigt Ihnen, dass der Crawler erstellt wurde. Es fragt, ob Sie ihn jetzt ausführen möchten. Wählen Sie **Run it now? (Jetzt ausführen?)** aus, um den Crawler auszuführen.

   Das Banner ändert sich und zeigt jetzt die Meldungen „Attempting to run (Ausführung wird versucht)“ und „Running (Wird ausgeführt)“ für den Crawler an. Nachdem der Crawler gestartet wurde, verschwindet das Banner. Die Crawler-Anzeige ist nun aktualisiert und zeigt den Status „Starting (Wird gestartet)“. Nach einer Minute können Sie das Symbol zum Aktualisieren (Refresh) auswählen, um den aktuellen Status des Crawlers abzurufen, der in der Tabelle angezeigt wird.

1. Wenn der Crawler fertig ist, erscheint wieder ein Banner, das die vom Crawler vorgenommenen Änderungen beschreibt. Sie können den **test-flights-db**Link wählen, um die Datenkatalogobjekte anzuzeigen.

## Schritt 3: AWS Glue Data Catalog-Objekte anzeigen
<a name="tutorial-add-crawler-step3"></a>

Der Crawler liest Daten am Quellspeicherort und erstellt Tabellen im Data Catalog. Eine Tabelle ist eine Metadatendefinition, die Ihre Daten sowie deren Schema repräsentiert. Die Tabellen im Data Catalog enthalten keine Daten. Stattdessen verwenden Sie diese Tabellen als Quelle oder Ziel bei Auftragsdefinitionen.

**Die vom Crawler erstellten Data-Catalog-Objekte anzeigen**

1. Wählen Sie im Navigationsbereich links unter **Data catalog** die Option **Databases (Datenbanken)** aus. Hier können Sie die Datenbank `flights-db` sehen, die vom Crawler erstellt wurde.

1. Wählen Sie im Navigationsbereich links unter **Data catalog** und unterhalb von **Databases (Datenbanken)** die Option **Tables (Tabellen)** aus. Hier können Sie die Tabelle `flightscsv` sehen, die vom Crawler erstellt wurde. Wenn Sie den Tabellennamen auswählen, können Sie die Tabelleneinstellungen, Parameter und Eigenschaften sehen. Wenn Sie in dieser Ansicht nach unten scrollen, sehen Sie das Schema, das Informationen zu den Spalten und Datentypen der Tabelle enthält.

1. Über **View partitions (Partitionen anzeigen)** auf der Tabellenansichtsseite können Sie die Partitionen sehen, die für die Daten erstellt wurden. In der ersten Spalte steht der Partitionsschlüssel.

# Manuelles Definieren von Metadaten
<a name="populate-dg-manual"></a>

 Der AWS Glue Datenkatalog ist ein zentrales Repository, das Metadaten zu Ihren Datenquellen und Datensätzen speichert. Ein Crawler kann Metadaten für unterstützte Datenquellen zwar automatisch crawlen und mit Daten füllen, es gibt aber bestimmte Szenarien, in denen Sie Metadaten möglicherweise manuell im Datenkatalog definieren müssen: 
+ Nicht unterstützte Datenformate – Wenn Sie Datenquellen haben, die vom Crawler nicht unterstützt werden, müssen Sie die Metadaten für diese Datenquellen manuell im Datenkatalog definieren.
+ Anforderungen an benutzerdefinierte Metadaten — Der leitet Metadaten auf AWS-Glue-Crawler der Grundlage vordefinierter Regeln und Konventionen ab. Wenn Sie spezifische Metadatenanforderungen haben, die nicht von den AWS-Glue-Crawler abgeleiteten Metadaten abgedeckt werden, können Sie die Metadaten manuell definieren, um Ihren Anforderungen gerecht zu werden 
+ Daten-Governance und Standardisierung – In einigen Fällen möchten Sie aus Gründen der Daten-Governance, der Einhaltung von Vorschriften oder aus Sicherheitsgründen möglicherweise mehr Kontrolle über die Metadatendefinitionen haben. Durch manuelles Definieren von Metadaten können Sie sicherstellen, dass die Metadaten den Standards und Richtlinien Ihres Unternehmens entsprechen. 
+ Platzhalter für die zukünftige Datenerfassung – Wenn Sie Datenquellen haben, die nicht sofort verfügbar oder zugänglich sind, können Sie leere Schematabellen als Platzhalter erstellen. Sobald die Datenquellen verfügbar sind, können Sie die Tabellen mit den tatsächlichen Daten füllen und dabei die vordefinierte Struktur beibehalten. 

 Um Metadaten manuell zu definieren, können Sie die AWS Glue Konsole, die Lake Formation Formation-Konsole, die AWS Glue API oder die AWS Command Line Interface (AWS CLI) verwenden. Sie können Datenbanken, Tabellen und Partitionen erstellen und Metadateneigenschaften wie beispielsweise Spaltennamen, Datentypen, Beschreibungen und andere Attribute angeben. 

# Erstellen von Datenbanken
<a name="define-database"></a>

Datenbanken werden verwendet, um Metadatentabellen in AWS Glue zu organisieren. Wenn Sie eine Tabelle in der definieren AWS Glue Data Catalog, fügen Sie sie einer Datenbank hinzu. Eine Tabelle kann sich jeweils nur in einer Datenbank befinden.

Ihre Datenbank kann Tabellen enthalten, die Daten aus vielen verschiedenen Datenspeichern definieren. Diese Daten können Objekte in Amazon Simple Storage Service (Amazon S3) und relationale Tabellen in Amazon Relational Database Service enthalten.

**Anmerkung**  
Wenn Sie eine Datenbank aus dem AWS Glue-Data Catalog löschen, werden alle Tabellen in der Datenbank ebenfalls gelöscht.

 Um die Liste der Datenbanken anzuzeigen, melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). Wählen Sie **Databases** (Datenbanken) aus und wählen Sie dann einen Datenbanknamen in der Liste aus, um die Details anzuzeigen. 

 Auf der Registerkarte **Databases (Datenbanken)** in der AWS Glue-Konsole können Sie Datenbanken hinzufügen, bearbeiten und löschen:
+ Um eine neue Datenbank anzulegen, wählen Sie **Add database** (Datenbank hinzufügen) aus und geben Sie einen Namen und eine Beschreibung an. Aus Kompatibilitätsgründen mit anderen Metadatenspeichern, wie z. B. Apache Hive, wird der Name in Kleinbuchstaben gespeichert. 
**Anmerkung**  
Wenn Sie über Amazon Athena auf die Datenbank zugreifen möchten, müssen Sie einen Namen angeben, der nur aus alphanumerischen Zeichen und Unterstrichen besteht. Weitere Informationen finden Sie unter [Athena-Namen](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#ate-table-database-and-column-names-allow-only-underscore-special-characters). 
+  Um die Beschreibung für eine Datenbank zu bearbeiten, aktivieren Sie das Kontrollkästchen neben dem Datenbanknamen und wählen Sie **Edit** (Bearbeiten) aus. 
+  Um eine Datenbank zu löschen, aktivieren Sie das Kontrollkästchen neben dem Datenbanknamen und wählen Sie **Remove** (Entfernen) aus. 
+  Um die Liste der in der Datenbank enthaltenen Tabellen anzuzeigen, wählen Sie den Datenbanknamen und die Datenbankeigenschaften zeigen alle Tabellen in der Datenbank an. 

Um die Datenbank zu ändern, in die ein Crawler schreibt, müssen Sie die Crawler-Definition ändern. Weitere Informationen finden Sie unter [Verwenden von Crawlern zum Auffüllen des Datenkatalogs](add-crawler.md).

## Links zu Datenbankressourcen
<a name="databases-resource-links"></a>


|  | 
| --- |
| Die AWS Glue-Konsole wurde kürzlich aktualisiert. Die aktuelle Version der Konsole bietet keine Unterstützung für Datenbankressourcenlinks. | 

Außerdem kann der Data Catalog auch *Ressourcen-Links* zu Datenbanken enthalten. Eine Link zu einer Datenbankressource ist eine Verknüpfung zu einer lokalen oder freigegebenen Datenbank. Derzeit können Sie Ressourcenlinks nur in AWS Lake Formation erstellen. Nachdem Sie einen Ressourcenlink zu einer Datenbank erstellt haben, können Sie den Namen des Ressourcenlinks überall verwenden, wo Sie den Datenbanknamen verwenden möchten. Zusammen mit Datenbanken, die Sie besitzen oder die für Sie freigegeben sind, werden Datenbankressourcenlinks von `glue:GetDatabases()` zurückgegeben und als Einträge auf der **Datenbankseite** der AWS Glue-Konsole angezeigt.

Außerdem kann der Data Catalog auch Ressourcenlinks zu Tabellen enthalten.

Weitere Informationen zu Ressourcenlinks finden Sie unter [Creating Resource Links (Erstellen von Ressourcenlinks)](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-resource-links.html) im *AWS Lake Formation -Entwicklerhandbuch*.

# Erstellen von Tabellen
<a name="tables-described"></a>

Auch wenn das Ausführen eines Crawlers die empfohlene Methode ist, um die Daten in Ihren Datenspeichern zu inventarisieren, können Sie dem AWS Glue Data Catalog manuell Metadatentabellen hinzufügen. Dieser Ansatz ermöglicht es Ihnen, mehr Kontrolle über die Metadatendefinitionen zu haben und sie an Ihre spezifischen Anforderungen anzupassen.

Sie können Tabellen auch manuell auf folgende Weise zum Datenkatalog hinzufügen:
+ Verwenden Sie die AWS Glue-Konsole, um eine Tabelle in AWS Glue Data Catalog manuell zu erstellen. Weitere Informationen finden Sie unter [Erstellen von Tabellen mit der Konsole](#console-tables).
+ Verwenden Sie die `CreateTable`-Operation in der [AWS Glue API](aws-glue-api.md), um eine Tabelle im AWS Glue Data Catalog anzulegen. Weitere Informationen finden Sie unter [CreateTable Aktion (Python: create\$1table)](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-CreateTable).
+ Verwenden Sie CloudFormation Vorlagen. Weitere Informationen finden Sie unter [AWS CloudFormation für AWS Glue](populate-with-cloudformation-templates.md).

Wenn Sie eine Tabelle manuell mithilfe der Konsole oder einer API definieren, geben Sie das Tabellenschema und den Wert eines Klassifizierungsfeldes an, mit dem Typ und Format der Daten in der Datenquelle festgelegt werden. Wenn ein Crawler die Tabelle erstellt, werden das Datenformat und das Schema entweder durch einen integrierten Classifier oder einen angepassten Classifier bestimmt. Weitere Informationen zum Erstellen einer Tabelle mit der AWS Glue-Konsole finden Sie unter [Erstellen von Tabellen mit der Konsole](#console-tables).

**Topics**
+ [Tabellenpartitionen](#tables-partition)
+ [Tabellenressourcen-Verknüpfungen](#tables-resource-links)
+ [Erstellen von Tabellen mit der Konsole](#console-tables)
+ [Erstellen von Partitionsindizes](partition-indexes.md)
+ [Aktualisieren von manuell erstellten Data-Catalog-Tabellen mit Crawlern](#update-manual-tables)
+ [Eigenschaften der Data-Catalog-Tabelle](#table-properties)

## Tabellenpartitionen
<a name="tables-partition"></a>

Eine AWS Glue-Tabellendefinition eines Amazon Simple Storage Service (Amazon S3)-Ordners kann eine partitionierte Tabelle beschreiben. Um die Abfrageleistung zu verbessern, kann eine partitionierte Tabelle beispielsweise monatliche Daten in verschiedene Dateien unter Verwendung des Monatsnamens als Schlüssel aufteilen. In AWS Glue enthalten Tabellendefinitionen den Partitionierungsschlüssel einer Tabelle. Wenn AWS Glue die Daten in Amazon-S3-Ordnern auswertet, um eine Tabelle zu katalogisieren, bestimmt es, ob eine einzelne Tabelle oder eine partitionierte Tabelle hinzugefügt wird. 

Sie können Partitionsindizes für eine Tabelle erstellen, um eine Teilmenge der Partitionen abzurufen, anstatt alle Partitionen in der Tabelle zu laden. Weitere Informationen zum Arbeiten mit Indizes finden Sie unter [Erstellen von Partitionsindizes](partition-indexes.md).

Alle folgenden Bedingungen müssen für AWS Glue zutreffen, um eine partitionierte Tabelle für einen Amazon-S3-Ordner zu erstellen:
+ Die Schemata der Dateien sind identisch, wie von AWS Glue festgelegt.
+ Das Datenformat der Dateien ist identisch.
+ Das Komprimierungsformat der Dateien ist identisch.

Sie könnten z. B. einen Amazon S3 Bucket namens `my-app-bucket` besitzen, in dem Sie sowohl iOS- als auch Android-App-Verkaufsdaten speichern. Die Daten werden nach Jahr, Monat und Tag partitioniert. Die Datendateien für iOS- und Android-Verkäufe haben das gleiche Schema, Datenformat und Komprimierungsformat. In der AWS Glue Data Catalog erstellt der AWS Glue Crawler eine Tabellendefinition mit Partitionierungsschlüsseln für Jahr, Monat und Tag. 

Die folgende Amazon-S3-Auflistung von `my-app-bucket` zeigt einige der Partitionen. Das `=`-Symbol dient zur Zuweisung von Partitionsschlüsselwerten. 

```
   my-app-bucket/Sales/year=2010/month=feb/day=1/iOS.csv
   my-app-bucket/Sales/year=2010/month=feb/day=1/Android.csv
   my-app-bucket/Sales/year=2010/month=feb/day=2/iOS.csv
   my-app-bucket/Sales/year=2010/month=feb/day=2/Android.csv
   ...
   my-app-bucket/Sales/year=2017/month=feb/day=4/iOS.csv
   my-app-bucket/Sales/year=2017/month=feb/day=4/Android.csv
```

## Tabellenressourcen-Verknüpfungen
<a name="tables-resource-links"></a>


|  | 
| --- |
| Die AWS Glue-Konsole wurde kürzlich aktualisiert. Die aktuelle Version der Konsole bietet keine Unterstützung für Tabellenressourcenlinks. | 

Außerdem kann der Data Catalog auch *Ressourcenlinks* zu Tabellen enthalten. Ein Link zu einer Tabellenressource ist eine Verknüpfung zu einer lokalen oder freigegebenen Datenbank. Derzeit können Sie Ressourcenlinks nur in AWS Lake Formation erstellen. Nachdem Sie einen Ressourcenlink zu einer Tabelle erstellt haben, können Sie den Namen des Ressourcenlinks überall verwenden, wo Sie den Tabellennamen verwenden möchten. Zusammen mit Datenbanken, die Sie besitzen oder die für Sie freigegeben sind, werden Tabellenressourcenlinks von `glue:GetTables()` zurückgegeben und als Einträge auf der **Tabellenseite** der AWS Glue-Konsole angezeigt.

Außerdem kann der Data Catalog auch Ressourcen-Links zu Datenbanken enthalten.

Weitere Informationen zu Ressourcenlinks finden Sie unter [Creating Resource Links (Erstellen von Ressourcenlinks)](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-resource-links.html) im *AWS Lake Formation -Entwicklerhandbuch*.

## Erstellen von Tabellen mit der Konsole
<a name="console-tables"></a>

Eine Tabelle in der AWS Glue Data Catalog ist die Metadatendefinition, die die Daten in einem Datenspeicher darstellt. Sie erstellen Tabellen, wenn Sie einen Crawler ausführen, oder Sie können eine Tabelle manuell in der AWS Glue -Konsole erstellen. Die **Tables (Tabellen)**-Liste in der AWS Glue-Konsole zeigt die Werte Ihrer Tabellenmetadaten an. Sie verwenden Tabellendefinitionen zum Angeben von Quellen und Zielen, wenn Sie ETL (Extrahieren, Transformieren und Laden)-Aufträge erstellen. 

**Anmerkung**  
Aufgrund der jüngsten Änderungen an der AWS Managementkonsole müssen Sie möglicherweise Ihre vorhandenen IAM-Rollen ändern, um die [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-SearchTables](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-SearchTables)entsprechende Berechtigung zu erhalten. Für die Erstellung neuer Rollen wurde die `SearchTables`-API-Berechtigung bereits standardmäßig hinzugefügt.

Melden Sie sich zunächst bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). Wählen Sie die Registerkarte **Tabellen** aus und verwenden Sie die **Add tables** (Tabellen hinzufügen)-Schaltfläche, um Tabellen entweder mit einem Crawler oder durch die manuelle Eingabe von Attributen zu erstellen. 

### Hinzufügen von Tabellen in der Konsole
<a name="console-tables-add"></a>

Um einen Crawler zum Hinzufügen von Tabellen zu verwenden, wählen Sie **Add tables** (Tabellen hinzufügen), **Add tables using a crawler** (Tabellen mit einem Crawler hinzufügen) aus. Dann folgen Sie den Anweisungen im **Add crawler** (Crawler hinzufügen)-Assistenten. Wenn der Crawler ausgeführt wird, werden Tabellen dem AWS Glue Data Catalog hinzugefügt. Weitere Informationen finden Sie unter [Verwenden von Crawlern zum Auffüllen des Datenkatalogs](add-crawler.md).

Wenn Sie die Attribute kennen, die zum Erstellen einer Amazon Simple Storage Service (Amazon S3)-Tabellendefinition in Ihrem Data Catalog erforderlich sind, können Sie sie mit dem Tabellenassistenten erstellen. Wählen Sie **Add tables** (Tabellen hinzufügen), **Add table manually** (Tabelle manuell hinzufügen) aus und befolgen Sie die Anweisungen im **Add table** (Tabelle hinzufügen)-Assistenten.

Wenn eine Tabelle über die Konsole manuell hinzufügt wird, sollten Sie Folgendes beachten:
+ Wenn Sie über Amazon Athena auf die Tabelle zugreifen möchten, müssen Sie einen Namen angeben, der nur aus alphanumerischen Zeichen und Unterstrichen besteht. Weitere Informationen finden Sie unter [Athena-Namen](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html#ate-table-database-and-column-names-allow-only-underscore-special-characters).
+ Der Speicherort der Quelldaten muss ein Amazon-S3-Pfad sein.
+ Das Datenformat der Daten muss einem der im Assistenten aufgelisteten Formate entsprechen. Die entsprechende Klassifizierung und andere Tabelleneigenschaften werden automatisch auf der Grundlage des ausgewählten Formats aufgefüllt. SerDe Sie können Tabellen mit den folgenden Formaten definieren:   
**Avro**  
Apache Avro-JSON-Binärformat.  
**CSV**  
Werte mit Zeichentrennung. Sie geben auch das Trennzeichen Komma, Pipe, Semikolon, Tab oder Strg-A an.  
**JSON**  
JavaScript Objektnotation.  
**XML**  
Extensible Markup Language-Format. Geben Sie das XML-Tag an, das eine Zeile in den Daten definiert. Spalten werden innerhalb von Zeilen-Tags definiert.  
**Parquet**  
Spaltenweise Speicherung von Apache Parquet.  
**ORC**  
Optimiertes ORC-Dateiformat (Row Columnar). Ein Format zur effizienten Speicherung von Hive-Daten.
+ Sie können einen Partitionsschlüssel für die Tabelle definieren.
+ Derzeit können partitionierte Tabellen, die Sie mit der Konsole erstellen, nicht in ETL-Jobs verwendet werden.

### Tabellenattribute
<a name="console-tables-attributes"></a>

Es folgen einige wichtige Attribute Ihrer Tabelle:

**Name**  
Der Name wird festgelegt, wenn die Tabelle erstellt wird, und kann nicht geändert werden. Sie beziehen sich in vielen AWS Glue-Operationen auf einen Tabellennamen.

**Datenbank**  
Das Container-Objekt, in dem die Tabelle gespeichert ist. Dieses Objekt enthält eine Organisation Ihrer Tabellen, die innerhalb des Datenspeichers existiert AWS Glue Data Catalog und sich von dieser unterscheiden kann. Wenn Sie eine Datenbank löschen, werden alle Tabellen in der Datenbank ebenfalls von dem Data Catalog gelöscht. 

**Description**  
Die Beschreibung der Tabelle. Sie können eine Beschreibung zum besseren Verständnis der Inhalte der Tabelle schreiben.

**Tabellenformat**  
Geben Sie an, eine AWS Glue Standardtabelle oder eine Tabelle im Apache Iceberg-Format zu erstellen.  
Der Datenkatalog bietet die folgenden Tabellenoptimierungsoptionen, um den Tabellenspeicher zu verwalten und die Abfrageleistung für Iceberg-Tabellen zu verbessern.  
+ **Compaction** – Datendateien werden zusammengeführt und neu geschrieben, um veraltete Daten zu entfernen und fragmentierte Daten in größeren, effizienteren Dateien zu konsolidieren.
+ **Aufbewahrung von Snapshots**: Snapshots sind Versionen einer Iceberg-Tabelle mit Zeitstempel. Mit Konfigurationen zur Beibehaltung von Snapshots können Kunden festlegen, wie lange und wie viele Snapshots beibehalten werden sollen. Die Konfiguration eines Optimierer zur Aufbewahrung von Snapshots kann helfen, den Speicheraufwand zu minimieren, indem ältere, unnötige Snapshots und die zugehörigen zugrunde liegenden Dateien entfernt werden.
+ **Löschen verwaister Dateien**: Verwaiste Dateien sind Dateien, auf die in den Metadaten der Iceberg-Tabelle nicht mehr verwiesen wird. Diese Dateien können sich im Laufe der Zeit ansammeln, insbesondere nach Vorgängen wie dem Löschen von Tabellen oder fehlgeschlagenen ETL-Aufträgen. Wenn Sie das Löschen verwaister Dateien aktivieren AWS Glue , können Sie diese überflüssigen Dateien regelmäßig identifizieren und entfernen, wodurch Speicherplatz frei wird.
Weitere Informationen finden Sie unter [Optimieren von Iceberg-Tabellen](table-optimizers.md).

**Optimierungskonfiguration**  
Sie können entweder die Standardeinstellungen verwenden oder die Einstellungen für die Aktivierung der Tabellenoptimierer anpassen.

**IAM role (IAM-Rolle)**  
 Um die Tabellenoptimierer auszuführen, nimmt der Service eine IAM-Rolle in Ihrem Namen an. Sie können über das Dropdown-Menü eine IAM-Rolle auswählen. Die Rolle sollte die erforderlichen Berechtigungen für die Verdichtung haben.  
Weitere Informationen zu den erforderlichen Berechtigungen für die IAM-Rolle finden Sie unter [Voraussetzungen für die Tabellenoptimierung](optimization-prerequisites.md).

**Speicherort**  
Der Zeiger auf den Speicherort der Daten in einem Datenspeicher, den diese Tabellendefinition repräsentiert.

**Klassifizierung**  
Ein Kategorisierungswert, der bei der Erstellung der Tabelle bereitgestellt wurde. In der Regel wird dieser geschrieben, wenn ein Crawler ausgeführt wird, und gibt das Format der Quelldaten an.

**Letzte Aktualisierung**  
Die Uhrzeit und das Datum (UTC), zu denen diese Tabelle im Data Catalog aktualisiert wurde.

**Datum hinzugefügt**  
Die Uhrzeit und das Datum (UTC), zu denen diese Tabelle dem Data Catalog hinzugefügt wurde.

**Als veraltet gekennzeichnet**  
Wenn AWS Glue erkennt, dass eine Tabelle im Data Catalog im ursprünglichen Datenspeicher nicht mehr existiert, markiert es die Tabelle im Data Catalog als veraltet. Wenn Sie einen Auftrag ausführen, der auf eine veraltete Tabelle verweist, kann der Auftrag fehlschlagen. Bearbeiten Sie Aufträge, die auf veraltete Tabellen verweisen, um sie als Quellen und Ziele zu entfernen. Wir empfehlen, dass Sie veraltete Tabellen löschen, wenn sie nicht mehr benötigt werden. 

**Connection (Verbindung)**  
Wenn AWS Glue eine Verbindung mit dem Datenspeicher benötigt, wird der Name der Verbindung mit der Tabelle verknüpft.

### Anzeigen und Verwalten von Tabellendetails
<a name="console-tables-details"></a>

Um die Details einer vorhandenen Tabelle anzuzeigen, wählen Sie den Tabellennamen in der Liste und dann **Action, View details** (Aktion, Details anzeigen) aus.

Die Tabellendetails umfassen Eigenschaften der Tabelle und deren Schema. Diese Ansicht zeigt das Schema der Tabelle an, einschließlich Spaltennamen in der Reihenfolge, die für die Tabelle, Datentypen und Schlüsselspalten für Partitionen definiert wurde. Wenn eine Spalte ein komplexer Typ ist, können Sie **View properties** (Eigenschaften anzeigen) auswählen, um Details der Struktur dieses Felds anzuzeigen, wie im folgenden Beispiel dargestellt:

```
{
"StorageDescriptor": 
    {
      "cols": {
         "FieldSchema": [
           {
             "name": "primary-1",
             "type": "CHAR",
             "comment": ""
           },
           {
             "name": "second ",
             "type": "STRING",
             "comment": ""
           }
         ]
      },
      "location": "s3://aws-logs-111122223333-us-east-1",
      "inputFormat": "",
      "outputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
      "compressed": "false", 
      "numBuckets": "0",
      "SerDeInfo": {
           "name": "",
           "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
           "parameters": {
               "separatorChar": "|"
            }
      },
      "bucketCols": [],
      "sortCols": [],
      "parameters": {},
      "SkewedInfo": {},
      "storedAsSubDirectories": "false"
    },
    "parameters": {
       "classification": "csv"
    }
}
```

Weitere Informationen zu den Eigenschaften einer Tabelle, wie z. B. `StorageDescriptor`, finden Sie unter [StorageDescriptor Struktur](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-StorageDescriptor).

Wenn Sie das Schema einer Tabelle ändern möchten, wählen Sie **Edit schema** (Schema bearbeiten) aus, um Spalten hinzuzufügen oder zu löschen und Spaltennamen und Datentypen zu ändern.

 Um verschiedene Versionen einer Tabelle, einschließlich ihres Schemas, zu vergleichen, wählen Sie **Versionen vergleichen**, um einen side-by-side Vergleich zweier Versionen des Schemas für eine Tabelle anzuzeigen. Weitere Informationen finden Sie unter [Vergleichen von Tabellenschemaversionen](#console-tables-schema-comparison). 

Zum Anzeigen der Dateien, aus denen eine Amazon-S3-Partition besteht, wählen Sie **View Partition (Partition anzeigen)** aus. Bei Amazon-S3-Tabellen zeigt die **Schlüssel**-Spalte die Partitionsschlüssel an, die verwendet werden, um die Tabelle im Quelldatenspeicher zu partitionieren. Die Partitionierung ist eine Möglichkeit, eine Tabelle auf der Grundlage der Werte einer Schlüsselspalte, wie Datum, Ort oder Abteilung, in verwandte Teile zu unterteilen. Für weitere Informationen zu Partitionen, suchen Sie im Internet nach Informationen über "Hive-Partitionierung".

**Anmerkung**  
 step-by-stepAnleitungen zum Anzeigen der Details einer Tabelle finden Sie in der Konsole im Tutorial „**Tabelle erkunden**“.

### Vergleichen von Tabellenschemaversionen
<a name="console-tables-schema-comparison"></a>

 Wenn Sie zwei Versionen von Tabellenschemas vergleichen, können Sie Änderungen an verschachtelten Zeilen vergleichen, indem Sie verschachtelte Zeilen erweitern und reduzieren, Schemas zweier Versionen side-by-side vergleichen und Tabelleneigenschaften anzeigen. side-by-side 

 Wie Sie Versionen vergleichen 

1.  Wählen Sie in der AWS Glue-Konsole **Tabellen**, dann **Aktionen** und dann **Versionen vergleichen** aus.   
![\[Der Screenshot zeigt die Schaltfläche Aktionen, wenn sie ausgewählt ist. Im Drop-down-Menü wird die Option Versionen vergleichen angezeigt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/catalog-table-compare-versions.png)

1.  Wählen Sie eine Version, die Sie vergleichen möchten, indem Sie das Dropdown-Menü wählen. Beim Vergleich von Schemas ist die Registerkarte Schema orange hervorgehoben. 

1.  Wenn Sie Tabellen zwischen zwei Versionen vergleichen, werden Ihnen die Tabellenschemas auf der linken und rechten Seite des Bildschirms angezeigt. Auf diese Weise können Sie Änderungen visuell ermitteln, indem Sie die Felder Spaltenname, Datentyp, Schlüssel und Kommentar vergleichen. side-by-side Wenn es eine Änderung gibt, zeigt ein farbiges Symbol die Art der vorgenommenen Änderung an. 
   +  Gelöscht – ein rotes Symbol zeigt an, wo die Spalte aus einer früheren Version des Tabellenschemas entfernt wurde. 
   +  Bearbeitet oder Verschoben – Ein blaues Symbol zeigt an, wo die Spalte in einer neueren Version des Tabellenschemas geändert oder verschoben wurde. 
   +  Gelöscht – ein rotes Symbol zeigt an, wo die Spalte aus einer früheren Version des Tabellenschemas entfernt wurde. 
   +  Verschachtelte Änderungen – Ein gelbes Symbol zeigt an, wo die verschachtelte Spalte Änderungen enthält. Wählen Sie die Spalte aus, die erweitert werden soll, und sehen Sie sich die Spalten an, die entweder gelöscht, bearbeitet, verschoben oder hinzugefügt wurden.   
![\[Der Screenshot zeigt den Vergleich des Tabellenschemas zwischen zwei Versionen. Auf der linken Seite befindet sich die ältere Version. Auf der rechten Seite befindet sich die neuere Version. Das Löschsymbol befindet sich neben einer Spalte, die aus der älteren Version entfernt wurde und in der neueren Version nicht mehr enthalten ist.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/catalog-table-version-comparison.png)

1.  Verwenden Sie die Suchleiste für Filterfelder, um Felder anzuzeigen, die auf den Zeichen basieren, die Sie hier eingeben. Wenn Sie in einer der Tabellenversionen einen Spaltennamen eingeben, werden die gefilterten Felder in beiden Tabellenversionen angezeigt, um Ihnen zu zeigen, wo die Änderungen vorgenommen wurden. 

1.  Um Eigenschaften zu vergleichen, wählen Sie die **Registerkarte der Eigenschaften**. 

1.  Um den Versionsvergleich zu beenden, wählen Sie **Vergleich beenden**, um zur Liste der Tabellen zurückzukehren. 

# Erstellen von Partitionsindizes
<a name="partition-indexes"></a>

Im Laufe der Zeit werden Hunderttausende von Partitionen zu einer Tabelle hinzugefügt. Die [GetPartitions API](https://docs.aws.amazon.com/glue/latest/webapi/API_GetPartitions.html) wird verwendet, um die Partitionen in der Tabelle abzurufen. Die API gibt Partitionen zurück, die mit dem Ausdruck in der Anforderung übereinstimmen.

Nehmen wir eine *sales\$1data*-Tabelle als Beispiel, die von den Schlüsseln *Country*, *Category*, *Year*, *Month* und *creationDate* partitioniert wird. Wenn Sie Verkaufsdaten für alle Artikel erhalten möchten, die in der Kategorie *Bücher* im Jahr 2020 nach *2020-08-15* verkauft wurden, müssen Sie eine `GetPartitions`-Anforderung mit dem Ausdruck "Category = 'Bücher' und creationDate > '2020-08-15'" im Datenkatalog stellen.

Wenn keine Partitionsindizes in der Tabelle vorhanden sind, lädt AWS Glue alle Partitionen der Tabelle und filtert dann die geladenen Partitionen mithilfe des Abfrageausdrucks, der vom Benutzer in der `GetPartitions`-Anforderung bereitgestellt wird. Die Ausführung der Abfrage nimmt mehr Zeit in Anspruch, wenn die Anzahl der Partitionen in einer Tabelle ohne Indizes zunimmt. Mit einem Index versucht die `GetPartitions`-Abfrage eine Teilmenge der Partitionen abzurufen, statt alle Partitionen in der Tabelle zu laden.

**Topics**
+ [Informationen zu Partitionsindizes](#partition-index-1)
+ [Erstellen einer Tabelle mit Partitionsindizes](#partition-index-creating-table)
+ [Hinzufügen eines Partitionsindexes zu einer vorhandenen Tabelle](#partition-index-existing-table)
+ [Beschreiben von Partitionsindizes in einer Tabelle](#partition-index-describing)
+ [Einschränkungen bei der Verwendung von Partitionsindizes](#partition-index-limitations)
+ [Verwenden von Indizes für einen optimierten Anruf GetPartitions](#partition-index-getpartitions)
+ [Integration mit Engines](#partition-index-integration-engines)

## Informationen zu Partitionsindizes
<a name="partition-index-1"></a>

Wenn Sie einen Partitionsindex erstellen, geben Sie eine Liste der Partitionsschlüssel an, die bereits in einer bestimmten Tabelle vorhanden sind. Partitionsindex ist eine untergeordnete Liste der Partitionsschlüssel, die in der Tabelle definiert sind. Ein Partitionsindex kann auf jeder Permutation von Partitionsschlüsseln erstellt werden, die in der Tabelle definiert sind. Für die obige *sales\$1data*-Tabelle lauten die möglichen Indizes (country, category, creationDate), (country, category, year), (country, category), (country), (category, country, year, month) usw.

Der Data Catalog verkettet die Partitionswerte in der Reihenfolge, die zum Zeitpunkt der Indexerstellung angegeben wurde. Der Index wird konsistent erstellt, wenn Partitionen zur Tabelle hinzugefügt werden. Indizes können für die Spaltentypen Zeichenfolge (string, char und varchar), Numerisch (int, bigint, long, tinyint und smallint) und Datum (jjjj-MM-tt) erstellt werden. 

**Unterstützte Datentypen**
+ Datum – Ein Datum im ISO-Format, z. B. `YYYY-MM-DD`. Beispiel: Datum `2020-08-15`. Das Format verwendet Bindestriche (‐) zur Trennung von Jahr, Monat und Tag. Der zulässige Bereich für Datumsangaben für die Indizierung reicht von `0000-01-01` bis `9999-12-31`.
+ Zeichenfolge – Ein Zeichenfolgenliteral, das in einfache oder doppelte Anführungszeichen eingeschlossen ist. 
+ Char – Zeichendaten mit fester Länge, die zwischen 1 und 255 Zeichen liegen muss, z. B char(10).
+ Varchar – Zeichendaten mit variabler Länge, die zwischen 1 und 65 535 Zeichen liegen muss, z. B varchar(10).
+ Numerisch – int, bigint, long, tinyint und smallint

Indizes für die Datentypen Numerisch, Zeichenfolge und Datum unterstützen =, >, >=, <, <= und between-Operatoren. Die Indexierungslösung unterstützt derzeit nur den logischen Operator `AND`. Subausdrücke mit den Operatoren „LIKE“, „IN“, „OR“ und „NOT“ werden im Ausdruck zum Filtern mit einem Index ignoriert. Die Filterung für den ignorierten Subausdruck erfolgt auf den Partitionen, die nach dem Anwenden der Indexfilterung abgerufen werden.

Für jede Partition, die einer Tabelle hinzugefügt wird, wird ein entsprechendes Indexelement erstellt. Für eine Tabelle mit 'n'-Partitionen führt 1 Partitionsindex zu 'n' Partitionsindex-Elementen. Der Partitionsindex „m“ in derselben Tabelle führt zu „m\$1n“ Partitionsindex-Elementen. Jedes Partitionsindexelement wird entsprechend der aktuellen AWS Glue-Preisrichtlinie für Data-Catalog-Speicher abgerechnet. Weitere Informationen zur Preisgestaltung von Speicherobjekten finden Sie unter [AWS Glue-Preise](https://aws.amazon.com/glue/pricing/).

## Erstellen einer Tabelle mit Partitionsindizes
<a name="partition-index-creating-table"></a>

Sie können einen Partitionsindex während der Tabellenerstellung erstellen. Die `CreateTable`-Anforderung nimmt eine Liste von [`PartitionIndex`-Objekten](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-PartitionIndex) als Eingabe. Für eine bestimmte Tabelle können maximal 3 Partitionsindizes erstellt werden. Jeder Partitionsindex erfordert einen Namen und eine Liste von `partitionKeys`, die für die Tabelle definiert ist. Erstellte Indizes für eine Tabelle können mit der [`GetPartitionIndexes`-API](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-GetPartitionIndexes) abgerufen werden

## Hinzufügen eines Partitionsindexes zu einer vorhandenen Tabelle
<a name="partition-index-existing-table"></a>

Um einen Partitionsindex einer vorhandenen Tabelle hinzuzufügen, verwenden Sie die `CreatePartitionIndex`-Operation. Sie können einen `PartitionIndex` pro `CreatePartitionIndex`-Operation erstellen. Das Hinzufügen eines Index wirkt sich nicht auf die Verfügbarkeit einer Tabelle aus, da die Tabelle während der Erstellung von Indizes weiterhin verfügbar ist.

Der Indexstatus für eine hinzugefügte Partition wird auf CREATING gesetzt und die Erstellung der Indexdaten wird gestartet. Wenn der Prozess zum Erstellen der Indizes erfolgreich ist, wird der indexStatus auf ACTIVE aktualisiert, und für einen nicht erfolgreichen Prozess wird der Indexstatus auf FAILED aktualisiert. Die Indexerstellung kann aus mehreren Gründen fehlschlagen, und Sie können die `GetPartitionIndexes`-Operation verwenden, um die Fehlerdetails abzurufen. Mögliche Fehler:
+ ENCRYPTED\$1PARTITION\$1ERROR – Die Indexerstellung für eine Tabelle mit verschlüsselten Partitionen wird nicht unterstützt.
+ INVALID\$1PARTITION\$1TYPE\$1DATA\$1ERROR – Wird beobachtet, wenn der `partitionKey`-Wert kein gültiger Wert für den entsprechenden `partitionKey`-Datentyp ist. Beispiel: ein `partitionKey` mit dem Datentyp 'int' hat einen Wert 'foo'.
+ MISSING\$1PARTITION\$1VALUE\$1ERROR – Tritt auf, wenn der `partitionValue` für einen `indexedKey` nicht vorhanden ist. Dies kann passieren, wenn eine Tabelle nicht konsistent partitioniert wird.
+ UNSUPPORTED\$1PARTITION\$1CHARACTER\$1ERROR – Wird beobachtet, wenn der Wert für einen indizierten Partitionsschlüssel die Zeichen \$1u0000, \$1u0001 oder \$1u0002 enthält
+ INTERNAL\$1ERROR – Beim Erstellen von Indizes ist ein interner Fehler aufgetreten. 

## Beschreiben von Partitionsindizes in einer Tabelle
<a name="partition-index-describing"></a>

Verwenden Sie die `GetPartitionIndexes`-Operation, um die für eine Tabelle erstellten Partitionsindizes abzurufen. Die Antwort zeigt alle Indizes der Tabelle, zusammen mit deren jeweiligem aktuellen Status (dem `IndexStatus`).

Der `IndexStatus` für einen Partitionsindex ist einer der Folgenden:
+ `CREATING` – Der Index wird derzeit erstellt und ist noch nicht verfügbar.
+ `ACTIVE` – Der Index ist jetzt verfügbar. Anforderungen können den Index verwenden, um eine optimierte Abfrage auszuführen.
+ `DELETING` – Der Index wird derzeit gelöscht und kann nicht länger verwendet werden. Ein Index im aktiven Zustand kann mit der `DeletePartitionIndex`-Anforderung gelöscht werden, die den Status von AKTIV zu LÖSCHEN ändert.
+ `FAILED` – Die Indexerstellung für eine vorhandene Tabelle ist fehlgeschlagen. In jeder Tabelle werden die letzten 10 fehlgeschlagenen Indizes gespeichert.

Die möglichen Zustandsübergänge für Indizes, die für eine vorhandene Tabelle erstellt wurden, sind:
+ ERSTELLEN → AKTIV → LÖSCHEN
+ ERSTELLEN → FEHLGESCHLAGEN

## Einschränkungen bei der Verwendung von Partitionsindizes
<a name="partition-index-limitations"></a>

Nachdem Sie einen Partitionsindex erstellt haben, beachten Sie die folgenden Änderungen an der Tabellen- und Partitionsfunktionalität:

**Neue Partitionserstellung (nach Hinzufügen des Index)**  
Nachdem ein Partitionsindex für eine Tabelle erstellt wurde, werden alle neuen Partitionen, die der Tabelle hinzugefügt wurden, für die Datentypüberprüfungen für indizierte Schlüssel validiert. Der Partitionswert der indizierten Schlüssel wird für das Datentypformat validiert. Wenn die Datentypprüfung fehlschlägt, schlägt der Vorgang zum Erstellen der Partition fehl. Das Erstellen einer neuen Partition mit dem Wert JAHR als „foo“ schlägt für die *sales\$1data*-Tabelle fehl, wenn ein Index für die Schlüssel (Kategorie, Jahr) erstellt wird, wobei die Kategorie vom Typ `string` und Jahr vom Typ `int` ist.

Nachdem Indizes aktiviert sind, schlägt das Hinzufügen von Partitionen mit indizierten Schlüsselwerten mit den Zeichen U\$10000, U\$100001 und U\$10002 fehl.

**Tabellenaktualisierungen**  
Sobald ein Partitionsindex für eine Tabelle erstellt wurde, können Sie die Partitionsschlüsselnamen für vorhandene Partitionsschlüssel nicht ändern. Das gleiche gilt für den Typ oder die Reihenfolge der Schlüssel, die mit dem Index registriert sind.

## Verwenden von Indizes für einen optimierten Anruf GetPartitions
<a name="partition-index-getpartitions"></a>

Wenn Sie `GetPartitions` für eine Tabelle mit einem Index verwenden, können Sie einen Ausdruck einschließen, und wenn möglich, verwendet der Data Catalog einen Index. Der erste Schlüssel des Indexes sollte im Ausdruck für die Indizes übergeben werden, die beim Filtern verwendet werden sollen. Die Indexoptimierung in der Filterung wird als Best Effort angewendet. Der Data Catalog versucht, die Indexoptimierung so weit wie möglich zu verwenden, aber im Falle eines fehlenden Index oder nicht unterstützten Operators fällt er auf die vorhandene Implementierung des Ladens aller Partitionen zurück. 

Fügen wir für die *sales\$1data*-Tabelle oben den Index [Land, Kategorie, Jahr] hinzu. Wenn „Country“ im Ausdruck nicht übergeben wird, kann der registrierte Index keine Partitionen mithilfe von Indizes filtern. Sie können bis zu 3 Indizes hinzufügen, um verschiedene Abfragemuster zu unterstützen.

Nehmen wir einige Beispielausdrücke und sehen, wie Indizes darauf funktionieren:


| Ausdrücke | Verwendung des Index | 
| --- | --- | 
|  Land = „USA“  |  Index wird verwendet, um Partitionen zu filtern.  | 
|  Land = 'USA' und Kategorie = 'Schuhe'  |  Index wird verwendet, um Partitionen zu filtern.  | 
|  Kategorie = 'Schuhe'  |  Indizes werden nicht verwendet, da „Land“ nicht im Ausdruck angegeben wird. Alle Partitionen werden geladen, um eine Antwort zurückzugeben.  | 
|  Land = 'USA' und Kategorie = 'Schuhe' und Jahr > '2018'  |  Index wird verwendet, um Partitionen zu filtern.  | 
|  Land = 'USA' und Kategorie = 'Schuhe' und Jahr > '2018' und Monat = 2  |  Index wird verwendet, um alle Partitionen abzurufen; Land = „USA“ und Kategorie = „Schuhe“ und Jahr > 2018. Anschließend wird nach dem Ausdruck 'Monat' gefiltert.  | 
|  Land = 'USA' UND Kategorie = 'Schuhe' ODER Jahr > '2018'  |  Indizes werden nicht verwendet, da ein `OR`-Operator im Ausdruck vorhanden ist.  | 
|  Land = 'USA' UND Kategorie = 'Schuhe' UND (Jahr > 2017 ODER Jahr = '2018')  |  Index wird verwendet, um alle Partitionen mit Land = 'USA' und Kategorie = 'Schuhe' abzurufen. Anschließend wird nach dem Ausdruck 'Jahr' gefiltert.  | 
|  Land ist ('USA', 'GB') UND Kategorie = 'Schuhe'  |  Indizes werden nicht zum Filtern verwendet, da der `IN`-Operator derzeit nicht unterstützt wird.  | 
|  Land = 'USA' UND Kategorie in ('Schuhe', 'Bücher')  |  Index wird verwendet, um alle Partitionen mit Land = "USA" abzurufen, und dann wird eine Filterung nach dem Kategorieausdruck durchgeführt.  | 
|  Country = 'USA' UND Category in ('Schuhe', 'Bücher') UND (creationDate > '2023-9-01')  |  Index wird verwendet, um alle Partitionen mit country = "USA" mit creationDate > '2023-9-01' abzurufen, und dann wird eine Filterung nach dem Kategorieausdruck durchgeführt.  | 

## Integration mit Engines
<a name="partition-index-integration-engines"></a>

Redshift Spectrum, Amazon EMR und AWS Glue ETL Spark DataFrames können Indizes zum Abrufen von Partitionen verwenden, nachdem sich die Indizes im Status AKTIV befinden. AWS Glue [Athena](https://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html#glue-best-practices-partition-index) und [AWS GlueETL Dynamic Frames](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-cat-predicates) erfordern das Ausführen zusätzlicher Schritte, um Indizes zur Verbesserung der Abfragen zu verwenden.

### Aktivieren der Partitionsfilterung
<a name="enable-partition-filtering-athena"></a>

Um die Partitionsfilterung in Athena zu aktivieren, müssen Sie die Tabelleneigenschaften wie folgt aktualisieren:

1. **Wählen Sie in der AWS Glue Konsole unter **Datenkatalog** die Option Tabellen aus.**

1. Wählen Sie eine -Tabelle aus.

1. Wählen Sie unter **Aktionen** die Option **Tabelle bearbeiten** aus.

1. Fügen Sie unter **Tabelleneigenschaften** Folgendes hinzu:
   + Schlüssel — `partition_filtering.enabled`
   + Wert — `true`

1. Wählen Sie **Anwenden** aus.

Alternativ können Sie diesen Parameter festlegen, indem Sie eine [ALTER TABLE SET PROPERTIES](https://docs.aws.amazon.com/athena/latest/ug/alter-table-set-tblproperties.html)-Abfrage in Athena ausführen.

```
ALTER TABLE partition_index.table_with_index
SET TBLPROPERTIES ('partition_filtering.enabled' = 'true')
```

## Aktualisieren von manuell erstellten Data-Catalog-Tabellen mit Crawlern
<a name="update-manual-tables"></a>

Möglicherweise möchten Sie AWS Glue Data Catalog Tabellen manuell erstellen und sie dann mit AWS Glue Crawlern auf dem neuesten Stand halten. Crawler, die nach einem Zeitplan ausgeführt werden, können neue Partitionen hinzufügen und die Tabellen mit allen Schemaänderungen aktualisieren. Dies gilt auch für Tabellen, die aus aus einem Apache Hive-Metastore migriert wurden.

Hierzu geben Sie beim Definieren eines Crawlers statt eines oder mehrerer Datenspeicher als Quelle eines Crawls eine oder mehrere vorhandene Data-Catalog-Tabellen an. Der Crawler durchsucht dann die durch die Katalogtabellen angegebenen Datenspeicher. In diesem Fall werden keine neuen Tabellen erstellt. Stattdessen werden Ihre manuell erstellten Tabellen aktualisiert.

Es folgen weitere mögliche Gründe dafür, Katalogtabellen manuell zu erstellen und Katalogtabellen als Crawler-Quelle anzugeben.
+ Sie möchten den Katalog-Tabellennamen wählen und dies nicht dem Benennungsalgorithmus der Katalogtabelle überlassen.
+ Sie möchten verhindern, dass neue Tabellen erstellt werden, falls Dateien mit einem die Paritionserkennung störenden Format versehentlich im Pfad der Datenquelle gespeichert werden.

Weitere Informationen finden Sie unter [Schritt 2: Auswahl von Datenquellen und Classifier](define-crawler-choose-data-sources.md).

## Eigenschaften der Data-Catalog-Tabelle
<a name="table-properties"></a>

 Tabelleneigenschaften oder Parameter, wie sie in der AWS CLI genannt werden, sind nicht validierte Schlüssel- und Wertezeichenfolgen. Sie können Ihre eigenen Eigenschaften für die Tabelle festlegen, um die Verwendung des Data Catalog außerhalb von AWS Glue zu unterstützen. Andere Dienste, die den Datenkatalog verwenden, können dies ebenfalls tun. AWS Glue legt einige Tabelleneigenschaften fest, wenn Jobs oder Crawler ausgeführt werden. Sofern nicht anders beschrieben, sind diese Eigenschaften für den internen Gebrauch bestimmt. Wir unterstützen nicht, dass sie in ihrer aktuellen Form fortbestehen, und wir unterstützen auch nicht das Produktverhalten, wenn diese Eigenschaften manuell geändert werden. 

 Weitere Hinweise zu Tabelleneigenschaften, die von AWS Glue Crawlern festgelegt wurden, finden Sie unter. [Parameter, die vom Crawler in Data-Catalog-Tabellen festgelegt wurden](table-properties-crawler.md) 

# Integration mit Amazon S3 S3-Tabellen
<a name="glue-federation-s3tables"></a>

AWS Glue Die Datenkatalogintegration mit Amazon S3 S3-Tabellen ermöglicht es Ihnen, S3-Tabellen mithilfe eines einzigen Katalogs zu ermitteln, abzufragen und mit Daten in Amazon S3 S3-Datenseen zu verknüpfen. Wenn Sie S3-Tabellen in den Datenkatalog integrieren, erstellt der Service eine föderierte Katalogstruktur, die Ressourcen von S3 Tables AWS Glue Katalogobjekten zuordnet:
+ Ein S3-Tabellen-Bucket wird zu einem Katalog im Datenkatalog
+ Ein S3-Namespace wird zu einer Datenbank AWS Glue 
+ Aus einer S3-Tabelle wird eine AWS Glue Tabelle

## Zugriffskontrollen
<a name="s3-tables-access-controls"></a>

Der Datenkatalog unterstützt zwei Zugriffskontrollmodi für die Integration von S3-Tabellen:
+ **IAM-Zugriffskontrolle** — Verwendet IAM-Richtlinien, um den Zugriff auf S3-Tabellen und den Datenkatalog zu steuern. Bei diesem Ansatz benötigen Sie IAM-Berechtigungen sowohl für S3-Tabellenressourcen als auch für Datenkatalogobjekte, um auf Ressourcen zugreifen zu können.
+ **AWS Lake Formation Zugriffskontrolle** — Verwendet zusätzlich zu den AWS Glue IAM-Berechtigungen auch AWS Lake Formation Zuschüsse, um den Zugriff auf S3-Tabellen über den Datenkatalog zu steuern. In diesem Modus benötigen Principals IAM-Berechtigungen, um mit dem Datenkatalog zu interagieren, und AWS Lake Formation Zuweisungen bestimmen, auf welche Katalogressourcen (Datenbanken, Tabellen, Spalten, Zeilen) der Principal zugreifen kann. Dieser Modus unterstützt sowohl eine grobe Zugriffskontrolle (Berechtigungen auf Datenbank- und Tabellenebene) als auch eine detaillierte Zugriffskontrolle (Sicherheit auf Spalten- und Zeilenebene). Wenn eine registrierte Rolle konfiguriert und der Verkauf von Anmeldeinformationen aktiviert ist, sind für den Prinzipal keine IAM-Berechtigungen für S3 Tables erforderlich, da Anmeldeinformationen im Namen des Prinzipals verkauft werden, der die registrierte Rolle verwendet. AWS Lake Formation AWS Lake Formation Die Zugriffskontrolle unterstützt auch den Verkauf von Anmeldeinformationen für Analyse-Engines von Drittanbietern. Weitere Informationen finden Sie unter [Erstellen eines S3-Tables-Katalogs](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html) im *AWS Lake Formation Entwicklerhandbuch*.

Sie können zwischen den Zugriffskontrollmodi migrieren, wenn sich Ihre Anforderungen ändern.

## Kataloghierarchie für automatisches Mounten
<a name="s3-tables-catalog-hierarchy"></a>

Wenn Sie S3-Tabellen mithilfe der Amazon S3 S3-Managementkonsole in den Datenkatalog integrieren, erstellt die Konsole einen Verbundkatalog, der `s3tablescatalog` im Datenkatalog in Ihrem Konto in dieser AWS Region aufgerufen wird. Dieser Verbundkatalog dient als übergeordneter Katalog für alle bestehenden und future S3-Tabellen-Buckets in diesem Konto und dieser Region. Die Integration ordnet Amazon S3 S3-Tabellen-Bucket-Ressourcen in der folgenden Hierarchie zu:
+ **Verbundkatalog** — `s3tablescatalog` (automatisch erstellt)
+ **Untergeordnete Kataloge** — Jeder S3-Tabellen-Bucket wird zu einem untergeordneten Katalog unter `s3tablescatalog`
+ **Datenbanken** — Jeder S3-Namespace innerhalb eines Tabellen-Buckets wird zu einer Datenbank
+ **Tabellen** — Jede S3-Tabelle innerhalb eines Namespace wird zu einer Tabelle

Wenn Sie beispielsweise einen S3-Tabellen-Bucket namens „analytics-bucket“ mit einem Namespace „sales“ haben, der eine Tabelle „transactions“ enthält, wäre der vollständige Pfad im Datenkatalog: `s3tablescatalog/analytics-bucket/sales/transactions`

Diese vierteilige Hierarchie gilt für Szenarien mit demselben Konto, in denen sich S3-Tabellen und der Datenkatalog im selben Konto befinden. AWS Für kontenübergreifende Szenarien hängen Sie einzelne S3-Tabellen-Buckets manuell im Datenkatalog ein, wodurch eine dreiteilige Hierarchie entsteht.

## Unterstützte Regionen
<a name="s3-tables-supported-regions"></a>

Die Integration von S3-Tabellen in den Datenkatalog ist in den folgenden Regionen verfügbar: AWS 


| Regionscode | Name der Region | 
| --- | --- | 
| us-east-1 | USA Ost (Nord-Virginia) | 
| us-east-2 | USA Ost (Ohio) | 
| us-west-1 | USA West (Nordkalifornien) | 
| us-west-2 | USA West (Oregon) | 
| af-south-1 | Afrika (Kapstadt) | 
| ap-east-1 | Asien-Pazifik (Hongkong) | 
| ap-east-2 | Asien-Pazifik (Taipeh) | 
| ap-northeast-1 | Asien-Pazifik (Tokio) | 
| ap-northeast-2 | Asien-Pazifik (Seoul) | 
| ap-northeast-3 | Asien-Pazifik (Osaka) | 
| ap-south-1 | Asien-Pazifik (Mumbai) | 
| ap-south-2 | Asien-Pazifik (Hyderabad) | 
| ap-southeast-1 | Asien-Pazifik (Singapur) | 
| ap-southeast-2 | Asien-Pazifik (Sydney) | 
| ap-southeast-3 | Asien-Pazifik (Jakarta) | 
| ap-southeast-4 | Asien-Pazifik (Melbourne) | 
| ap-southeast-5 | Asien-Pazifik (Malaysia) | 
| ap-southeast-6 | Asien-Pazifik (Neuseeland) | 
| ap-southeast-7 | Asien-Pazifik (Thailand) | 
| ca-central-1 | Kanada (Zentral) | 
| ca-west-1 | Kanada West (Calgary) | 
| eu-central-1 | Europa (Frankfurt) | 
| eu-central-2 | Europa (Zürich) | 
| eu-north-1 | Europa (Stockholm) | 
| eu-south-1 | Europa (Milan) | 
| eu-south-2 | Europa (Spain) | 
| eu-west-1 | Europa (Irland) | 
| eu-west-2 | Europa (London) | 
| eu-west-3 | Europa (Paris) | 
| il-central-1 | Israel (Tel Aviv) | 
| mx-central-1 | Mexiko (Zentral) | 
| sa-east-1 | Südamerika (São Paulo) | 

**Topics**
+ [Zugriffskontrollen](#s3-tables-access-controls)
+ [Kataloghierarchie für automatisches Mounten](#s3-tables-catalog-hierarchy)
+ [Unterstützte Regionen](#s3-tables-supported-regions)
+ [Voraussetzungen](s3tables-catalog-prerequisites.md)
+ [Aktivierung der Integration von S3-Tabellen mit dem Datenkatalog](enable-s3-tables-catalog-integration.md)
+ [Hinzufügen von Datenbanken und Tabellen zum S3 Tables-Katalog](create-databases-tables-s3-catalog.md)
+ [Katalogobjekte für S3-Tabellen gemeinsam nutzen](share-s3-tables-catalog.md)
+ [Verwaltung der Integration von S3-Tabellen](manage-s3-tables-catalog-integration.md)

# Voraussetzungen
<a name="s3tables-catalog-prerequisites"></a>

Bevor Sie einen Verbundkatalog für S3-Tabellen im AWS Glue Datenkatalog erstellen, stellen Sie sicher, dass Ihr IAM-Prinzipal (Benutzer oder Rolle) über die erforderlichen Berechtigungen verfügt.

## Erforderliche IAM-Berechtigungen
<a name="s3tables-required-iam-permissions"></a>

Ihr IAM-Prinzipal benötigt die folgenden Berechtigungen, um die Integration von S3 Tables zu aktivieren:

**AWS Glue Berechtigungen**:
+ `glue:CreateCatalog`— Erforderlich, um den `s3tablescatalog` Verbundkatalog zu erstellen
+ `glue:GetCatalog`— Erforderlich, um die Katalogdetails anzuzeigen
+ `glue:GetDatabase`— Erforderlich, um S3-Namespaces als Datenbanken anzuzeigen
+ `glue:GetTable`— Erforderlich, um S3-Tabellen anzuzeigen
+ `glue:passConnection`— Gewährt dem aufrufenden Principal das Recht, die `aws:s3tables` Verbindung an den AWS Glue Dienst zu delegieren

**Berechtigungen für S3-Tabellen** (für die IAM-Zugriffskontrolle):
+ `s3tables:CreateTableBucket`
+ `s3tables:GetTableBucket`
+ `s3tables:CreateNamespace`
+ `s3tables:GetNamespace`
+ `s3tables:ListNamespaces`
+ `s3tables:CreateTable`
+ `s3tables:GetTable`
+ `s3tables:ListTables`
+ `s3tables:UpdateTableMetadataLocation`
+ `s3tables:GetTableMetadataLocation`
+ `s3tables:GetTableData`
+ `s3tables:PutTableData`

## Beispiel für IAM-Richtlinien
<a name="s3tables-iam-policy-example"></a>

Die folgende IAM-Richtlinie bietet die Mindestberechtigungen, die erforderlich sind, um die Integration von S3 Tables mit dem Datenkatalog im IAM-Modus zu ermöglichen:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "GlueDataCatalogPermissions",
      "Effect": "Allow",
      "Action": [
        "glue:CreateCatalog",
        "glue:GetCatalog",
        "glue:GetDatabase",
        "glue:GetTable"
      ],
      "Resource": [
        "arn:aws:glue:region:account-id:catalog/s3tablescatalog",
        "arn:aws:glue:region:account-id:database/s3tablescatalog/*/*",
        "arn:aws:glue:region:account-id:table/s3tablescatalog/*/*/*"
      ]
    },
    {
      "Sid": "S3TablesDataAccessPermissions",
      "Effect": "Allow",
      "Action": [
        "s3tables:GetTableBucket",
        "s3tables:GetNamespace",
        "s3tables:GetTable",
        "s3tables:GetTableMetadataLocation",
        "s3tables:GetTableData"
      ],
      "Resource": [
        "arn:aws:s3tables:region:account-id:bucket/*",
        "arn:aws:s3tables:region:account-id:bucket/*/table/*"
      ]
    }
  ]
}
```

# Aktivierung der Integration von S3-Tabellen mit dem Datenkatalog
<a name="enable-s3-tables-catalog-integration"></a>

Sie können die Integration von S3-Tabellen mit dem AWS Glue Datenkatalog über die Amazon S3 S3-Managementkonsole oder aktivieren AWS CLI. Wenn Sie die Integration über die Konsole aktivieren, AWS wird ein Verbundkatalog mit dem Namen `s3tablescatalog` erstellt, der automatisch alle S3-Tabellen-Buckets in Ihrem Konto und Ihrer AWS Region erkennt und einbindet.

## Aktivieren Sie die Integration von S3-Tabellen mithilfe der Amazon S3 S3-Managementkonsole
<a name="enable-s3-tables-console"></a>

1. Öffnen Sie die Amazon S3 S3-Konsole unter [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Wählen Sie im linken Navigationsbereich **Tabellen-Buckets** aus.

1. Wählen Sie **Tabellen-Bucket erstellen** aus.

1. Geben Sie einen **Namen für den Tabellen-Bucket** ein und stellen Sie sicher, dass das Kontrollkästchen **Integration aktivieren** ausgewählt ist.

1. Wählen Sie **Tabellen-Bucket erstellen** aus.

Amazon S3 integriert Ihre Tabellen-Buckets automatisch in dieser Region. Wenn Sie Tabellen-Buckets zum ersten Mal in einer Region integrieren, erstellt Amazon S3 `s3tablescatalog` im Datenkatalog in dieser Region.

Nach der Erstellung des Katalogs werden alle S3-Tabellen-Buckets in Ihrem Konto und Ihrer Region automatisch als untergeordnete Kataloge bereitgestellt. Sie können die Datenbanken (Namespaces) und Tabellen anzeigen, indem Sie im Datenkatalog zum Katalog navigieren.

## Aktivieren Sie die Integration von S3-Tabellen mit AWS CLI
<a name="enable-s3-tables-cli"></a>

Verwenden Sie den `glue create-catalog` Befehl, um den `s3tablescatalog` Katalog zu erstellen.

```
aws glue create-catalog \
  --name "s3tablescatalog" \
  --catalog-input '{
    "Description": "Federated catalog for S3 Tables",
    "FederatedCatalog": {
      "Identifier": "arn:aws:s3tables:region:account-id:bucket/*",
      "ConnectionName": "aws:s3tables"
    },
    "CreateDatabaseDefaultPermissions": [{
      "Principal": {
        "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS"
      },
      "Permissions": ["ALL"]
    }],
    "CreateTableDefaultPermissions": [{
      "Principal": {
        "DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS"
      },
      "Permissions": ["ALL"]
    }]
  }'
```

*region*Ersetzen Sie es durch Ihre AWS Region und *account-id* durch Ihre AWS Konto-ID.

## Überprüfung der Integration
<a name="verify-s3-tables-integration"></a>

Nachdem Sie den Katalog erstellt haben, können Sie überprüfen, ob S3-Tabellen-Buckets bereitgestellt wurden, indem Sie die untergeordneten Kataloge auflisten:

```
aws glue get-catalogs \
  --parent-catalog-id s3tablescatalog
```

# Hinzufügen von Datenbanken und Tabellen zum S3 Tables-Katalog
<a name="create-databases-tables-s3-catalog"></a>

Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen, um Kataloge, Datenbanken und Tabellen im Datenkatalog in Ihrer Region aufzulisten und zu erstellen. Stellen Sie sicher, dass die Integration von S3 Tables in Ihrem AWS Konto und Ihrer Region aktiviert ist.

## Hinzufügen einer Datenbank zum S3 Tables-Katalog
<a name="add-database-s3-tables-catalog"></a>

### Eine Datenbank hinzufügen (Konsole)
<a name="add-database-s3-tables-console"></a>

1. Öffnen Sie die AWS Glue Konsole zu [https://console.aws.amazon.com/glue/Hause](https://console.aws.amazon.com/glue/home).

1. Wählen Sie im linken Navigationsbereich **Datenbanken** aus.

1. Wählen Sie **Datenbank hinzufügen**.

1. Wählen Sie **Glue Database in S3 Tables Federated Catalog**.

1. Geben Sie einen eindeutigen Namen für die Datenbank ein.

1. Wählen Sie den Zielkatalog aus, der einem Tabellen-Bucket in S3-Tabellen zugeordnet ist.

1. Wählen Sie **Datenbank erstellen** aus.

### Eine Datenbank hinzufügen (AWS CLI)
<a name="add-database-s3-tables-cli"></a>

```
aws glue create-database \
  --region region \
  --catalog-id "account-id:s3tablescatalog/my-catalog" \
  --database-input '{"Name": "my-database"}'
```

## Hinzufügen einer Tabelle zum S3 Tables-Katalog
<a name="add-table-s3-tables-catalog"></a>

### Hinzufügen einer Tabelle (Konsole)
<a name="add-table-s3-tables-console"></a>

1. Öffne die AWS Glue Konsole zu [https://console.aws.amazon.com/glue/Hause](https://console.aws.amazon.com/glue/home).

1. Wählen Sie im linken Navigationsbereich **Tables (Tabellen)** aus.

1. Wählen Sie in der Katalog-Dropdown-Liste den entsprechenden S3-Tabellen-Katalog aus.

1. Wählen Sie „**Tabelle hinzufügen**“.

1. Geben Sie einen eindeutigen Namen für Ihre Tabelle ein.

1. Vergewissern Sie sich, dass der richtige S3 Tables-Katalog in der Katalog-Dropdown-Liste ausgewählt ist.

1. Wählen Sie die Datenbank in der Datenbank-Dropdown-Liste aus.

1. Geben Sie das Tabellenschema ein, indem Sie entweder einen JSON-Code eingeben oder jede Spalte einzeln hinzufügen.

1. Wählen Sie **Create table** (Tabelle erstellen) aus.

### Eine Tabelle hinzufügen ()AWS CLI
<a name="add-table-s3-tables-cli"></a>

```
aws glue create-table \
  --region region \
  --catalog-id "account-id:s3tablescatalog/my-catalog" \
  --database-name "my-database" \
  --table-input '{
    "Name": "my-table",
    "Parameters": {
      "classification": "",
      "format": "ICEBERG"
    },
    "StorageDescriptor": {
      "Columns": [
        {"Name": "id", "Type": "int", "Parameters": {}},
        {"Name": "val", "Type": "string", "Parameters": {}}
      ]
    }
  }'
```

# Katalogobjekte für S3-Tabellen gemeinsam nutzen
<a name="share-s3-tables-catalog"></a>

Wenn Sie die IAM-Zugriffskontrolle verwenden, können Sie S3-Tabellen-Katalogobjekte mit anderen Benutzern teilen, indem Sie AWS Glue Ressourcenlinks für die gemeinsame Nutzung derselben Konten verwenden. Für die kontoübergreifende gemeinsame Nutzung können Sie S3-Tabellen-Buckets mit einem anderen AWS Konto teilen, und die IAM-Rolle oder der Benutzer im Empfängerkonto kann mithilfe des gemeinsam genutzten Tabellen-Buckets ein AWS Glue Katalogobjekt erstellen.

## Teilen innerhalb desselben Kontos mithilfe von Ressourcenlinks
<a name="share-s3-tables-resource-links"></a>

Mithilfe von Ressourcenlinks können Sie Verweise auf AWS Glue Datenbanken und Tabellen erstellen`s3tablescatalog`, die in Ihrem AWS Glue Standardkatalog enthalten sind. Dies ist nützlich, um den Datenzugriff zu organisieren oder logische Gruppierungen von Tabellen zu erstellen.

### Erstellen Sie einen Ressourcenlink (Konsole)
<a name="share-s3-tables-resource-link-console"></a>

1. Öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Wählen Sie im Navigationsbereich **Kataloge** aus.

1. Wählen Sie in der **Katalogliste** **s3tablescatalog** aus.

1. Wählen Sie die Tabelle aus, die Sie teilen möchten. `s3tablescatalog`

1. Wählen Sie „**Aktionen**“ und anschließend „**Ressourcenlink erstellen**“.

1. Geben Sie **unter Name des Ressourcenlinks** einen Namen für den Ressourcenlink ein.

1. Wählen Sie für **Zieldatenbank** die Datenbank aus, in der Sie den Ressourcenlink erstellen möchten.

1. (Optional) Geben Sie unter **Description (Beschreibung)** eine Beschreibung ein.

1. Wählen Sie **Erstellen** aus.

Der Ressourcenlink wird in der Zieldatenbank angezeigt und verweist auf die Originaltabelle in`s3tablescatalog`.

### Erstellen Sie Ressourcenlinks (AWS CLI)
<a name="share-s3-tables-resource-link-cli"></a>

Erstellen Sie einen Datenbankressourcen-Link:

```
aws glue create-database \
  --database-name "my-database-resource-link" \
  --database-input '{
    "Name": "sales_data_link",
    "TargetDatabase": {
      "CatalogId": "account-id:s3tablescatalog/analytics-bucket",
      "DatabaseName": "sales"
    }
  }'
```

Erstellen Sie einen Link zu einer Tabellenressource:

```
aws glue create-table \
  --table-name "my-table-resource-link" \
  --table-input '{
    "Name": "sales_data_link",
    "TargetTable": {
      "CatalogId": "account-id:s3tablescatalog/analytics-bucket",
      "DatabaseName": "sales",
      "Name": "transactions"
    }
  }'
```

# Verwaltung der Integration von S3-Tabellen
<a name="manage-s3-tables-catalog-integration"></a>

## Aktivieren AWS Lake Formation
<a name="manage-s3-tables-enable-lf"></a>

Sie können AWS Lake Formation die Option für Ihren S3 Tables-Katalog aktivieren, wenn Sie Ihre Anforderungen an die Datenverwaltung skalieren möchten. AWS Lake Formation bietet Zugriffsberechtigungen im Datenbankstil, um den detaillierten Zugriff zu verwalten, Berechtigungen mithilfe von tagbasierten Zugriffen zu skalieren und Berechtigungen auf der Grundlage von Benutzerattributen wie Gruppenzuordnungen zu Ihren Tabellen in S3-Tabellen zu gewähren.

Rufen Sie die AWS Lake Formation Verwaltungskonsole auf, um Ihren S3 Tables-Katalog AWS Lake Formation zu aktivieren. AWS Glue Weitere Informationen finden Sie unter [Erstellen eines S3-Tables-Katalogs](https://docs.aws.amazon.com/lake-formation/latest/dg/create-s3-tables-catalog.html) im *AWS Lake Formation Entwicklerhandbuch*.

## Löschen Sie die Integration von S3 Tables
<a name="manage-s3-tables-delete-integration"></a>

Sie können die Integration von S3-Tabellen löschen, indem Sie die Katalogintegration im Datenkatalog löschen. Dieser Vorgang löscht nur die Metadaten im Datenkatalog und nicht die Ressourcen in S3-Tabellen.

Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen zum Auflisten, Bearbeiten und Löschen von Katalogobjekten in AWS Glue verfügen.

### Integration löschen (Konsole)
<a name="delete-s3-tables-console"></a>

1. Öffne die AWS Glue Konsole zu [https://console.aws.amazon.com/glue/Hause](https://console.aws.amazon.com/glue/home).

1. Wählen Sie im Navigationsbereich **Kataloge** aus.

1. Wählen Sie in der **Katalogliste** **s3tablescatalog** aus.

1. Wählen Sie **Löschen** aus.

1. Vergewissern Sie sich, dass beim Löschen des Katalogs auch alle zugehörigen Katalogobjekte im Datenkatalog gelöscht werden.

1. Wählen Sie **Löschen** aus.

### Integration löschen ()AWS CLI
<a name="delete-s3-tables-cli"></a>

```
aws glue delete-catalog \
  --region region \
  --catalog-id "s3tablescatalog"
```

# Integration mit anderen AWS Diensten
<a name="populate-dc-other-services"></a>

 Sie können zwar AWS-Glue-Crawler s verwenden, um sie zu füllen AWS Glue Data Catalog, aber es gibt mehrere AWS Dienste, die sich automatisch in den Katalog integrieren und ihn für Sie füllen können. In den folgenden Abschnitten finden Sie weitere Informationen zu den spezifischen Anwendungsfällen, die von AWS Diensten unterstützt werden, die den Datenkatalog auffüllen können. 

**Topics**
+ [AWS Lake Formation](#lf-dc)
+ [Amazon Athena](#ate-dc)

## AWS Lake Formation
<a name="lf-dc"></a>

 AWS Lake Formation ist ein Dienst, der es einfacher macht, einen sicheren Data Lake einzurichten. AWS Lake Formation ist darauf aufgebaut AWS Glue, und Lake Formation und AWS Glue ich teilen dasselbe AWS Glue Data Catalog. Sie können Ihren Amazon S3 S3-Datenstandort bei Lake Formation registrieren und die Lake Formation Formation-Konsole verwenden, um Datenbanken und Tabellen im AWS Glue Datenkatalog zu erstellen, Datenzugriffsrichtlinien zu definieren und den Datenzugriff in Ihrem Data Lake von einer zentralen Stelle aus zu überprüfen. Sie können die detaillierte Zugriffskontrolle von Lake Formation verwenden, um Ihre vorhandenen Datenkatalogressourcen und Amazon-S3-Datenstandorte zu verwalten. 

Mit Daten, die bei Lake Formation registriert sind, können Sie Datenkatalogressourcen sicher zwischen IAM-Prinzipalen, AWS Konten, AWS Organisationen und Organisationseinheiten gemeinsam nutzen.

 Weitere Informationen zum Erstellen von Datenkatalogressourcen mit Lake Formation finden Sie unter [Erstellen von Datenkatalogtabellen und Datenbanken](https://docs.aws.amazon.com/lake-formation/latest/dg/populating-catalog.html) im AWS Lake Formation Entwicklerhandbuch. 

## Amazon Athena
<a name="ate-dc"></a>

 Amazon Athena verwendet den Datenkatalog, um Tabellenmetadaten für die Amazon S3 S3-Daten in Ihrem AWS Konto zu speichern und abzurufen. Die Tabellenmetadaten teilen der Athena-Abfrage-Engine mit, wie die Daten, die Sie abfragen möchten, gefunden, gelesen und verarbeitet werden sollen.

 Sie können die AWS Glue Data Catalog direkt mit `CREATE TABLE` Athena-Anweisungen auffüllen. Sie können das Schema und die Partitionsmetadaten im Datenkatalog manuell definieren und füllen, ohne einen Crawler ausführen zu müssen. 

1. Erstellen Sie in der Athena-Konsole eine Datenbank, in der die Tabellenmetadaten im Datenkatalog gespeichert werden.

1. Verwenden Sie die `CREATE EXTERNAL TABLE`-Anweisung, um das Schema Ihrer Datenquelle zu definieren.

1. Verwenden Sie die `PARTITIONED BY`-Klausel, um alle Partitionsschlüssel zu definieren, wenn Ihre Daten partitioniert sind.

1. Verwenden Sie die `LOCATION`-Klausel, um den Amazon-S3-Pfad anzugeben, in dem Ihre tatsächlichen Datendateien gespeichert werden. 

1. Ausführen der `CREATE TABLE`-Anweisung.

    Diese Abfrage erstellt die Tabellenmetadaten im Datenkatalog auf der Grundlage Ihres definierten Schemas und Ihrer Partitionen, ohne die Daten tatsächlich zu crawlen. 

Sie können die Tabelle in Athena abfragen. Dabei werden die Metadaten aus dem Datenkatalog verwendet, um auf Ihre Datendateien in Amazon S3 zuzugreifen und diese abzufragen. 

 Weitere Informationen finden Sie unter [Erstellen von Datenbanken und Tabellen](https://docs.aws.amazon.com/athena/latest/ug/work-with-data.html) im Amazon-Athena-Benutzerhandbuch. 

# Einstellungen des Datenkatalogs
<a name="console-data-catalog-settings"></a>

 In den Datenkatalogeinstellungen können Verschlüsselungs- und Berechtigungsoptionen für den Datenkatalog in Ihrem Konto festgelegt werden. 

![\[Der Screenshot zeigt das Modal für die Datenkatalog-Einstellungen.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/data_catalog_settings.png)


**Ändern der differenzierten Zugangskontrolle von Data Catalog**

1. Melden Sie sich bei an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1.  Wählen Sie einen Verschlüsselungsoption aus. 
   +  **Metadatenverschlüsselung** – Aktivieren Sie dieses Kontrollkästchen zum Verschlüsseln der Metadaten in Ihrem Data Catalog. Metadaten werden im Ruhezustand mit dem von Ihnen angegebenen Schlüssel AWS Key Management Service (AWS KMS) verschlüsselt. Weitere Informationen finden Sie unter [Verschlüsseln Ihres Data Catalog](encrypt-glue-data-catalog.md). 
   +  **Verschlüssele Verbindungspasswörter** – Aktivieren Sie dieses Kontrollkästchen, um Passwörter im AWS Glue-Verbindungsobjekt zu verschlüsseln, wenn die Verbindung erstellt oder aktualisiert wird. Passwörter werden mit dem von Ihnen angegebenen AWS KMS Schlüssel verschlüsselt. Wenn Passwörter zurückgegeben werden, werden sie verschlüsselt. Bei dieser Option handelt es sich um eine globale Einstellung für alle AWS Glue-Verbindungen in Data Catalog. Wenn Sie dieses Kontrollkästchen deaktivieren, werden zuvor verschlüsselte Kennwörter weiterhin mit dem Schlüssel verschlüsselt, der bei ihrer Erstellung oder Aktualisierung verwendet wurde. Weitere Informationen zu AWS Glue-Verbindungen finden Sie unter [Herstellen einer Verbindung zu Daten](glue-connections.md). 

     Wenn Sie diese Option aktivieren, wählen Sie einen AWS KMS Schlüssel oder wählen Sie **Enter a key ARN** und geben Sie den Amazon-Ressourcennamen (ARN) für den Schlüssel ein. Geben Sie den ARN in der Form ` arn:aws:kms:region:account-id:key/key-id ` ein. Sie können den ARN auch in Form eines Schlüssel-Alias bereitstellen, wie z. B. ` arn:aws:kms:region:account-id:alias/alias-name `. 
**Wichtig**  
 Wenn diese Option ausgewählt wird, muss jeder Benutzer oder jede Rolle, der bzw. die eine Verbindung erstellt oder aktualisiert, auf dem angegebenen KMS-Schlüssel über die `kms:Encrypt`-Berechtigung verfügen. 

     Weitere Informationen finden Sie unter [Verschlüsselung von Verbindungspasswörtern](encrypt-connection-passwords.md).

1.  Wählen Sie **Settings (Einstellungen)** aus und fügen Sie dann im Editor für **Permissions (Berechtigungen)** die Richtlinienanweisung hinzu, um die differenzierte Zugriffskontrolle von Data Catalog für Ihr Konto ändern. Es kann jeweils nur eine Richtlinie gleichzeitig an einen Data Catalog angefügt werden. Sie können eine JSON-Ressourcenrichtlinie in dieses Steuerelement einfügen. Weitere Informationen finden Sie unter [Ressourcenbasierte Richtlinien innerhalb von Glue AWS](security_iam_service-with-iam.md#security_iam_service-with-iam-resource-based-policies). 

1.  Wählen Sie **Save (Speichern)** aus, um Ihren Data Catalog mit allen Änderungen, die Sie vorgenommen haben, zu aktualisieren. 

 Sie können auch AWS Glue-API-Operationen zum Erstellen, Abrufen und Löschen von Ressourcenrichtlinien verwenden. Weitere Informationen finden Sie unter [Sicherheit APIs in AWS Glue](aws-glue-api-jobs-security.md). 

# Füllen und Verwalten von Transaktionstabellen
<a name="populate-otf"></a>

[Apache Iceberg](https://iceberg.apache.org/), [Apache Hudi](https://hudi.incubator.apache.org/) und Linux Foundation [Delta Lake](https://delta.io/) sind Open-Source-Tabellenformate, die für die Verarbeitung umfangreicher Datenanalysen und Data-Lake-Workloads in Apache Spark entwickelt wurden. 

Sie können Iceberg-, Hudi- und Delta Lake-Tabellen AWS Glue Data Catalog mit den folgenden Methoden auffüllen: 
+ AWS-Glue-Crawler; — AWS-Glue-Crawler s kann automatisch Iceberg-, Hudi- und Delta Lake-Tabellenmetadaten im Datenkatalog erkennen und auffüllen. Weitere Informationen finden Sie unter [Verwenden von Crawlern zum Auffüllen des Datenkatalogs](add-crawler.md).
+ AWS Glue ETL-Jobs — Sie können ETL-Jobs erstellen, um Daten in Iceberg-, Hudi- und Delta Lake-Tabellen zu schreiben und deren Metadaten im Datenkatalog aufzufüllen. Weitere Informationen finden Sie unter [Verwenden von Data-Lake-Frameworks mit AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-datalake-native-frameworks.html) ETL-Jobs.
+ AWS Glue Konsole, AWS Lake Formation Konsole AWS CLI oder API — Sie können die Konsole, die Lake Formation AWS Glue Formation-Konsole oder die API verwenden, um Iceberg-Tabellendefinitionen im Datenkatalog zu erstellen und zu verwalten.

**Topics**
+ [Erstellen von Apache-Iceberg-Tabellen](#creating-iceberg-tables)
+ [Optimieren von Iceberg-Tabellen](table-optimizers.md)
+ [Optimieren der Abfrageleistung für Iceberg-Tabellen](iceberg-column-statistics.md)

## Erstellen von Apache-Iceberg-Tabellen
<a name="creating-iceberg-tables"></a>

Sie können Apache-Iceberg-Tabellen erstellen, die das Apache-Parquet-Datenformat im AWS Glue Data Catalog verwenden, wobei sich die Daten in Amazon S3 befinden. Eine Tabelle im Data Catalog ist die Metadatendefinition, die die Daten in einem Datenspeicher repräsentiert. AWS Glue erstellt standardmäßig Iceberg-v2-Tabellen. Den Unterschied zwischen v1- und v2-Tabellen finden Sie unter [Formatversionsänderungen](https://iceberg.apache.org/spec/#appendix-e-format-version-changes) in der Apache-Iceberg-Dokumentation.

 [Apache Iceberg](https://iceberg.apache.org/) ist ein offenes Tabellenformat für sehr große analytische Datensätze. Iceberg ermöglicht einfache Änderungen an Ihrem Schema, auch bekannt als Schemaentwicklung. Das bedeutet, dass Benutzer Spalten zu einer Datentabelle hinzufügen, umbenennen oder daraus entfernen können, ohne die zugrunde liegenden Daten zu stören. Iceberg unterstützt auch die Datenversionierung, sodass Benutzer Änderungen an Daten im Laufe der Zeit nachverfolgen können. Dadurch wird die Zeitreisefeature aktiviert, mit der Benutzer auf die bisherigen Versionen von Daten zugreifen und diese abfragen und Datenänderungen zwischen Aktualisierungen und Löschungen analysieren können.

Sie können die Lake Formation Formation-Konsole oder den `CreateTable` Vorgang in der AWS Glue API verwenden AWS Glue , um eine Iceberg-Tabelle im Datenkatalog zu erstellen. Weitere Informationen finden Sie unter [CreateTable action (Python: create\$1table](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-CreateTable)).

Wenn Sie eine Iceberg-Tabelle im Data Catalog erstellen, müssen Sie das Tabellenformat und den Metadaten-Dateipfad in Amazon S3 angeben, um Lese- und Schreibvorgänge durchführen zu können.

 Sie können Lake Formation verwenden, um Ihre Iceberg-Tabelle mithilfe detaillierter Zugriffskontrollberechtigungen zu sichern, wenn Sie den Amazon S3 S3-Datenstandort bei registrieren. AWS Lake Formation Für Quelldaten in Amazon S3 und Metadaten, die nicht bei Lake Formation registriert sind, wird der Zugriff durch IAM-Berechtigungsrichtlinien für Amazon S3 und AWS Glue Aktionen bestimmt. Weitere Informationen finden Sie unter [Verwalten von Berechtigungen](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-permissions.html). 

**Anmerkung**  
Data Catalog unterstützt nicht das Erstellen von Partitionen und das Hinzufügen von Iceberg-Tabelleneigenschaften.

### Voraussetzungen
<a name="iceberg-prerequisites"></a>

 Um Iceberg-Tabellen im Data Catalog zu erstellen und Lake-Formation-Datenzugriffsberechtigungen einzurichten, müssen Sie die folgenden Anforderungen erfüllen: 

1. 

**Berechtigungen, die zum Erstellen von Iceberg-Tabellen ohne die bei Lake Formation registrierten Daten erforderlich sind.**

   Zusätzlich zu den Berechtigungen, die zum Erstellen der Tabelle im Data Catalog erforderlich sind, benötigt der Tabellenersteller folgende Berechtigungen:
   + `s3:PutObject` in Ressource arn:aws:s3:::\$1bucketName\$1
   + `s3:GetObject` in Ressource arn:aws:s3:::\$1bucketName\$1
   + `s3:DeleteObject` in Ressource arn:aws:s3:::\$1bucketName\$1

1. 

**Berechtigungen, die zum Erstellen von Iceberg-Tabellen mit den bei Lake Formation registrierten Daten erforderlich sind.**

   Um Lake Formation zur Verwaltung und Sicherung der Daten in Ihrem Data Lake zu verwenden, registrieren Sie Ihren Amazon-S3-Speicherort, der die Daten für Tabellen enthält, bei Lake Formation. Auf diese Weise kann Lake Formation Anmeldeinformationen an AWS Analysedienste wie Athena, Redshift Spectrum und Amazon EMR weitergeben, um auf Daten zuzugreifen. Weitere Informationen zur Registrierung eines Amazon-S3-Speicherorts finden Sie unter [Hinzufügen eines Amazon-S3-Speicherorts zu Ihrem Data Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html). 

   Ein Principal, der die zugrunde liegenden Daten liest und schreibt, die bei Lake Formation registriert sind, benötigt folgende Berechtigungen:
   + `lakeformation:GetDataAccess`
   + `DATA_LOCATION_ACCESS`

     Ein Principal, der über Berechtigungen zum Speichern von Daten für einen Standort verfügt, hat auch Standortberechtigungen für alle untergeordneten Standorte.

     Weitere Informationen zu Zugriffsberechtigungen für Daten finden Sie unter [Zugrundeliegende Datenzugriffskontrolle](https://docs.aws.amazon.com/lake-formation/latest/dg/access-control-underlying-data.html#data-location-permissions).

 Um die Komprimierung zu aktivieren, muss der Service eine IAM-Rolle übernehmen, die über Berechtigungen zum Aktualisieren von Tabellen im Data Catalog verfügt. Details hierzu finden Sie unter [Voraussetzungen für die Tabellenoptimierung](optimization-prerequisites.md) 

### Erstellen einer Iceberg-Tabelle
<a name="create-iceberg-table"></a>

Sie können Iceberg v1- und v2-Tabellen mit AWS Glue Lake Formation Formation-Konsole oder AWS Command Line Interface wie auf dieser Seite dokumentiert erstellen. Sie können Iceberg-Tabellen auch mit dem AWS-Glue-Crawler erstellen. Weitere Informationen finden Sie unter [Data Catalog und Crawler](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html) im AWS Glue -Entwicklerhandbuch.

**So erstellen Sie eine Iceberg-Tabelle**

------
#### [ Console ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Wählen Sie unter „Data Catalog“ die Option **Tabellen** aus, und verwenden Sie die Schaltfläche **Tabelle erstellen**, um die folgenden Attribute anzugeben:
   + **Tabellenname** – Geben Sie einen Namen für die Tabelle ein. Wenn Sie Athena verwenden, um auf Tabellen zuzugreifen, verwenden Sie diese [Benennungstipps](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html) im Amazon-Athena-Benutzerhandbuch.
   + **Datenbank** – Wählen Sie eine vorhandene Datenbank aus oder erstellen Sie eine neue.
   + **Beschreibung** – Die Beschreibung der Tabelle. Sie können eine Beschreibung zum besseren Verständnis der Inhalte der Tabelle schreiben.
   + **Tabellenformat** – Wählen Sie als **Tabellenformat** Apache Iceberg aus.
   + **Komprimierung aktivieren** – Wählen Sie **Komprimierung aktivieren** aus, um kleine Amazon-S3-Objekte in der Tabelle zu größeren Objekten zu komrimieren.
   + **IAM-Rolle** – Um die Komprimierung auszuführen, übernimmt der Service in Ihrem Namen eine IAM-Rolle. Sie können über das Dropdown-Menü eine IAM-Rolle auswählen. Die Rolle sollte die erforderlichen Berechtigungen für die Verdichtung haben.

     Unter [Voraussetzungen für die Tabellenoptimierung](optimization-prerequisites.md) erfahren Sie mehr über die für diese Rolle erforderlichen Berechtigungen.
   + **Speicherort** – Geben Sie den Pfad zu dem Ordner in Amazon S3 an, in dem die Metadatentabelle gespeichert ist. Iceberg benötigt eine Metadatendatei und einen Speicherort im Data Catalog, um Lese- und Schreibvorgänge durchführen zu können.
   + **Schema** – Wählen Sie **Spalten hinzufügen** aus, um Spalten und Datentypen der Spalten hinzuzufügen. Sie haben die Möglichkeit, eine leere Tabelle zu erstellen und das Schema später zu aktualisieren. Data Catalog unterstützt Hive-Datentypen. Weitere Informationen finden Sie unter [Datentypen](https://cwiki.apache.org/confluence/plugins/servlet/mobile?contentId=27838462#content/view/27838462). 

      Mit Iceberg können Sie Schema und Partition weiterentwickeln, nachdem Sie die Tabelle erstellt haben. Sie können [Athena-Abfragen](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-evolving-table-schema.html) verwenden, um das Tabellenschema zu aktualisieren, und [Spark-Abfragen](https://iceberg.apache.org/docs/latest/spark-ddl/#alter-table-sql-extensions), um Partitionen zu aktualisieren. 

------
#### [ AWS CLI ]

```
aws glue create-table \
    --database-name iceberg-db \
    --region us-west-2 \
    --open-table-format-input '{
      "IcebergInput": { 
           "MetadataOperation": "CREATE",
           "Version": "2"
         }
      }' \
    --table-input '{"Name":"test-iceberg-input-demo",
            "TableType": "EXTERNAL_TABLE",
            "StorageDescriptor":{ 
               "Columns":[ 
                   {"Name":"col1", "Type":"int"}, 
                   {"Name":"col2", "Type":"int"}, 
                   {"Name":"col3", "Type":"string"}
                ], 
               "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/"
            }
        }'
```

------

**Topics**
+ [Voraussetzungen](#iceberg-prerequisites)
+ [Erstellen einer Iceberg-Tabelle](#create-iceberg-table)

# Optimieren von Iceberg-Tabellen
<a name="table-optimizers"></a>

AWS Glue unterstützt mehrere Tabellenoptimierungsoptionen, um die Verwaltung und Leistung von Apache Iceberg-Tabellen zu verbessern, die von den AWS Analyse-Engines und ETL-Jobs verwendet werden. Diese Optimierer sorgen für eine effiziente Speichernutzung, eine verbesserte Abfrageleistung und ein effektives Datenmanagement. Es gibt drei Arten von Tabellenoptimierern in: AWS Glue
+ **Komprimierung**: Bei der Datenkomprimierung werden kleine Datendateien komprimiert, um den Speicherverbrauch zu reduzieren und die Leseleistung zu verbessern. Datendateien werden zusammengeführt und neu geschrieben, um veraltete Daten zu entfernen und fragmentierte Daten in größeren, effizienteren Dateien zu konsolidieren. Sie können die Komprimierung so konfigurieren, dass sie automatisch ausgeführt wird. 

  Binpack ist die Standardkomprimierungsstrategie in Apache Iceberg. Dabei werden kleinere Datendateien zu größeren kombiniert, um eine optimale Leistung zu erzielen. Die Komprimierung unterstützt auch Sortier- und Z-Ordnungsstrategien, bei denen ähnliche Daten gruppiert werden. Bei der Sortierstrategie werden Daten basierend auf bestimmten Spalten geordnet, die bei der Komprimierung hierarchisch sortiert werden, wodurch die Abfrageleistung für gefilterte Vorgänge verbessert wird. Bei der Z-Ordnung werden sortierte Datensätze erstellt, die die Abfrageleistung verbessern, wenn mehrere Spalten gleichzeitig abgefragt werden. Alle drei Komprimierungsstrategien: Binpack, Sortier- und Z-Ordnungsstrategie – reduzieren die Menge der von Abfrage-Engines gescannten Daten und senken so die Kosten für die Abfrageverarbeitung.
+ **Aufbewahrung von Snapshots**: Snapshots sind Versionen einer Iceberg-Tabelle mit Zeitstempel. Mit Konfigurationen zur Beibehaltung von Snapshots können Kunden festlegen, wie lange und wie viele Snapshots beibehalten werden sollen. Die Konfiguration eines Optimierer zur Aufbewahrung von Snapshots kann helfen, den Speicheraufwand zu minimieren, indem ältere, unnötige Snapshots und die zugehörigen zugrunde liegenden Dateien entfernt werden.
+ **Löschen verwaister Dateien**: Verwaiste Dateien sind Dateien, auf die in den Metadaten der Iceberg-Tabelle nicht mehr verwiesen wird. Diese Dateien können sich im Laufe der Zeit ansammeln, insbesondere nach Vorgängen wie dem Löschen von Tabellen oder fehlgeschlagenen ETL-Aufträgen. Wenn Sie das Löschen verwaister Dateien aktivieren AWS Glue , können Sie diese überflüssigen Dateien regelmäßig identifizieren und entfernen, wodurch Speicherplatz frei wird.

Die Optimierungskonfiguration auf Katalogebene ist über die Lake Formation Formation-Konsole und mithilfe des AWS Glue `UpdateCatalog` API-Vorgangs verfügbar. Sie können die Optimierer für die Komprimierung, die Aufbewahrung von Snapshots und das Löschen verwaister Dateien für einzelne Iceberg-Tabellen im Datenkatalog mithilfe der AWS Glue Konsolen- oder API-Operationen aktivieren oder deaktivieren. AWS CLI AWS Glue 

 Das folgende Video veranschaulicht, wie Sie Optimierer für Iceberg-Tabellen im Datenkatalog konfigurieren. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/xOXE7AS-pNA?si=lKvt_TSlPkoc6OXn/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/xOXE7AS-pNA?si=lKvt_TSlPkoc6OXn)


**Topics**
+ [Voraussetzungen für die Tabellenoptimierung](optimization-prerequisites.md)
+ [Tabellenoptimierer auf Katalogebene](catalog-level-optimizers.md)
+ [Optimierung der Verdichtung](compaction-management.md)
+ [Optimierung der Snapshot-Aufbewahrung](snapshot-retention-management.md)
+ [Löschen verwaister Dateien](orphan-file-deletion.md)
+ [Anzeigen von Details zur Optimierung](view-optimization-status.md)
+ [Amazon CloudWatch Metriken anzeigen](view-optimization-metrics.md)
+ [Löschen eines Optimierers](delete-optimizer.md)
+ [Überlegungen und Einschränkungen](optimizer-notes.md)
+ [Unterstützte Regionen für Tabellenoptimierer](regions-optimizers.md)

# Voraussetzungen für die Tabellenoptimierung
<a name="optimization-prerequisites"></a>

Der Tabellenoptimierer übernimmt die Berechtigungen der Rolle AWS Identity and Access Management (IAM), die Sie angeben, wenn Sie Optimierungsoptionen (Komprimierung, Aufbewahrung von Snapshots und Löschen verwaister Dateien) für eine Tabelle aktivieren. Sie können entweder eine einzige Rolle für alle Optimierer erstellen oder separate Rollen für jeden Optimierer erstellen.

**Anmerkung**  
Für den Optimierer für das Löschen verwaister Dateien sind die Berechtigungen `glue:updateTable` oder `s3:putObject` nicht erforderlich. Die Optimierer für den Ablauf und die Verdichtung von Snapshots erfordern dieselben Berechtigungen.

Die IAM-Rolle muss die Berechtigungen zum Lesen von Daten und Aktualisieren von Metadaten im Datenkatalog haben. Sie können eine IAM-Rolle erstellen und die folgenden Inline-Richtlinien anfügen:
+ Fügen Sie die folgende Inline-Richtlinie hinzu, die Amazon S3 read/write S3-Berechtigungen für den Standort für Daten gewährt, für die nicht registriert sind AWS Lake Formation. Diese Richtlinie umfasst auch Berechtigungen zum Aktualisieren der Tabelle im Datenkatalog und zum Hinzufügen von Protokollen AWS Glue zu Protokollen und zum Veröffentlichen von Metriken. Amazon CloudWatch Für Quelldaten in Amazon S3, die nicht bei Lake Formation registriert sind, wird der Zugriff durch IAM-Berechtigungsrichtlinien für Amazon-S3- und AWS Glue -Aktionen bestimmt. 

  Ersetzen Sie `bucket-name` in den folgenden Inline-Richtlinien durch den Namen Ihres Amazon-S3-Buckets, `aws-account-id` und `region` durch eine gültige AWS -Kontonummer und Region des Datenkatalogs, `database_name` durch den Namen Ihrer Datenbank und `table_name` durch den Namen der Tabelle.

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "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": [
                  "glue:UpdateTable",
                  "glue:GetTable"
              ],
              "Resource": [
                  "arn:aws:glue:us-east-1:111122223333:table/<database-name>/<table-name>",
                  "arn:aws:glue:us-east-1:111122223333:database/<database-name>",
                  "arn:aws:glue:us-east-1:111122223333:catalog"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": [
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-compaction/logs:*",
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-retention/logs:*",
                  "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
              ]
          }
      ]
  }
  ```

------
+ Verwenden Sie die folgende Richtlinie, um die Verdichtung für Daten zu aktivieren, die bei Lake Formation registriert sind. 

  Wenn der Optimierungsrolle keine `IAM_ALLOWED_PRINCIPALS`-Gruppenberechtigungen für die Tabelle erteilt wurden, benötigt die Rolle die Lake-Formation-Berechtigungen `ALTER`, `DESCRIBE`, `INSERT` und `DELETE` für die Tabelle. 

  Weitere Informationen zur Registrierung eines Amazon-S3-Buckets bei Lake Formation finden Sie unter [Hinzufügen eines Amazon-S3-Speicherorts zu Ihrem Data Lake](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html).

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lakeformation:GetDataAccess"
        ],
        "Resource": "*"
      },
      {
        "Effect": "Allow",
        "Action": [
          "glue:UpdateTable",
          "glue:GetTable"
        ],
        "Resource": [
          "arn:aws:glue:us-east-1:111122223333:table/databaseName/tableName",
          "arn:aws:glue:us-east-1:111122223333:database/databaseName",
          "arn:aws:glue:us-east-1:111122223333:catalog"
        ]
      },
      {
        "Effect": "Allow",
        "Action": [
          "logs:CreateLogGroup",
          "logs:CreateLogStream",
          "logs:PutLogEvents"
        ],
        "Resource": [
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-compaction/logs:*",
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-retention/logs:*",
          "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue/iceberg-orphan-file-deletion/logs:*"
        ]
      }
    ]
  }
  ```

------
+ (Optional) Um Iceberg-Tabellen mit Daten in Amazon-S3-Buckets zu optimieren, die mit [serverseitiger Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html) verschlüsselt wurden, benötigt die Verdichtungsrolle Berechtigungen zum Entschlüsseln von Amazon-S3-Objekten und Generieren eines neuen Datenschlüssels, um Objekte in die verschlüsselten Buckets zu schreiben. Fügen Sie dem gewünschten AWS KMS Schlüssel die folgende Richtlinie hinzu. Wir unterstützen nur Verschlüsselung auf Bucket-Ebene.

  ```
  {
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::<aws-account-id>:role/<optimizer-role-name>"
      },
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": "*"
  }
  ```
+  (Optional) Für den bei Lake Formation registrierten Datenspeicherort benötigt die Rolle, die zur Registrierung des Speicherorts verwendet wird, Berechtigungen zum Entschlüsseln von Amazon-S3-Objekten und Generieren eines neuen Datenschlüssels, um Objekte in die verschlüsselten Buckets zu schreiben. Weitere Informationen finden Sie unter [Registrieren eines verschlüsselten Amazon-S3-Speicherorts](https://docs.aws.amazon.com/lake-formation/latest/dg/register-encrypted.html). 
+ (Optional) Wenn der AWS KMS Schlüssel in einem anderen AWS Konto gespeichert ist, müssen Sie der Verdichtungsrolle die folgenden Berechtigungen hinzufügen.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
        ],
        "Resource": [
          "arn:aws:kms:us-east-1:111122223333:key/key-id"
        ]
      }
    ]
  }
  ```

------
+  Die Rolle, die Sie zum Ausführen der Verdichtung verwenden, muss die `iam:PassRole`-Berechtigung für die Rolle haben. 

------
#### [ JSON ]

****  

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

------
+ Fügen Sie der Rolle die folgende Vertrauensrichtlinie hinzu, damit der AWS Glue Dienst die IAM-Rolle zur Ausführung des Verdichtungsprozesses übernimmt.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "glue.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  }
  ```

------
+ <a name="catalog-optimizer-requirement"></a> (Optional) Um die Datenkatalogeinstellungen zu aktualisieren und Tabellenoptimierungen auf Katalogebene zu ermöglichen, muss die verwendete IAM-Rolle über die `glue:UpdateCatalog` entsprechende Berechtigung oder AWS Lake Formation `ALTER CATALOG` Berechtigung für den Stammkatalog verfügen. Sie können die `GetCatalog`-API verwenden, um die Katalogeigenschaften zu überprüfen. 

# Tabellenoptimierer auf Katalogebene
<a name="catalog-level-optimizers"></a>

Mit einer einmaligen Katalogkonfiguration können Sie automatische Optimierungsprogramme wie Verdichtung, Aufbewahrung von Snapshots und Löschen verwaister Dateien für alle neuen und aktualisierten Apache-Iceberg-Tabellen im AWS Glue Data Catalog einrichten. Mit Optimiererkonfigurationen auf Katalogebene können Sie einheitliche Optimierereinstellungen auf alle Tabellen innerhalb eines Katalogs anwenden, sodass Sie die Optimierer nicht mehr für jede Tabelle einzeln konfigurieren müssen.

Data–Lake-Administratoren können die Tabellenoptimierer konfigurieren, indem sie den Standardkatalog in der Lake-Formation-Konsole auswählen und die Optimierer über die Option `Table optimization` aktivieren. Wenn Sie neue Tabellen erstellen oder bestehende Tabellen im Datenkatalog aktualisieren, führt der Datenkatalog automatisch die Tabellenoptimierungen aus, um den Betriebsaufwand zu verringern.

Wenn Sie die Optimierung auf Tabellenebene konfiguriert haben oder wenn Sie zuvor die Tabellenoptimierungseinstellungen für eine Tabelle gelöscht haben, haben diese tabellenspezifischen Einstellungen Vorrang vor den Standardkatalogeinstellungen für die Tabellenoptimierung. Ist ein Konfigurationsparameter weder auf Tabellen- noch auf Katalogebene definiert, wird der Wert der Iceberg-Tabelleneigenschaft angewendet. Diese Einstellung gilt für die Optimierer für die Aufbewahrung von Snapshots und die Löschung verwaister Dateien.

Beachten Sie bei der Aktivierung von Optimierern auf Katalogebene Folgendes:
+ Wenn Sie bei der Erstellung des Katalogs Optimierungseinstellungen konfigurieren und anschließend die Optimierungen über eine Anforderung zum Aktualisieren des Katalogs deaktivieren, wird der Vorgang auf alle Tabellen innerhalb des Katalogs angewendet.
+ Wenn Sie bereits Optimierer für eine bestimmte Tabelle konfiguriert haben, hat die Deaktivierung auf Katalogebene keine Auswirkungen auf diese Tabelle.
+ Wenn Sie Optimierer auf Katalogebene deaktivieren, behalten Tabellen mit bestehenden Optimiererkonfigurationen ihre spezifischen Einstellungen bei und bleiben von der Änderung auf Katalogebene unberührt. Tabellen ohne eigene Optimierungskonfigurationen übernehmen jedoch den deaktivierten Status aus der Katalogebene.
+ Da die Optimierer für die Aufbewahrung von Snapshots und das Löschen verwaister Dateien zeitplanbasiert sein können, führen Aktualisierungen zu einer zufälligen Verzögerung beim Start ihres Zeitplans. Dadurch starten die einzelnen Optimierer zu leicht unterschiedlichen Zeitpunkten, wodurch die Last verteilt und die Wahrscheinlichkeit einer Überschreitung der Servicegrenzen verringert wird.
+ Optimizer-Einstellungen auf Katalogebene werden nicht automatisch von Tabellen vererbt, wenn die AWS Glue Data Catalog Verschlüsselung aktiviert ist. Wenn in Ihrem Katalog die Metadatenverschlüsselung aktiviert ist, müssen Sie die Tabellenoptimierer für jede Tabelle einzeln konfigurieren. Um die Vererbung von Optimierern auf Katalogebene verwenden zu können, muss die Metadatenverschlüsselung im Katalog deaktiviert sein.

**Topics**
+ [Aktivieren der automatischen Tabellenoptimierung auf Katalogebene](enable-auto-table-optimizers.md)
+ [Anzeigen von Optimierungen auf Katalogebene](view-catalog-optimizations.md)
+ [Deaktivieren der Tabellenoptimierung auf Katalogebene](disable-auto-table-optimizers.md)

# Aktivieren der automatischen Tabellenoptimierung auf Katalogebene
<a name="enable-auto-table-optimizers"></a>

 Sie können die automatische Tabellenoptimierung für alle neuen Apache-Iceberg-Tabellen im Datenkatalog aktivieren. Nachdem Sie die Tabelle erstellt haben, können Sie die Einstellungen für die Tabellenoptimierung auch explizit manuell aktualisieren. 

 Um die Datenkatalog-Einstellungen zu aktualisieren und Tabellenoptimierungen auf Katalogebene zu ermöglichen, muss die verwendete IAM-Rolle über die `glue:UpdateCatalog`-Berechtigung für den Stammkatalog verfügen. Sie können die `GetCatalog`-API verwenden, um die Katalogeigenschaften zu überprüfen. 

 Für die von Lake Formation verwalteten Tabellen erfordert die während der Katalogoptimierungskonfiguration ausgewählte IAM-Rolle die Lake-Formation-Berechtigungen `ALTER`, `DESCRIBE`, `INSERT` und `DELETE` für alle neuen oder aktualisierten Tabellen. 

## So aktivieren Sie Optimierer auf Katalogebene (Konsole)
<a name="enable-catalog-optimizers-console"></a>

1. Öffnen Sie die Lake Formation Formation-Konsole unter [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Wählen Sie im Navigationsbereich die Option **Datenkatalog**.

1. Wählen Sie die Registerkarte **Kataloge** aus.

1. Wählen Sie den Katalog auf Kontoebene.

1. Wählen Sie auf der Registerkarte **Tabellenoptimierungen** unter **Tabellenoptimierungen** die Option **Bearbeiten** aus. Sie können auch unter **Aktionen** die Option **Optimierungen bearbeiten** auswählen.  
![\[Der Screenshot zeigt die Bearbeitungsoption, mit der Optimierungen auf Katalogebene aktiviert werden können.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/catalog-edit-optimizations.png)

1. Konfigurieren Sie auf der Seite **AWS-Optionen** Folgendes:  
![\[Der Screenshot zeigt die Optimierungsoptionen auf Katalogebene.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/catalog-optimization-options.png)

   1. Konfigurieren Sie die Einstellungen für die **Komprimierung**:
      + Aktivieren oder deaktivieren Sie die Komprimierung.
      + Wählen Sie die IAM-Rolle aus, die über die erforderlichen Berechtigungen zum Ausführen der Optimierer verfügt.

        Weitere Informationen zu den Berechtigungsanforderungen für die IAM-Rolle finden Sie unter [Voraussetzungen für die Tabellenoptimierung](optimization-prerequisites.md).

   1. Konfigurieren Sie die Einstellungen für die **Aufbewahrung von Snapshots**:
      + Aktivieren oder deaktivieren Sie die Aufbewahrung.
      + Legen Sie die Snapshot-Aufbewahrungsdauer in Tagen fest. Die Standardeinstellung ist 5 Tage.
      + Legen Sie die Anzahl der Snapshots fest, die beibehalten werden sollen. Die Standardeinstellung ist 1 Snapshot.
      + Aktivieren oder deaktivieren Sie das Löschen abgelaufener Dateien.

   1. Konfigurieren Sie die Einstellungen für das **Löschen verwaister Dateien**:
      + Aktivieren oder deaktivieren Sie das Löschen verwaister Dateien.
      + Legen Sie die Aufbewahrungsdauer verwaister Dateien in Tagen fest. Die Standardeinstellung ist 3 Tage.

1. Wählen Sie **Speichern**.

## Aktivierung von Optimierern auf Katalogebene über AWS CLI
<a name="catalog-auto-optimizers-cli"></a>

Verwenden Sie den folgenden CLI-Befehl, um einen vorhandenen Katalog mit Optimierer-Einstellungen zu aktualisieren:

**Example Katalog mit Optimierer-Einstellungen aktualisieren**  

```
aws glue update-catalog \
   --name catalog-id \
  --catalog-input \
  '{
    "CatalogId": "111122223333",
    "CatalogInput": {
        "CatalogProperties": {
            "CustomProperties": {
                "ColumnStatistics.Enabled": "false",
                "ColumnStatistics.RoleArn": "arn:aws:iam::111122223333:role/service-role/stats-role-name"
            },
            "IcebergOptimizationProperties": {
                "RoleArn": "arn:aws:iam::111122223333:role/optimizer-role-name",
                "Compaction": {
                    "enabled": "true"
                },
                "Retention": {
                    "enabled": "true",
                    "snapshotRetentionPeriodInDays": "10",
                    "numberOfSnapshotsToRetain": "5",
                    "cleanExpiredFiles": "true"
                },
                "OrphanFileDeletion": {
                    "enabled": "true",
                    "orphanFileRetentionPeriodInDays": "3"
                }
            }
        }
    }
}'
```

Wenn Sie Probleme mit Optimierern auf Katalogebene haben, überprüfen Sie Folgendes:
+ Stellen Sie sicher, dass die IAM-Rolle über die richtigen Berechtigungen verfügt, wie im Abschnitt „Voraussetzungen“ beschrieben.
+ Suchen Sie in den CloudWatch Protokollen nach Fehlermeldungen im Zusammenhang mit Optimizer-Vorgängen.

   Weitere Informationen finden Sie unter [Anzeigen der verfügbaren Metriken](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) im *Benutzerhandbuch für Amazon CloudWatch *. 
+ Stellen Sie sicher, dass die Katalogeinstellungen erfolgreich angewendet wurden, indem Sie die Katalogkonfiguration überprüfen.
+ Bei Tabellenzugriffsfehlern finden Sie in den CloudWatch Protokollen und EventBridge Benachrichtigungen detaillierte Fehlerinformationen.

# Anzeigen von Optimierungen auf Katalogebene
<a name="view-catalog-optimizations"></a>

 Wenn die Tabellenoptimierung auf Katalogebene aktiviert ist, wird jedes Mal, wenn eine Apache Iceberg-Tabelle über das `CreateTable` oder `UpdateTable` APIs über AWS-Managementkonsole das SDK oder aktualisiert wird AWS-Glue-Crawler, eine entsprechende Einstellung auf Tabellenebene für diese Tabelle erstellt. 

 Nachdem Sie eine Tabelle erstellt oder aktualisiert haben, können Sie die Tabellendetails überprüfen, um die Tabellenoptimierung zu bestätigen. Die `Table optimization` zeigt die `Configuration source`-Eigenschaft an, die als `Catalog` festgelegt ist. 

![\[Ein Bild einer Apache-Iceberg-Tabelle mit Optimierungskonfiguration auf Katalogebene hat wurde angewendet.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/catalog-optimization-enabled.png)


# Deaktivieren der Tabellenoptimierung auf Katalogebene
<a name="disable-auto-table-optimizers"></a>

 Sie können die Tabellenoptimierung für neue Tabellen mithilfe der AWS Lake Formation Konsole, der `glue:UpdateCatalog` API, deaktivieren. 

**Deaktivieren der Tabellenoptimierungen auf Katalogebene**

1. Öffnen Sie die Lake Formation Formation-Konsole unter [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Wählen Sie in der linken Navigationsleiste die Option **Kataloge** aus.

1. Wählen Sie auf der Seite mit der **Katalogübersicht** unter **Tabellenoptimierungen** die Option **Bearbeiten** aus.

1. Deaktivieren Sie auf der Seite **Optimierung bearbeiten** die **Optimierungsoptionen**.

1. Wählen Sie **Speichern**.

# Optimierung der Verdichtung
<a name="compaction-management"></a>

 Die Amazon-S3-Data-Lakes, die offene Tabellenformate wie Apache Iceberg verwenden, speichern Daten als S3-Objekte. Tausende kleiner Amazon S3 S3-Objekte in einer Data-Lake-Tabelle erhöhen den Metadaten-Overhead und beeinträchtigen die Leseleistung. AWS Glue Data Catalog bietet verwaltete Komprimierung für Iceberg-Tabellen und komprimiert kleine Objekte zu größeren, um eine bessere Leseleistung durch AWS Analysedienste wie Amazon EMR Amazon Athena und ETL-Jobs zu erzielen. AWS Glue Der Datenkatalog führt die Verdichtung durch, ohne gleichzeitige Abfragen zu stören, und unterstützt die Verdichtung nur für Tabellen im Parquet-Format. 

Der Tabellenoptimierer überwacht laufend Tabellenpartitionen und startet den Verdichtungsprozess, wenn der Schwellenwert für die Anzahl und Größe von Dateien überschritten wird.

Im Datenkatalog beginnt der Verdichtungsprozess, wenn eine Tabelle oder eine ihrer Partitionen mehr als 100 Dateien enthält. Jede Datei muss kleiner als 75 % der Zieldateigröße sein. Die Zieldateigröße wird durch die Tabelleneigenschaft `write.target-file-size-bytes` bestimmt, die standardmäßig 512 MB beträgt, sofern sie nicht explizit festgelegt ist.

 Einschränkungen finden Sie unter [Unterstützte Formate und Einschränkungen für die verwaltete Datenverdichtung](optimizer-notes.md#compaction-notes). 

**Topics**
+ [Aktivieren des Verdichtungsoptimierers](enable-compaction.md)
+ [Deaktivieren des Verdichtungsoptimierers](disable-compaction.md)

# Aktivieren des Verdichtungsoptimierers
<a name="enable-compaction"></a>

 Sie können die AWS Glue Konsole oder AWS API verwenden AWS CLI, um die Komprimierung für Ihre Apache Iceberg-Tabellen im AWS Glue Datenkatalog zu aktivieren. Für neue Tabellen können Sie Apache Iceberg als Tabellenformat auswählen und die Verdichtung beim Erstellen der Tabellen aktivieren. Für neue Tabellen ist die Verdichtung standardmäßig deaktiviert.

------
#### [ Console ]

**Aktivieren der Verdichtung**

1.  Öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)und melden Sie sich als Data Lake-Administrator, als Tabellenersteller oder als Benutzer an, dem die `lakeformation:GetDataAccess` Berechtigungen `glue:UpdateTable` und für die Tabelle erteilt wurden. 

1. Wählen Sie im Navigationsbereich unter **Datenkatalog** die Option **Tabellen** aus.

1. Wählen Sie auf der Seite **Tabellen** eine Tabelle im offenen Tabellenformat aus, für die Sie die Verdichtung aktivieren möchten, und wählen Sie dann im Menü **Aktionen** die Option **Optimierung** und dann **Aktivieren** aus.

   Sie können die Verdichtung auch aktivieren, indem Sie die Registerkarte **Tabellenoptimierung** auf der Seite mit den **Tabellendetails** auswählen. Wählen Sie im unteren Bereich der Seite die Registerkarte **Tabellenoptimierung** und dann **Verdichtung aktivieren** aus. 

   Die Option **Optimierung aktivieren** ist auch verfügbar, wenn Sie eine neue Iceberg-Tabelle im Datenkatalog erstellen.

1. Wählen Sie auf der Seite **Optimierung aktivieren** unter **Optimierungsoptionen** die Option **Verdichtung** aus.  
![\[Detailseite der Apache-Iceberg-Tabelle mit der Option „Verdichtung aktivieren“.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/table-enable-compaction.png)

1. Wählen Sie als Nächstes eine IAM-Rolle aus der Drop-down-Liste mit den Berechtigungen im Abschnitt [Voraussetzungen für die Tabellenoptimierung](optimization-prerequisites.md) aus. 

   Sie können auch die Option **Neue IAM-Rolle erstellen** auswählen, um eine benutzerdefinierte Rolle mit den erforderlichen Berechtigungen zum Ausführen der Verdichtung zu erstellen.

    Gehen Sie wie folgt vor, um eine vorhandene IAM-Rolle zu aktualisieren: 

   1.  Um die Berechtigungsrichtlinie für die IAM-Rolle zu aktualisieren, wechseln Sie in der IAM-Konsole zu der IAM-Rolle, die zum Ausführen der Verdichtung verwendet wird. 

   1.  Wählen Sie im Abschnitt **Berechtigungen** hinzufügen die Option „Richtlinie erstellen“ aus. Erstellen Sie im neu geöffneten Browserfenster eine neue Richtlinie, die Sie mit Ihrer Rolle verwenden möchten. 

   1. Wählen Sie auf der Seite „Richtlinie erstellen“ die Registerkarte `JSON` aus. Kopieren Sie den JSON-Code aus den Voraussetzungen in das Feld im Richtlinieneditor.

1. Wenn Sie Sicherheitsrichtlinien-Konfigurationen haben, bei denen der Iceberg-Tabellenoptimierer von einer bestimmten Virtual Private Cloud (VPC) aus auf Amazon S3 S3-Buckets zugreifen muss, stellen Sie eine AWS Glue Netzwerkverbindung her oder verwenden Sie eine bestehende.

   Wenn Sie noch keine AWS Glue VPC-Verbindung eingerichtet haben, erstellen Sie eine neue, indem Sie mit der AWS Glue Konsole oder dem /SDK die Schritte im Abschnitt [Verbindungen für Konnektoren erstellen](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) ausführen. AWS CLI

1. Wählen Sie eine Verdichtungsstrategie. Die verfügbaren Optionen sind:
   + **Binpack**: Binpack ist die Standard-Verdichtungsstrategie in Apache Iceberg. Sie kombiniert kleinere Datendateien zu größeren, um eine optimale Leistung zu erzielen.
   + **Sortieren**: Bei der Sortierung in Apache Iceberg handelt es sich um eine Datenorganisationstechnik, bei der Informationen innerhalb von Dateien auf der Grundlage bestimmter Spalten gruppiert werden. Dadurch wird die Abfrageleistung erheblich verbessert, da die Anzahl der zu verarbeitenden Dateien reduziert wird. Sie legen die Sortierreihenfolge in den Metadaten von Iceberg mithilfe des Felds „Sortierreihenfolge“ fest. Wenn mehrere Spalten angegeben sind, werden die Daten in der Reihenfolge sortiert, in der die Spalten in der Sortierreihenfolge erscheinen, sodass Datensätze mit ähnlichen Werten innerhalb der Dateien zusammen gespeichert werden. Die Sortier- und Verdichtungsstrategie optimiert den Prozess weiter, indem sie Daten über alle Dateien innerhalb einer Partition hinweg sortiert. 
   + **Z-Reihenfolge**: Die Z-Reihenfolge ist eine Methode zum Organisieren von Daten, wenn Sie diese nach mehreren Spalten mit gleicher Wichtigkeit sortieren müssen. Im Gegensatz zur herkömmlichen Sortierung, bei der eine Spalte gegenüber anderen priorisiert wird, gewichtet die Z-Sortierung jede Spalte gleichmäßig, sodass Ihre Suchmaschine bei der Datensuche weniger Dateien lesen muss.

     Bei dieser Technik werden die Binärziffern der Werte aus verschiedenen Spalten miteinander verwoben. Wenn Sie beispielsweise die Zahlen 3 und 4 aus zwei Spalten haben, werden diese bei der Z-Reihenfolge zunächst in Binärzahlen umgewandelt (3 wird zu 011 und 4 zu 100) und dann miteinander verschachtelt, um einen neuen Wert zu bilden: 011010. Durch diese Verschachtelung entsteht ein Muster, bei dem verwandte Daten physisch nahe beieinander bleiben.

     Die Z-Reihenfolge ist besonders effektiv für mehrdimensionale Abfragen. Beispielsweise kann die Z-Reihenfolge bei einer Kundentabelle, die nach Einkommen, Bundesstaat und Postleitzahl sortiert ist, bei Abfragen über mehrere Dimensionen hinweg eine überlegene Leistung im Vergleich zur hierarchischen Sortierung bieten. Diese Organisation ermöglicht Abfragen, die auf bestimmte Kombinationen aus Einkommen und geografischem Standort abzielen, um relevante Daten schnell zu finden und gleichzeitig unnötige Dateiscans zu minimieren.

1. **Mindestanzahl an Eingabedateien**: Die Anzahl der Datendateien, die in einer Partition vorhanden sein müssen, bevor die Verdichtung ausgelöst wird.

1. **Schwellenwert für das Löschen von Dateien**: Mindestanzahl an Löschvorgängen, die in einer Datendatei erforderlich sind, bevor sie für die Verdichtung infrage kommt.

1. Wählen Sie **Optimierung aktivieren** aus.

------
#### [ AWS CLI ]

 Im folgenden Beispiel wird gezeigt, wie Sie die Verdichtung aktivieren. Ersetzen Sie die Konto-ID durch eine gültige AWS Konto-ID. Ersetzen Sie den Datenbanknamen und den Tabellennamen durch die tatsächlichen Tabellen- und Datenbanknamen in Iceberg. Ersetzen Sie den `roleArn` durch den AWS -Ressourcennamen (ARN) der IAM-Rolle und den Namen der IAM-Rolle, die über die erforderlichen Berechtigungen zum Ausführen der Verdichtung verfügt. Sie können die Verdichtungsstrategie `sort` durch andere unterstützte Strategien wie `z-order` oder `binpack` ersetzen.

Reihenfolge“ je nach Ihren Anforderungen.

```
aws glue create-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{
    "roleArn": "arn:aws:iam::123456789012:role/optimizer_role",
    "enabled": true,
    "vpcConfiguration": {"glueConnectionName": "glue_connection_name"},
    "compactionConfiguration": {
      "icebergConfiguration": {"strategy": "sort"}
    }
  }'\
--type compaction
```

------
#### [ AWS API ]

Rufen Sie die Operation [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) auf, um die Verdichtung für eine Tabelle zu aktivieren.

------

Nachdem Sie die Verdichtung aktiviert haben, werden auf der Registerkarte **Tabellenoptimierung** die folgenden Verdichtungsdetails angezeigt, sobald der Verdichtungsprozess abgeschlossen wurde:

Startzeit  
Die Zeit, zu der der Verdichtungsprozess innerhalb von Data Catalog gestartet wurde. Der Wert ist ein Zeitstempel in UTC-Zeit. 

Endzeit  
Die Zeit, zu der der Verdichtungsprozess innerhalb von Data Catalog beendet wurde. Der Wert ist ein Zeitstempel in UTC-Zeit. 

Status  
Der Status der Verdichtungsausführung. Die Werte sind „Erfolgreich“ oder „Fehlgeschlagen“.

Verdichtete Dateien  
Anzahl der verdichteten Dateien.

Verdichtete Bytes  
Anzahl der verdichteten Bytes.

# Deaktivieren des Verdichtungsoptimierers
<a name="disable-compaction"></a>

 Sie können die automatische Komprimierung für eine bestimmte Apache Iceberg-Tabelle mithilfe der AWS Glue Konsole oder deaktivieren. AWS CLI

------
#### [ Console ]

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)

1. Wählen Sie im linken Navigationsbereich unter **Datenkatalog** die Option **Tabellen** aus. 

1. In der Liste der Tabellen wählen Sie die Iceberg-Tabelle aus, für die Sie die Verdichtung deaktivieren möchten.

1. Wählen Sie im unteren Bereich der **Tabellendetailseite** die Registerkarte **Tabellenoptimierung** aus.

1. Wählen Sie unter **Aktionen** die Option **Deaktivieren** und anschließend **Verdichtung** aus.

1.  Klicken Sie in der Bestätigungsmeldung auf **Verdichtung deaktivieren**. Sie können die Verdichtung später wieder aktivieren. 

    Nachdem Sie die Deaktivierung bestätigt haben, wird die Verdichtung deaktiviert und der Verdichtungsstatus für die Tabelle wird wieder auf `Disabled` gesetzt.

------
#### [ AWS CLI ]

Ersetzen Sie im folgenden Beispiel die Konto-ID durch eine gültige AWS Konto-ID. Ersetzen Sie den Datenbanknamen und den Tabellennamen durch die tatsächlichen Tabellen- und Datenbanknamen in Iceberg. Ersetzen Sie das `roleArn` durch den AWS Ressourcennamen (ARN) der IAM-Rolle und den tatsächlichen Namen der IAM-Rolle, die über die erforderlichen Berechtigungen zum Ausführen der Komprimierung verfügt.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "enabled":'false', "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}}'\ 
  --type compaction
```

------
#### [ AWS API ]

Rufen Sie die Operation [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) auf, um die Verdichtung für eine bestimmte Tabelle zu deaktivieren.

------

# Optimierung der Snapshot-Aufbewahrung
<a name="snapshot-retention-management"></a>

Mit der Snapshot-Aufbewahrungsfunktion von Apache Iceberg können Benutzer Verlaufsdaten zu bestimmten Zeitpunkten abfragen und unerwünschte Änderungen an ihren Tabellen rückgängig machen. Im AWS Glue Datenkatalog steuert die Konfiguration der Snapshot-Aufbewahrung, wie lange diese Snapshots (Versionen der Tabellendaten) aufbewahrt werden, bevor sie ablaufen und entfernt werden. Dies hilft beim Reduzieren der Speicherkosten und Verwalten der Metadaten-Overheads, indem ältere Snapshots auf der Grundlage einer konfigurierten Aufbewahrungszeit oder der maximalen Anzahl von aufzubewahrenden Snapshots automatisch entfernt werden. 

Sie können den Aufbewahrungszeitraum in Tagen und die maximale Anzahl von Snapshots, die für eine Tabelle aufbewahrt werden sollen, konfigurieren. AWS Glue entfernt Snapshots, die älter als der angegebene Aufbewahrungszeitraum sind, aus den Tabellenmetadaten, wobei die neuesten Snapshots bis zum konfigurierten Limit beibehalten werden. AWS Glue Löscht nach dem Entfernen alter Snapshots aus den Metadaten die entsprechenden Daten und Metadatendateien, auf die nicht mehr verwiesen wird und die für die abgelaufenen Snapshots eindeutig sind. So können Zeitreiseabfragen nur bis zu den verbleibenden gespeicherten Snapshots abgerufen werden, während gleichzeitig Speicherplatz zurückgewonnen wird, der für abgelaufene Snapshot-Daten verwendet wurde.

**Topics**
+ [Aktivieren des Snapshot-Aufbewahrungsoptimierers](enable-snapshot-retention.md)
+ [Aktualisieren des Snapshot-Aufbewahrungsoptimierers](update-snapshot-retention.md)
+ [Deaktivieren des Snapshot-Aufbewahrungsoptimierers](disable-snapshot-retention.md)

# Aktivieren des Snapshot-Aufbewahrungsoptimierers
<a name="enable-snapshot-retention"></a>

 Sie können die AWS Glue Konsole oder die AWS API verwenden AWS CLI, um Optimizer für die Aufbewahrung von Snapshots für Ihre Apache Iceberg-Tabellen im Datenkatalog zu aktivieren. Für neue Tabellen können Sie Apache Iceberg als Tabellenformat auswählen und den Snapshot-Aufbewahrungsoptimierer beim Erstellen der Tabellen aktivieren. Für neue Tabellen ist die Snapshot-Aufbewahrung standardmäßig deaktiviert.

------
#### [ Console ]

**So aktivieren Sie den Snapshot-Aufbewahrungsoptimierer**

1.  Öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)und melden Sie sich als Data Lake-Administrator, als Tabellenersteller oder als Benutzer an, dem die `lakeformation:GetDataAccess` Berechtigungen `glue:UpdateTable` und für die Tabelle erteilt wurden. 

1. Wählen Sie im Navigationsbereich unter **Datenkatalog** die Option **Tabellen** aus.

1. **Wählen Sie auf der Seite **Tabellen** eine Iceberg-Tabelle aus, für die Sie den Snapshot-Aufbewahrungsoptimierer aktivieren möchten, und wählen Sie dann im Menü **Aktionen** unter Optimierung** die Option **Aktivieren** aus.

   Sie können die Optimierung auch aktivieren, indem Sie die Tabelle auswählen und die Seite mit den **Tabellendetails** öffnen. Wählen Sie im unteren Bereich der Seite die Registerkarte **Tabellenoptimierung** und dann **Snapshot-Aufbewahrung aktivieren** aus. 

1. Auf der Seite **Optimierung aktivieren** haben Sie unter **Optimierungskonfiguration** zwei Optionen: **Standardeinstellungen verwenden** oder **Einstellungen anpassen**. Wenn Sie sich für die Verwendung der Standardeinstellungen entscheiden, AWS Glue verwendet die in der Iceberg-Tabellenkonfiguration definierten Eigenschaften, um den Aufbewahrungszeitraum für Snapshots und die Anzahl der beizubehaltenden Snapshots zu bestimmen. Wenn diese Konfiguration nicht vorhanden ist, wird ein Snapshot fünf Tage lang AWS Glue aufbewahrt und die mit den abgelaufenen Snapshots verknüpften Dateien gelöscht.

1.  Wählen Sie als Nächstes eine IAM-Rolle aus, die in Ihrem Namen die Ausführung des Optimierers übernehmen AWS Glue kann. Einzelheiten zu den für die IAM-Rolle erforderlichen Berechtigungen finden Sie im Abschnitt [Voraussetzungen für die Tabellenoptimierung](optimization-prerequisites.md).

   Gehen Sie wie folgt vor, um eine vorhandene IAM-Rolle zu aktualisieren: 

   1.  Um die Berechtigungsrichtlinie für die IAM-Rolle zu aktualisieren, wechseln Sie in der IAM-Konsole zu der IAM-Rolle, die zum Ausführen der Verdichtung verwendet wird. 

   1.  Wählen Sie im Abschnitt Berechtigungen hinzufügen die Option „Richtlinie erstellen“ aus. Erstellen Sie im neu geöffneten Browserfenster eine neue Richtlinie, die Sie mit Ihrer Rolle verwenden möchten. 

   1. Wählen Sie auf der Seite Richtlinie erstellen die Registerkarte JSON aus. Kopieren Sie den JSON-Code aus den Voraussetzungen in das Feld im Richtlinieneditor.

1. Wenn Sie die Werte für die **Konfiguration der Snapshot-Aufbewahrung** lieber manuell festlegen möchten, wählen Sie **Einstellungen anpassen** aus.   
![\[Seite mit den Apache-Iceberg-Tabellendetails mit der Option „Aufbewahrung aktivieren“ > „Einstellungen anpassen“.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/table-enable-retention.png)

1. Aktivieren Sie das Kästchen **Ausgewählte IAM-Rolle auf die ausgewählten Optimierer anwenden**, um eine einzige IAM-Rolle für alle zu verwenden und alle Optimierer zu aktivieren.

1. Wenn Sie Sicherheitsrichtlinien-Konfigurationen haben, bei denen der Iceberg-Tabellenoptimierer von einer bestimmten Virtual Private Cloud (VPC) aus auf Amazon S3 S3-Buckets zugreifen muss, stellen Sie eine AWS Glue Netzwerkverbindung her oder verwenden Sie eine bestehende.

   Wenn Sie noch keine AWS Glue VPC-Verbindung eingerichtet haben, erstellen Sie eine neue, indem Sie die Schritte im Abschnitt [Verbindungen für Konnektoren erstellen](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) mithilfe der AWS Glue Konsole oder des AWS CLI/SDKs ausführen.

1. Wählen Sie als Nächstes unter **Snapshot-Aufbewahrungskonfiguration** entweder die in der [Iceberg-Tabellenkonfiguration](https://iceberg.apache.org/docs/1.5.2/configuration/#table-behavior-properties) angegebenen Werte aus, oder geben Sie benutzerdefinierte Werte für die Aufbewahrungsdauer von Snapshots an (history.expire). max-snapshot-age-ms), Mindestanzahl von Snapshots (history.expire. min-snapshots-to-keep), die aufbewahrt werden sollen, und die Zeit in Stunden zwischen aufeinanderfolgenden Snapshot-Löschaufträgen.

1.  Wählen Sie **Zugehörige Dateien löschen** aus, um die zugrunde liegenden Dateien zu löschen, wenn der Tabellenoptimierer alte Snapshots aus den Tabellenmetadaten löscht.

    Wenn Sie diese Option nicht auswählen und ältere Snapshots aus den Tabellenmetadaten entfernt werden, verbleiben die zugehörigen Dateien als verwaiste Dateien im Speicher. 

1. Lesen Sie als Nächstes den Warnhinweis und wählen Sie **Ich bestätige** aus, um fortzufahren.
**Anmerkung**  
 Im Datenkatalog berücksichtigt der Snapshot-Aufbewahrungsoptimierer den Lebenszyklus, der durch Aufbewahrungsrichtlinien auf Branchen- und Tag-Ebene gesteuert wird. Weitere Informationen dazu finden Sie im Abschnitt [Verzweigungen und Tagging](https://iceberg.apache.org/docs/latest/branching/#overview) in der Iceberg-Dokumentation.

1. Überprüfen Sie die Konfiguration und wählen Sie **Optimierung aktivieren** aus.

   Warten Sie einige Minuten, bis der Aufbewahrungsoptimierer ausgeführt wird und alte Snapshots, die auf der Konfiguration basieren, ablaufen.

------
#### [ AWS CLI ]

 Um die Aufbewahrung von Snapshots für neue Iceberg-Tabellen in zu aktivieren AWS Glue, müssen Sie einen Tabellenoptimierer des Typs erstellen `retention` und das `enabled` Feld auf `true` in setzen. `table-optimizer-configuration` Sie können dies mit dem AWS CLI Befehl `create-table-optimizer` oder tun. `update-table-optimizer` Darüber hinaus müssen Sie die Felder für die Aufbewahrungskonfiguration wie `snapshotRetentionPeriodInDays` und `numberOfSnapshotsToRetain` Ihren Anforderungen entsprechend angeben.

Im folgenden Beispiel wird veranschaulicht, wie der Snapshot-Aufbewahrungsoptimierer aktiviert wird. Ersetzen Sie die Konto-ID durch eine gültige AWS Konto-ID. Ersetzen Sie den Datenbanknamen und den Tabellennamen durch die tatsächlichen Tabellen- und Datenbanknamen in Iceberg. Ersetzen Sie das `roleArn` durch den AWS Ressourcennamen (ARN) der IAM-Rolle und den Namen der IAM-Rolle, die über die erforderlichen Berechtigungen verfügt, um den Snapshot Retention Optimizer auszuführen. 

```
aws glue create-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":'true', "vpcConfiguration":{
"glueConnectionName":"glue_connection_name"}, "retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}'\
  --type retention
```

 Mit diesem Befehl wird ein Aufbewahrungsoptimierer für die angegebene Iceberg-Tabelle im angegebenen Katalog und in der angegebenen Datenbank und Region erstellt. Der table-optimizer-configuration spezifiziert den zu verwendenden ARN der IAM-Rolle, aktiviert den Optimierer und legt die Aufbewahrungskonfiguration fest. In diesem Beispiel werden Snapshots 7 Tage lang aufbewahrt, es werden mindestens 3 Snapshots aufbewahrt und abgelaufene Dateien werden bereinigt. 
+  snapshotRetentionPeriodInDays — Die Anzahl der Tage, für die Snapshots aufbewahrt werden sollen, bevor sie ablaufen. Der Standardwert ist `5`. 
+ numberOfSnapshotsToRetain — Die Mindestanzahl von Snapshots, die aufbewahrt werden müssen, auch wenn sie älter als die Aufbewahrungsfrist sind. Der Standardwert ist `1`. 
+ cleanExpiredFiles — Ein boolescher Wert, der angibt, ob abgelaufene Datendateien nach ablaufenden Snapshots gelöscht werden sollen. Der Standardwert ist `true`.

   Wenn dieser Wert auf „true“ gesetzt ist, werden ältere Snapshots aus den Tabellenmetadaten entfernt, und die ihnen zugrunde liegenden Dateien werden gelöscht. Wenn dieser Parameter auf „false“ gesetzt ist, werden ältere Snapshots aus den Tabellenmetadaten entfernt, aber die ihnen zugrunde liegenden Dateien verbleiben als verwaiste Dateien im Speicher. 

------
#### [ AWS API ]

Rufen Sie [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer)den Vorgang auf, um den Snapshot Retention Optimizer für eine Tabelle zu aktivieren.

------

Nachdem Sie die Verdichtung aktiviert haben, werden auf der Registerkarte **Tabellenoptimierung** die folgenden Verdichtungsdetails angezeigt (nach etwa 15 bis 20 Minuten):

Startzeit  
Die Zeit, zu der der Snapshot-Aufbewahrungsoptimierer gestartet wurde. Der Wert ist ein Zeitstempel in UTC-Zeit. 

Run time (Laufzeit)  
Die Zeit gibt an, wie lange der Optimierer benötigt, um die Aufgabe abzuschließen. Der Wert ist ein Zeitstempel in UTC-Zeit. 

Status  
Der Status der Optimiererausführung. Die Werte sind „Erfolgreich“ oder „Fehlgeschlagen“.

Datendateien gelöscht  
Gesamtzahl der gelöschten Dateien.

Manifestdateien gelöscht  
Gesamtzahl der gelöschten Manifestdateien.

Manifestlisten gelöscht  
Gesamtzahl der gelöschten Manifestlisten.

# Aktualisieren des Snapshot-Aufbewahrungsoptimierers
<a name="update-snapshot-retention"></a>

 Sie können die bestehende Konfiguration eines Snapshot-Aufbewahrungsoptimierers für eine bestimmte Apache Iceberg-Tabelle mithilfe der AWS Glue Konsole oder der AWS CLI UpdateTableOptimizer API aktualisieren. 

------
#### [ Console ]

**So aktualisieren Sie die Konfiguration der Snapshot-Aufbewahrung:**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)

1. Wählen Sie **Datenkatalog** und dann **Tabellen** aus. In der Liste der Tabellen wählen Sie die Iceberg-Tabelle aus, für die Sie die Konfiguration des Snapshot-Aufbewahrungsoptimierers aktualisieren möchten.

1. Wählen Sie unten auf der Seite **Tabellendetails** die Registerkarte **Tabellenoptimierung** und dann **Bearbeiten** aus. Sie können auch im Menü **Aktionen** oben rechts auf der Seite die Option **Bearbeiten** unter **Optimierung** auswählen.

1.  Nehmen Sie auf der Seite **Optimierung bearbeiten** die gewünschten Änderungen vor. 

1.  Wählen Sie **Speichern**. 

------
#### [ AWS CLI ]

 Um einen Snapshot Retention Optimizer mit dem zu aktualisieren AWS CLI, können Sie den folgenden Befehl verwenden: 

```
aws glue update-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role"","enabled":'true', "vpcConfiguration":{"glueConnectionName":"glue_connection_name"},"retentionConfiguration":{"icebergConfiguration":{"snapshotRetentionPeriodInDays":7,"numberOfSnapshotsToRetain":3,"cleanExpiredFiles":'true'}}}' \
 --type retention
```

 Mit diesem Befehl wird die Aufbewahrungsdokumentation für die angegebene Tabelle im angegebenen Katalog und in der angegebenen Datenbank und Region aktualisiert. Folgende sind die wichtigsten Parameter: 
+  snapshotRetentionPeriodInDays — Die Anzahl der Tage, für die Snapshots aufbewahrt werden sollen, bevor sie ablaufen. Der Standardwert ist `1`. 
+ numberOfSnapshotsToRetain — Die Mindestanzahl von Snapshots, die aufbewahrt werden müssen, auch wenn sie älter als die Aufbewahrungsfrist sind. Der Standardwert ist `5`. 
+ cleanExpiredFiles — Ein boolescher Wert, der angibt, ob abgelaufene Datendateien nach ablaufenden Snapshots gelöscht werden sollen. Der Standardwert ist `true`. 

   Wenn dieser Wert auf „true“ gesetzt ist, werden ältere Snapshots aus den Tabellenmetadaten entfernt, und die ihnen zugrunde liegenden Dateien werden gelöscht. Wenn dieser Parameter auf „false“ gesetzt ist, werden ältere Snapshots aus den Tabellenmetadaten entfernt, aber die ihnen zugrunde liegenden Dateien verbleiben als verwaiste Dateien im Speicher. 

------
#### [ API ]

Um einen Tabellenoptimierer zu aktualisieren, können Sie die `UpdateTableOptimizer`-API verwenden. Mit dieser API können Sie die Konfiguration eines vorhandenen Tabellenoptimierers für die Komprimierung, Aufbewahrung oder Entfernung von verwaisten Dateien aktualisieren. Zu den Anforderungsparametern zählen:
+ catalogId (erforderlich): Die ID des Katalogs, der die Tabelle enthält 
+  databaseName (optional): Der Name der Datenbank, die die Tabelle enthält 
+  tableName (optional): Der Name der Tabelle 
+  type (erforderlich): Der Typ des Tabellenoptimierers (Komprimierung, Aufbewahrung oder Entfernung von verwaisten Dateien) 
+  RetentionConfiguration (erforderlich): Die aktualisierte Konfiguration für den Tabellenoptimierer, einschließlich Rollen-ARN, Aktivierungsstatus, Aufbewahrungskonfiguration und Konfiguration zum Entfernen verwaister Dateien. 

------

# Deaktivieren des Snapshot-Aufbewahrungsoptimierers
<a name="disable-snapshot-retention"></a>

 Sie können den Snapshot Retention Optimizer für eine bestimmte Apache Iceberg-Tabelle mithilfe der AWS Glue Konsole oder deaktivieren. AWS CLI

------
#### [ Console ]

**Deaktivieren der Snapshot-Aufbewahrung**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter. [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)

1. Wählen Sie **Datenkatalog** und dann **Tabellen** aus. In der Liste der Tabellen wählen Sie die Iceberg-Tabelle aus, für die Sie die Konfiguration des Optimierer für die Snapshot-Aufbewahrung aktualisieren möchten.

1. Wählen Sie im unteren Bereich der **Tabellendetailseite** unter **Aktionen** die Option **Tabellenoptimierung** und **Deaktivieren**, **Snapshot-Aufbewahrung** aus.

   Sie können auch im Menü **Aktionen** oben rechts auf der Seite die Option **Deaktivieren** unter **Optimierung** auswählen.

1.  Klicken Sie in der Bestätigungsmeldung auf **Deaktivieren**. Sie können den Snapshot-Aufbewahrungsoptimierer später wieder aktivieren. 

    Nachdem Sie die Deaktivierung bestätigt haben, wird Snapshot-Aufbewahrungsoptimierer deaktiviert und der Status für Snapshots wird wieder auf `Not enabled` gesetzt.

------
#### [ AWS CLI ]

Ersetzen Sie im folgenden Beispiel die Konto-ID durch eine gültige AWS Konto-ID. Ersetzen Sie den Datenbanknamen und den Tabellennamen durch die tatsächlichen Tabellen- und Datenbanknamen in Iceberg. Ersetzen Sie das `roleArn` durch den AWS Ressourcennamen (ARN) der IAM-Rolle und den tatsächlichen Namen der IAM-Rolle, die über die erforderlichen Berechtigungen zum Ausführen des Aufbewahrungsoptimierers verfügt.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "vpcConfiguration":{"glueConnectionName":"glue_connection_name"}, "enabled":'false'}'\ 
  --type retention
```

------
#### [ AWS API ]

Rufen Sie [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer)den Vorgang auf, um den Snapshot-Aufbewahrungsoptimizer für eine bestimmte Tabelle zu deaktivieren.

------

# Löschen verwaister Dateien
<a name="orphan-file-deletion"></a>

 AWS Glue Data Catalog ermöglicht es Ihnen, verwaiste Dateien aus Ihren Iceberg-Tabellen zu entfernen. Verwaiste Dateien sind nicht referenzierte Dateien, die in Ihrer Amazon-S3-Datenquelle unter dem angegebenen Tabellenort vorhanden sind, nicht von den Iceberg-Tabellenmetadaten verfolgt werden und älter als die von Ihnen konfigurierte Altersgrenze sind. Diese verwaisten Dateien können sich im Laufe der Zeit aufgrund von Fehlern bei Vorgängen wie Komprimierung, Partitionslöschungen oder Tabellenumschreibungen ansammeln und unnötigen Speicherplatz beanspruchen.

Der Optimierer für das Löschen verwaister Dateien AWS Glue scannt die Tabellenmetadaten und die eigentlichen Datendateien, identifiziert die verwaisten Dateien und löscht sie, um Speicherplatz freizugeben. Der Optimierer entfernt nur Dateien, die nach dem Erstellungsdatum des Optimierers erstellt wurden und auch die konfigurierten Löschkriterien erfüllen. Dateien, die vor oder am Erstellungsdatum des Optimierers erstellt wurden, werden niemals gelöscht.

**Logik zum Löschen verwaister Dateien**

1. Datumsprüfung – vergleicht das Erstellungsdatum der Datei mit dem Erstellungsdatum des Optimierers. Wenn die Datei mindestens so alt ist wie der Optimierer, wird die Datei übersprungen.

1. Konfigurationsprüfung des Optimierers – wenn die Datei neuer als der Optimierers ist, wird die Datei anhand der konfigurierten Altersbeschränkung bewertet. Der Optimierer löscht die Datei, wenn sie den Löschkriterien entspricht. Die Datei wird übersprungen, wenn sie den Kriterien nicht entspricht.

 Sie können das Löschen verwaister Dateien initiieren, indem Sie im Datenkatalog einen Tabellenoptimierer für das Löschen verwaister Dateien erstellen.

**Wichtig**  
 Standardmäßig werden beim Löschen verwaister Dateien Dateien an Ihrem gesamten Speicherort in der Tabelle ausgewertet. AWS Glue Sie können zwar mithilfe eines API-Parameters ein Unterpräfix konfigurieren, um den Umfang der Auswertung einzuschränken, müssen jedoch sicherstellen, dass Ihr Tabellenspeicherort keine Dateien aus anderen Datenquellen oder Tabellen enthält. Wenn sich Ihr Tabellenspeicherort mit anderen Datenquellen überschneidet, identifiziert und löscht der Dienst möglicherweise nicht zugehörige Dateien als verwaiste Dateien. 

**Topics**
+ [Aktivieren des Löschens verwaister Dateien](enable-orphan-file-deletion.md)
+ [Aktualisieren des Optimierers für das Löschen verwaister Dateien](update-orphan-file-deletion.md)
+ [Deaktivieren der Löschung verwaister Dateien](disable-orphan-file-deletion.md)

# Aktivieren des Löschens verwaister Dateien
<a name="enable-orphan-file-deletion"></a>

 Sie können die AWS Glue Konsole oder die AWS API verwenden AWS CLI, um das Löschen verwaister Dateien für Ihre Apache Iceberg-Tabellen im Datenkatalog zu aktivieren. Bei neuen Tabellen können Sie Apache Iceberg als Tabellenformat auswählen und beim Erstellen der Tabelle den Optimierer zum Löschen verwaister Dateien aktivieren. Für neue Tabellen ist die Snapshot-Aufbewahrung standardmäßig deaktiviert.

------
#### [ Console ]

**So aktivieren Sie das Löschen verwaister Dateien**

1.  Öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)und melden Sie sich als Data Lake-Administrator, als Tabellenersteller oder als Benutzer an, dem die `lakeformation:GetDataAccess` Berechtigungen `glue:UpdateTable` und für die Tabelle erteilt wurden. 

1. Wählen Sie im Navigationsbereich unter **Datenkatalog** die Option **Tabellen** aus.

1. Wählen Sie auf der Seite **Tabellen** eine Iceberg-Tabelle aus, für die Sie das Löschen verwaister Dateien aktivieren möchten.

   Wählen Sie im unteren Bereich der Seite die Registerkarte **Tabellenoptimierung** und dann unter **Aktionen** die Optionen **Aktivieren** und **Löschen verwaister Dateien** aus. 

   Sie können auch im **Aktionsmenü** oben rechts die Option **Aktivieren** unter **Optimierung** auswählen.

1. Wählen Sie auf der Seite **Optimierung aktivieren** unter **Optimierungsoptionen** die Option **Löschen verwaister Dateien** aus.

1. Wenn Sie die **Standardeinstellungen** verwenden, werden alle verwaisten Dateien nach 3 Tagen gelöscht. Wenn Sie die verwaisten Dateien für eine bestimmte Anzahl von Tagen behalten möchten, wählen Sie **Einstellungen anpassen** aus.

1. Als Nächstes wählen Sie eine IAM-Rolle mit den erforderlichen Berechtigungen zum Löschen verwaister Dateien.

1. Wenn Sie Sicherheitsrichtlinien-Konfigurationen haben, bei denen der Iceberg-Tabellenoptimierer von einer bestimmten Virtual Private Cloud (VPC) aus auf Amazon S3 S3-Buckets zugreifen muss, stellen Sie eine AWS Glue Netzwerkverbindung her oder verwenden Sie eine bestehende.

   Wenn Sie noch keine AWS Glue VPC-Verbindung eingerichtet haben, erstellen Sie eine neue, indem Sie die Schritte im Abschnitt [Verbindungen für Konnektoren erstellen](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) mithilfe der AWS Glue Konsole oder des AWS CLI/SDKs ausführen.

1. Wenn Sie **Einstellungen anpassen** auswählen, geben Sie unter **Konfiguration zum Löschen verwaister Dateien** die Anzahl der Tage ein, für die die Dateien vor dem Löschen beibehalten werden sollen. Sie können auch das Intervall zwischen zwei aufeinanderfolgenden Optimiererausführungen angeben. Der Standardwert beträgt 24 Stunden.

1. Wählen Sie **Optimierung aktivieren** aus.

------
#### [ AWS CLI ]

 Um das Löschen verwaister Dateien für eine Iceberg-Tabelle in zu aktivieren AWS Glue, müssen Sie einen Tabellenoptimierer vom Typ 1 erstellen `orphan_file_deletion` und das Feld auf true setzen. `enabled` Um mit dem einen Optimizer für das Löschen verwaister Dateien für eine Iceberg-Tabelle zu erstellen AWS CLI, können Sie den folgenden Befehl verwenden:

```
aws glue create-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":true, "vpcConfiguration":{
"glueConnectionName":"glue_connection_name"}, "orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":3, "location":'S3 location'}}}'\
 --type orphan_file_deletion
```

 Dieser Befehl erstellt einen Optimierer für das Löschen verwaister Dateien für die angegebene Iceberg-Tabelle. Folgende sind die wichtigsten Parameter:
+ roleArn – der ARN der IAM-Rolle mit Berechtigungen für den Zugriff auf den S3-Bucket und die Glue-Ressourcen.
+ aktiviert – auf „true“ festlegen, um den Optimierer zu aktivieren.
+ orphanFileRetentionPeriodInDays — Die Anzahl der Tage, für die verwaiste Dateien aufbewahrt werden sollen, bevor sie gelöscht werden (mindestens 1 Tag).
+ Typ – auf „orphan\$1file\$1deletion“ setzen, um einen Optimierer für das Löschen verwaister Dateien zu erstellen.

 Nach der Erstellung des Tabellenoptimierers wird das Löschen verwaister Dateien in regelmäßigen Abständen durchgeführt (einmal täglich, sofern aktiviert). Sie können die Ausführungen mithilfe der `list-table-optimizer-runs`-API überprüfen. Der Auftrag zum Löschen verwaister Dateien identifiziert und löscht Dateien, die nicht in den Iceberg-Metadaten für die Tabelle erfasst sind.

------
#### [ API ]

Rufen Sie den [CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer)Vorgang auf, um den Optimizer für das Löschen verwaister Dateien für eine bestimmte Tabelle zu erstellen.

------

# Aktualisieren des Optimierers für das Löschen verwaister Dateien
<a name="update-orphan-file-deletion"></a>

 Sie können die Konfiguration für den Optimizer für das Löschen verwaister Dateien ändern, z. B. den Aufbewahrungszeitraum für verwaiste Dateien oder die vom Optimierer verwendete IAM-Rolle mithilfe der AWS Glue Konsole oder des Vorgangs ändern. AWS CLI`UpdateTableOptimizer` 

------
#### [ AWS-Managementkonsole ]

**So aktualisieren Sie den Optimierer für das Löschen verwaister Dateien**

1.  Wählen Sie **Datenkatalog** und dann **Tabellen** aus. In der Liste der Tabellen wählen Sie die Tabelle aus, für die Sie die Konfiguration des Optimierers für das Löschen verwaister Dateien aktualisieren möchten.

1. Wählen Sie unten auf der Seite **Tabellendetails** die Registerkarte **Tabellenoptimierung** und dann **Bearbeiten** aus. 

1.  Nehmen Sie auf der Seite **Optimierung bearbeiten** die gewünschten Änderungen vor. 

1.  Wählen Sie **Speichern**. 

------
#### [ AWS CLI ]

 Sie können den `update-table-optimizer` Aufruf verwenden, um den Optimizer für das Löschen verwaister Dateien in zu aktualisieren, Sie können Call verwenden. AWS Glue Auf diese Weise können Sie die `OrphanFileDeletionConfiguration` im Feld `icebergConfiguration` ändern, in dem Sie den aktualisierten `OrphanFileRetentionPeriodInDays`-Wert angeben können. Damit können Sie die Anzahl der Tage für die Aufbewahrung verwaister Dateien festlegen und den Speicherort der Iceberg-Tabelle angeben, aus dem verwaiste Dateien gelöscht werden sollen. 

```
aws glue update-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name Iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":true, "vpcConfiguration":{"glueConnectionName":"glue_connection_name"},"orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":5}}}' \
 --type orphan_file_deletion
```

------
#### [ API ]

Rufen Sie den [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer)Vorgang auf, um den Optimizer für das Löschen verwaister Dateien für eine Tabelle zu aktualisieren.

------

 

# Deaktivieren der Löschung verwaister Dateien
<a name="disable-orphan-file-deletion"></a>

 Sie können den Optimizer für das Löschen verwaister Dateien für eine bestimmte Apache Iceberg-Tabelle mithilfe AWS Glue der Konsole oder deaktivieren. AWS CLI

------
#### [ Console ]

**Deaktivieren der Löschung verwaister Dateien**

1. Wählen Sie **Datenkatalog** und dann **Tabellen** aus. Wählen Sie aus der Tabellenliste die Iceberg-Tabelle aus, für die Sie den Optimierer für die Löschung verwaister Dateien deaktivieren möchten.

1. Wählen Sie im unteren Bereich der Seite **Tabellendetails** die Registerkarte **Tabellenoptimierung** aus.

1. Wählen Sie **Aktionen** und anschließend **Deaktivieren**, **Löschen verwaister Dateien** aus.

   Sie können auch im Menü **Aktionen** unter **Optimierung** die Option **Deaktivieren** auswählen.

1.  Klicken Sie in der Bestätigungsmeldung auf **Deaktivieren**. Sie können den Optimierer zum Löschen verwaister Dateien zu einem späteren Zeitpunkt wieder aktivieren. 

    Nach Ihrer Bestätigung wird der Optimierer zum Löschen verwaister Dateien deaktiviert und der Status für das Löschen verwaister Dateien wechselt zurück zu `Not enabled`.

------
#### [ AWS CLI ]

Ersetzen Sie im folgenden Beispiel die Konto-ID durch eine gültige AWS Konto-ID. Ersetzen Sie den Datenbanknamen und den Tabellennamen durch die tatsächlichen Tabellen- und Datenbanknamen in Iceberg. Ersetzen Sie das `roleArn` durch den AWS Ressourcennamen (ARN) der IAM-Rolle und den tatsächlichen Namen der IAM-Rolle, die über die erforderlichen Berechtigungen zum Deaktivieren des Optimierers verfügt.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "enabled":'false'}'\ 
  --type orphan_file_deletion
```

------
#### [ API ]

Rufen Sie den [UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer)Vorgang auf, um den Snapshot-Aufbewahrungsoptimizer für eine bestimmte Tabelle zu deaktivieren.

------

# Anzeigen von Details zur Optimierung
<a name="view-optimization-status"></a>

Sie können den Optimierungsstatus für Apache Iceberg-Tabellen in der AWS Glue Konsole oder mithilfe von AWS API-Operationen anzeigen. AWS CLI

------
#### [ Console ]

**Anzeigen des Optimierungsstatus für Iceberg-Tabellen (Konsole)**
+ **Sie können den Optimierungsstatus für Iceberg-Tabellen auf der AWS Glue Konsole anzeigen, indem Sie eine Iceberg-Tabelle aus der **Tabellenliste** unter Datenkatalog auswählen.** Unter **Tabellenoptimierung**. Wählen Sie **Alle anzeigen** aus.  
![\[Detailseite der Apache-Iceberg-Tabelle mit der Option „Compaction aktivieren“.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/table-list-compaction-status.png)

------
#### [  AWS CLI  ]

Sie können die Optimierungsdetails mit anzeigen. AWS CLI

Ersetzen Sie in den folgenden Beispielen die Konto-ID durch eine gültige AWS Konto-ID, den Datenbanknamen und den Tabellennamen durch den tatsächlichen Iceberg-Tabellennamen. Für `type` geben Sie einen Optimierungstyp an. Akzeptable Werte sind `compaction`, `retention` und `orphan-file-deletion`.
+ **Abrufen von Details der letzten Verdichtungsausführung für eine Tabelle**

  ```
  aws get-table-optimizer \
    --catalog-id 123456789012 \
    --database-name iceberg_db \
    --table-name iceberg_table \
    --type compaction
  ```
+ Verwenden Sie das folgende Beispiel, um den Verlauf eines Optimierers für eine bestimmte Tabelle abzurufen.

  ```
  aws list-table-optimizer-runs \
    --catalog-id 123456789012 \
    --database-name iceberg_db \
    --table-name iceberg_table \
    --type compaction
  ```
+ Im folgenden Beispiel wird gezeigt, wie Sie die Optimierungsausführung und die Konfigurationsdetails für mehrere Optimierer abrufen. Sie können maximal 20 Optimierer angeben.

  ```
  aws glue batch-get-table-optimizer \
  --entries '[{"catalogId":"123456789012", "databaseName":"iceberg_db", "tableName":"iceberg_table", "type":"compaction"}]'
  ```

------
#### [ API ]
+ Verwenden Sie die Operation `GetTableOptimizer`, um die Details der letzten Ausführung eines Optimierers abzurufen. 
+  Verwenden Sie die Operation `ListTableOptimizerRuns`, um den Verlauf eines bestimmten Optimierers für eine bestimmte Tabelle abzurufen. Sie können 20 Optimierer in einem einzigen API-Aufruf angeben. 
+ Verwenden Sie den [BatchGetTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-BatchGetTableOptimizer)Vorgang, um Konfigurationsdetails für mehrere Optimierer in Ihrem Konto abzurufen. 

------

# Amazon CloudWatch Metriken anzeigen
<a name="view-optimization-metrics"></a>

 Nach einer erfolgreichen Ausführung der Tabellenoptimierer erstellt der Service Amazon CloudWatch -Metriken zur Leistung des Optimierungsauftrags. Sie können zu den **CloudWatch Metriken gehen und **Metriken****, **Alle Metriken** auswählen. Sie können Metriken nach dem spezifischen Namespace (z. B. AWS Glue), dem Tabellennamen oder dem Datenbanknamen filtern.

 Weitere Informationen finden Sie unter [Anzeigen der verfügbaren Metriken](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) im *Benutzerhandbuch für Amazon CloudWatch *. 

****Verdichtung****
+ Anzahl der verdichteten Byte 
+ Anzahl der verdichteten Dateien
+ Anzahl der DPU, die dem Auftrag zugewiesen sind 
+ Auftragsdauer (Stunden) 

****Snapshot-Aufbewahrung****
+ Anzahl der gelöschten Datendateien 
+ Anzahl der gelöschten Manifestdateien
+ Anzahl der gelöschten Manifestlisten 
+ Auftragsdauer (Stunden)

****Löschen verwaister Dateien****
+ Anzahl der gelöschten verwaisten Dateien 
+ Auftragsdauer (Stunden) 

# Löschen eines Optimierers
<a name="delete-optimizer"></a>

Sie können einen Optimierer und die zugehörigen Metadaten für die Tabelle mithilfe AWS CLI unserer AWS API-Operation löschen.

Führen Sie den folgenden AWS CLI Befehl aus, um den Optimierungsverlauf für eine Tabelle zu löschen. Sie müssen den Optimizer `type` zusammen mit der Katalog-ID, dem Datenbanknamen und dem Tabellennamen angeben. Die akzeptablen Werte sind: `compaction`, `retention` und `orphan_file_deletion`.

```
aws glue delete-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --type compaction
```

 Verwenden Sie die Operation `DeleteTableOptimizer`, um einen Optimierer für eine Tabelle zu löschen.

# Überlegungen und Einschränkungen
<a name="optimizer-notes"></a>

 Dieser Abschnitt enthält Dinge, die bei der Verwendung von Tabellenoptimierern innerhalb von AWS Glue Data Catalog zu beachten sind. 

## Haltbarkeit und Richtigkeit
<a name="durability-correctness"></a>

**Standorte der S3-Tabellen:**

Wenn sich mehrere AWS Glue Data Catalog Tabellen denselben Amazon S3 S3-Speicherort teilen und Optimizer aktiviert sind, löscht der Optimizer für die Aufbewahrung von Snapshots oder das Löschen verwaister Dateien für eine Tabelle möglicherweise Dateien, auf die in der anderen Tabelle noch verwiesen wird. Stellen Sie sicher, dass jede Tabelle mit aktivierten Optimierern einen eindeutigen Amazon S3 S3-Speicherort hat, der nicht mit anderen Tabellen gemeinsam genutzt wird, einschließlich Tabellen in verschiedenen Datenbanken.

**Ablauf des S3-Lebenszyklus:**

Die Lebenszyklusablaufregeln von Amazon S3, die für Iceberg-Tabellenspeicherorte gelten, können Manifest- und Datendateien löschen, auf die noch in aktiven Snapshots verwiesen wird. Wenn Ihr Bucket über Lebenszyklusablaufregeln verfügt, stellen Sie sicher, dass diese den Speicherpfad der Iceberg-Tabelle ausschließen.

## Unterstützte Formate und Einschränkungen für die verwaltete Datenverdichtung
<a name="compaction-notes"></a>

Die Datenverdichtung unterstützt eine Vielzahl von Datentypen und Verdichtungsformaten zum Lesen und Schreiben von Daten, einschließlich des Lesens von Daten aus verschlüsselten Tabellen.

**Kontrolle der Parallelität:**

 Apache Iceberg unterstützt eine optimistische Parallelitätssteuerung, sodass mehrere Autoren gleichzeitig Operationen ausführen können. Konflikte werden beim Festschreiben erkannt und gelöst. Wenn Sie mit Streaming-Pipelines arbeiten, konfigurieren Sie über die Tabelleneigenschaften und die Komprimierungseinstellungen die entsprechenden Einstellungen für Wiederholungsversuche, um gleichzeitige Schreibvorgänge effektiv verarbeiten zu können. Eine ausführliche Anleitung finden Sie im AWS Big Data-Blog zur [Verwaltung gleichzeitiger](https://aws.amazon.com/blogs/big-data/manage-concurrent-write-conflicts-in-apache-iceberg-on-the-aws-glue-data-catalog/) Schreibvorgänge in Iceberg-Tabellen. 

**Wiederholungsversuche bei der Komprimierung:**

 Wenn Verdichtungsvorgänge viermal hintereinander fehlschlagen, unterbricht die Optimierung der AWS Glue Katalogtabelle den Optimizer automatisch, um einen unnötigen Verbrauch von Rechenressourcen zu verhindern. Untersuchen Sie zunächst die Protokolle und versuchen Sie herauszufinden, warum die Komprimierung wiederholt fehlschlägt. Um die Verdichtungsoptimierung wieder aufzunehmen, können Sie den Optimizer über die AWS Glue Konsole oder API erneut aktivieren. 

 **Die Datenverdichtung unterstützt:**
+ **Verschlüsselung**: Die Datenverdichtung unterstützt nur die standardmäßige Amazon-S3-Verschlüsselung (SSE-S3) und die serverseitige KMS-Verschlüsselung (SSE-KMS).
+ **Verdichtungsstrategien** — Binpack, Sortierung und Sortierung in Z-Reihenfolge
+ Sie können die Verdichtung über das Konto ausführen, in dem sich der Datenkatalog befindet, wenn sich der Amazon-S3-Bucket, in dem die zugrunde liegenden Daten gespeichert werden, in einem anderen Konto befindet. Dazu benötigt die Verdichtungsrolle Zugriff auf den Amazon-S3-Bucket.

 **Die Datenverdichtung unterstützt derzeit nicht:** 
+ **Verdichtung für kontoübergreifende Tabellen**: Sie können die Verdichtung nicht für kontoübergreifende Tabellen ausführen.
+ **Verdichtung für regionsübergreifende Tabellen**: Sie können die Verdichtung nicht für regionsübergreifende Tabellen ausführen.
+ **Aktivieren der Verdichtung für Ressourcenlinks**
+ **Tabellen in der Amazon S3 Express One Zone-Speicherklasse** — Sie können keine Komprimierung auf Amazon S3 Express One Zone Iceberg Tables ausführen. 
+ **Bei der Verdichtungsstrategie mit Z-Reihenfolge werden die folgenden Datentypen nicht unterstützt:**
  + Dezimal
  + TimestampWithoutZone

## Überlegungen zu Optimierungsprogrammen für die Aufbewahrung von Snapshots und das Löschen verwaister Dateien
<a name="retention-notes"></a>

Die folgenden Überlegungen gelten für Optimierungsprogramme für die Aufbewahrung von Snapshots und das Löschen verwaister Dateien. 
+ Die Prozesse zur Aufbewahrung von Snapshots und zum Löschen verwaister Dateien haben eine maximale Grenze von 1 000 000 Dateien pro Ausführung. Wenn beim Löschen abgelaufener Snapshots die Anzahl der zum Löschen infrage kommenden Dateien 1 000 000 überschreitet, bleiben alle darüber hinausgehenden Dateien als verwaiste Dateien im Tabellenspeicher erhalten. 
+ Snapshots werden vom Optimierungsprogramm nur dann aufbewahrt, wenn beide Kriterien erfüllt sind: die Mindestanzahl der aufzubewahrenden Snapshots und der festgelegte Aufbewahrungszeitraum.
+ Das Optimierungsprogramm für die Aufbewahrung von Snapshots löscht abgelaufene Snapshot-Metadaten aus Apache Iceberg, wodurch Zeitreiseabfragen für abgelaufene Snapshots verhindert und zugehörige Datendateien optional gelöscht werden.
+  Das Optimierungsprogramm zum Löschen verwaister Dateien löscht verwaiste Daten- und Metadatendateien, auf die von den Iceberg-Metadaten nicht mehr verwiesen wird, wenn ihr Erstellungszeitpunkt vor der Aufbewahrungsfrist für verwaiste Dateien zum Zeitpunkt der Ausführung des Optimierungsprogramms liegt.
+ Apache Iceberg erleichtert die Versionskontrolle durch Branches und Tags, bei denen es sich um benannte Verweise auf bestimmte Snapshot-Zustände handelt. Jeder Branch und jedes Tag folgt seinem eigenen unabhängigen Lebenszyklus, der durch die auf den jeweiligen Ebenen definierten Aufbewahrungsrichtlinien geregelt wird. Die AWS Glue Data Catalog Optimierer berücksichtigen diese Lebenszyklusrichtlinien und stellen so die Einhaltung der angegebenen Aufbewahrungsregeln sicher. Aufbewahrungsrichtlinien auf Branch- und Tag-Ebene haben Vorrang vor den Optimierungskonfigurationen. 

   Weitere Informationen finden Sie unter [Branching and Tagging](https://iceberg.apache.org/docs/nightly/branching/) in der Apache-Iceberg-Dokumentation. 
+ Optimierungsprogramme für die Aufbewahrung von Snapshots und das Löschen verwaister Dateien löschen Dateien, die gemäß den konfigurierten Parametern für die Bereinigung infrage kommen. Verbessern Sie Ihre Kontrolle über das Löschen von Dateien, indem Sie S3-Versionsverwaltung und Lebenszyklusrichtlinien für die entsprechenden Buckets implementieren.

   Ausführliche Anweisungen zum Einrichten der Versionsverwaltung und zum Erstellen von Lebenszyklusregeln finden Sie unter [https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html). 
+  Stellen Sie für die korrekte Ermittlung verwaister Dateien sicher, dass sich der angegebene Speicherort der Tabelle und alle Unterpfade nicht mit Daten aus anderen Tabellen oder Datenquellen überschneiden oder diese enthalten. Wenn sich Pfade überschneiden, riskieren Sie einen unwiederbringlichen Datenverlust durch unbeabsichtigtes Löschen von Dateien. 

## OversizedAllocationException Ausnahme beim Debuggen
<a name="debug-exception"></a>

So beheben Sie eine `OversizedAllocationException`-Ausnahme:
+ Reduzieren Sie die Stapelgröße des vektorisierten Readers und überprüfen Sie das Ergebnis. Die Standardstapelgröße ist 5000. Dies wird in `read.parquet.vectorization.batch-size` gesteuert.
  + Wenn dies auch nach mehreren Variationen nicht funktioniert, deaktivieren Sie die Vektorisierung. Dies wird in `read.parquet.vectorization.enabled` gesteuert.

# Unterstützte Regionen für Tabellenoptimierer
<a name="regions-optimizers"></a>

Die Tabellenoptimierungsfunktionen (Komprimierung, Aufbewahrung von Snapshots und Löschen verwaister Dateien) für AWS Glue Data Catalog sind im Folgenden verfügbar: AWS-Regionen
+ Asien-Pazifik (Tokio)
+ Asien-Pazifik (Seoul)
+ Asien-Pazifik (Mumbai)
+ Asien-Pazifik (Singapur)
+ Asien-Pazifik (Sydney)
+ Asien-Pazifik (Jakarta)
+ Kanada (Zentral)
+ Europa (Irland)
+ Europa (London)
+ Europa (Frankfurt)
+ Europa (Stockholm)
+ USA Ost (Nord-Virginia)
+ USA Ost (Ohio)
+ USA West (Oregon)
+ Südamerika (São Paulo)

# Optimieren der Abfrageleistung für Iceberg-Tabellen
<a name="iceberg-column-statistics"></a>

Apache Iceberg ist ein leistungsstarkes Open-Table-Format für riesige analytische Datensätze. AWS Glue unterstützt die Berechnung und Aktualisierung der Anzahl unterschiedlicher Werte (NDVs) für jede Spalte in Iceberg-Tabellen. Diese Statistiken können Dateningenieuren und Wissenschaftlern, die mit großen Datensätzen arbeiten, eine bessere Abfrageoptimierung, Datenverwaltung und Leistungseffizienz ermöglichen.

 AWS Glue schätzt die Anzahl der unterschiedlichen Werte in jeder Spalte der Iceberg-Tabelle und speichert sie [in Puffin-Dateien](https://iceberg.apache.org/puffin-spec/) auf Amazon S3, die mit Iceberg-Tabellen-Snapshots verknüpft sind. Puffin ist ein Iceberg-Dateiformat, das für die Speicherung von Metadaten wie Indizes, Statistiken und Skizzen entwickelt wurde. Die Speicherung von Skizzen in Puffin-Dateien, die mit Snapshots verknüpft sind, gewährleistet die Transaktionskonsistenz und Aktualität der NDV-Statistiken.

Sie können konfigurieren, dass die Aufgabe zur Generierung von Spaltenstatistiken über die Konsole oder ausgeführt wird. AWS Glue AWS CLI Wenn Sie den Prozess starten, AWS Glue wird ein Spark-Job im Hintergrund gestartet und die AWS Glue Tabellenmetadaten im Datenkatalog aktualisiert. Sie können Spaltenstatistiken über die AWS Glue Konsole AWS CLI oder durch Aufrufen des [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html)API-Vorgangs anzeigen.

**Anmerkung**  
Wenn Sie AWS Lake Formation Berechtigungen verwenden, um den Zugriff auf die Tabelle zu steuern, erfordert die Rolle, die die Aufgabe für die Spaltenstatistik einnimmt, vollständigen Tabellenzugriff, um Statistiken zu generieren.

**Topics**
+ [Voraussetzungen für die Generierung von Spaltenstatistiken](iceberg-column-stats-prereqs.md)
+ [Generieren von Spaltenstatistiken für Iceberg-Tabellen](iceberg-generate-column-stats.md)
+ [Weitere Informationen finden Sie auch unter](#see-also-iceberg-stats)

# Voraussetzungen für die Generierung von Spaltenstatistiken
<a name="iceberg-column-stats-prereqs"></a>

Um Spaltenstatistiken für Iceberg-Tabellen zu generieren oder zu aktualisieren, übernimmt die Statistikgenerierungsaufgabe in Ihrem AWS Identity and Access Management Namen eine (IAM-) Rolle. Basierend auf den der Rolle erteilten Berechtigungen kann die Aufgabe zur Generierung von Spaltenstatistiken die Daten aus dem Amazon-S3-Datenspeicher lesen.

Wenn Sie die Aufgabe zur Generierung von Spaltenstatistiken konfigurieren, AWS Glue können Sie eine Rolle erstellen, die die `AWSGlueServiceRole` AWS verwaltete Richtlinie sowie die erforderliche Inline-Richtlinie für die angegebene Datenquelle umfasst. 

Wenn Sie eine vorhandene Rolle für das Generieren von Spaltenstatistiken angeben, stellen Sie sicher, dass dieser die `AWSGlueServiceRole`-Richtlinie oder eine gleichwertige Version dieser Richtlinie (oder eine reduzierte Version) sowie die erforderlichen Inline-Richtlinien enthält.

Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unter [Voraussetzungen für die Generierung von Spaltenstatistiken](column-stats-prereqs.md). 

# Generieren von Spaltenstatistiken für Iceberg-Tabellen
<a name="iceberg-generate-column-stats"></a>

Gehen Sie wie folgt vor, um einen Zeitplan für die Generierung von Statistiken im Datenkatalog mithilfe der AWS Glue Konsole AWS CLI oder oder des **StartColumnStatisticsTaskRun**Vorgangs zu konfigurieren.

**Generieren von Spaltenstatistiken**

1. Melden Sie sich bei der AWS Glue Konsole an unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Wählen Sie unter „Datenkatalog“ die Option **Tabellen** aus.

1. Wählen Sie eine Iceberg-Tabelle aus der Liste aus. 

1. Wählen Sie im Menü **Aktionen** die Option **Spaltenstatistiken**, **Auf Abruf generieren** aus.

   Sie können auch im unteren Bereich der Seite **Tabellen** auf der Registerkarte **Spaltenstatistiken** die Schaltfläche **Statistik generieren** auswählen.

1. Geben Sie auf der Seite **Statistiken generieren** die Details zur Statistikgenerierung an. Folgen Sie den Schritten 6–11 im Abschnitt [Planmäßige Generierung von Spaltenstatistiken](generate-column-stats.md), um einen Zeitplan für die Statistikgenerierung für Iceberg-Tabellen zu konfigurieren. 

   Sie können sich auch dafür entscheiden, Spaltenstatistiken bei Bedarf zu generieren, indem Sie den Anweisungen unter [On-Demand-Generierung von Spaltenstatistiken](column-stats-on-demand.md) folgen.
**Anmerkung**  
Die Probenahmeoption ist für Iceberg-Tabellen nicht verfügbar.

   AWS Glue berechnet die Anzahl der unterschiedlichen Werte für jede Spalte der Iceberg-Tabelle in einer neuen Puffin-Datei, die an die angegebene Snapshot-ID an Ihrem Amazon S3-Standort übergeben wurde.

## Weitere Informationen finden Sie auch unter
<a name="see-also-iceberg-stats"></a>
+ [Anzeigen von Spaltenstatistiken](view-column-stats.md)
+ [Anzeigen von Spaltenstatistik-Aufgabenläufen](view-stats-run.md)
+ [Beenden des Spaltenstatistik-Aufgabenlaufs](stop-stats-run.md)
+ [Löschen von Spaltenstatistiken](delete-column-stats.md)

# Verwalten des Datenkatalogs
<a name="manage-catalog"></a>

 Das AWS Glue Data Catalog ist ein zentrales Metadaten-Repository, das strukturelle und betriebliche Metadaten für Ihre Amazon S3 S3-Datensätze speichert. Eine effektive Data-Catalog-Verwaltung ist entscheidend für die Aufrechterhaltung der Datenqualität, Leistung, Sicherheit und Verwaltung.

 Wenn Sie diese Methoden zur Data-Catalog-Verwaltung verstehen und anwenden, können Sie sicherstellen, dass Ihre Metadaten korrekt, leistungsfähig, sicher und gut verwaltet bleiben, während sich Ihre Datenlandschaft weiterentwickelt. 

In diesem Abschnitt werden die folgenden Aspekte der Data-Catalog-Verwaltung behandelt:
+ *Aktualisierung des Tabellenschemas und der Partitionen*   Während sich Ihre Daten weiterentwickeln, müssen Sie möglicherweise das im Datenkatalog definierte Tabellenschema oder die Partitionsstruktur aktualisieren. Weitere Informationen darüber, wie Sie diese Aktualisierungen mithilfe von AWS Glue ETL programmgesteuert vornehmen können, finden Sie unter. [Aktualisieren des Schemas und Hinzufügen neuer Partitionen im Datenkatalog mit AWS Glue-ETL-Aufträgen](update-from-job.md)
+ *Verwalten von Spaltenstatistiken*: Präzise Spaltenstatistiken helfen dabei, Abfragepläne zu optimieren und die Leistung zu verbessern. Weitere Informationen zum Generieren, Aktualisieren und Verwalten von Spaltenstatistiken finden Sie unter [Optimieren der Abfrageleistung mithilfe von Spaltenstatistiken](column-statistics.md). 
+  *Den Datenkatalog verschlüsseln* Um vertrauliche Metadaten zu schützen, können Sie Ihren Datenkatalog mit () verschlüsseln. AWS Key Management Service AWS KMS In diesem Abschnitt erfahren Sie, wie Sie die Verschlüsselung für Ihren Datenkatalog aktivieren und verwalten können. 
+ *Sichern des Datenkatalogs mit AWS Lake Formation*   Lake Formation bietet einen umfassenden Ansatz für die Sicherheit und Zugriffskontrolle von Data Lakes. Sie können Lake Formation verwenden, um den Zugriff auf Ihren Datenkatalog und die zugrunde liegenden Daten zu sichern und zu steuern. 

**Topics**
+ [Aktualisieren des Schemas und Hinzufügen neuer Partitionen im Datenkatalog mit AWS Glue-ETL-Aufträgen](update-from-job.md)
+ [Optimieren der Abfrageleistung mithilfe von Spaltenstatistiken](column-statistics.md)
+ [Verschlüsseln Ihres Data Catalog](catalog-encryption.md)
+ [Sicherung Ihres Datenkatalogs mit Lake Formation](secure-catalog.md)
+ [Arbeiten mit AWS Glue Data Catalog Ansichten in AWS Glue](catalog-views.md)

# Aktualisieren des Schemas und Hinzufügen neuer Partitionen im Datenkatalog mit AWS Glue-ETL-Aufträgen
<a name="update-from-job"></a>

Der ETL-Auftrag zum Extrahieren, Transformieren oder Laden kann neue Tabellenpartitionen im Zieldatenspeicher erstellen. Das Datensatzschema kann sich im Zeitverlauf entwickeln und vom AWS Glue-Data-Catalog-Schema mit der Zeit abweichen. AWS Glue ETL-Aufträge stellen mehrere Features bereit, die Sie im ETL-Skript verwenden können, um das Schema und die Partitionen im Data Catalog zu aktualisieren. Mit diesen Features können Sie die Ergebnisse der ETL-Arbeit im Data Catalog anzeigen, ohne den Crawler erneut ausführen zu müssen.

## Neue Partitionen
<a name="update-from-job-partitions"></a>

Wenn Sie die neuen Partitionen in anzeigen möchten AWS Glue Data Catalog, können Sie einen der folgenden Schritte ausführen:
+ Führen Sie nach Abschluss des Auftrags den Crawler erneut aus und zeigen Sie die neuen Partitionen auf der Konsole an, wenn der Crawler beendet ist.
+ Wenn der Auftrag abgeschlossen ist, können Sie sofort die neuen Partitionen auf der Konsole anzeigen, ohne den Crawler erneut ausführen zu müssen. Sie können dieses Feature aktivieren, indem Sie Ihrem ETL-Skript einige Codezeilen hinzufügen, wie in den folgenden Beispielen gezeigt. Der Code verwendet das `enableUpdateCatalog`-Argument, um anzuzeigen, dass der Data Catalog während der Auftragsausführung aktualisiert werden soll, wenn die neuen Partitionen erstellt werden.

**Methode 1**  
Übergeben Sie `enableUpdateCatalog` und `partitionKeys` an ein Optionsargument.  

```
additionalOptions = {"enableUpdateCatalog": True}
additionalOptions["partitionKeys"] = ["region", "year", "month", "day"]


sink = glueContext.write_dynamic_frame_from_catalog(frame=last_transform, database=<target_db_name>,
                                                    table_name=<target_table_name>, transformation_ctx="write_sink",
                                                    additional_options=additionalOptions)
```

```
val options = JsonOptions(Map(
    "path" -> <S3_output_path>, 
    "partitionKeys" -> Seq("region", "year", "month", "day"), 
    "enableUpdateCatalog" -> true))
val sink = glueContext.getCatalogSink(
    database = <target_db_name>, 
    tableName = <target_table_name>, 
    additionalOptions = options)sink.writeDynamicFrame(df)
```

**Methode 2**  
Übergeben Sie `enableUpdateCatalog` und `partitionKeys` in `getSink()` und rufen Sie `setCatalogInfo()` auf dem `DataSink`-Objekt auf.  

```
sink = glueContext.getSink(
    connection_type="s3", 
    path="<S3_output_path>",
    enableUpdateCatalog=True,
    partitionKeys=["region", "year", "month", "day"])
sink.setFormat("json")
sink.setCatalogInfo(catalogDatabase=<target_db_name>, catalogTableName=<target_table_name>)
sink.writeFrame(last_transform)
```

```
val options = JsonOptions(
   Map("path" -> <S3_output_path>, 
       "partitionKeys" -> Seq("region", "year", "month", "day"), 
       "enableUpdateCatalog" -> true))
val sink = glueContext.getSink("s3", options).withFormat("json")
sink.setCatalogInfo(<target_db_name>, <target_table_name>)
sink.writeDynamicFrame(df)
```

Jetzt können Sie neue Katalogtabellen erstellen, vorhandene Tabellen mit einem geänderten Schema aktualisieren und neue Tabellenpartitionen in den Data Catalog einfügen – unter Verwendung eines AWS Glue-ETL-Auftrags, ohne dass Crawler erneut ausgeführt werden müssen.

## Aktualisieren des Tabellenschemas
<a name="update-from-job-updating-table-schema"></a>

Wenn Sie das Schema der Data-Catalog-Tabelle überschreiben möchten, ist dies folgendermaßen möglich:
+ Führen Sie nach Abschluss des Auftrags den Crawler erneut aus und stellen Sie sicher, dass der Crawler so konfiguriert ist, dass auch die Tabellendefinition aktualisiert wird. Zeigen Sie die neuen Partitionen in der Konsole zusammen mit allen Schemaaktualisierungen an, nachdem der Crawler beendet wurde. Weitere Informationen finden Sie unter [Konfigurieren eines Crawlers mithilfe der API](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-api).
+ Wenn der Auftrag endet, können Sie das geänderte Schema sofort in der Konsole anzeigen, ohne den Crawler erneut ausführen zu müssen. Sie können dieses Feature aktivieren, indem Sie Ihrem ETL-Skript einige Codezeilen hinzufügen, wie in den folgenden Beispielen gezeigt. Der Code verwendet `enableUpdateCatalog` mit dem Wert „true“ und `updateBehavior` mit dem Wert `UPDATE_IN_DATABASE`, damit während der Auftragsausführung das Schema überschrieben wird und neue Partitionen in den Data Catalog eingefügt werden.

------
#### [ Python ]

```
additionalOptions = {
    "enableUpdateCatalog": True, 
    "updateBehavior": "UPDATE_IN_DATABASE"}
additionalOptions["partitionKeys"] = ["partition_key0", "partition_key1"]

sink = glueContext.write_dynamic_frame_from_catalog(frame=last_transform, database=<dst_db_name>,
    table_name=<dst_tbl_name>, transformation_ctx="write_sink",
    additional_options=additionalOptions)
job.commit()
```

------
#### [ Scala ]

```
val options = JsonOptions(Map(
    "path" -> outputPath, 
    "partitionKeys" -> Seq("partition_0", "partition_1"), 
    "enableUpdateCatalog" -> true))
val sink = glueContext.getCatalogSink(database = nameSpace, tableName = tableName, additionalOptions = options)
sink.writeDynamicFrame(df)
```

------

Sie können den `updateBehavior`-Wert auch auf `LOG` festlegen, wenn das Tabellenschema nicht überschrieben werden soll, die neuen Partitionen aber hinzugefügt werden sollen. Der Standardwert von `updateBehavior` ist `UPDATE_IN_DATABASE`. Wenn Sie also nicht explizit einen anderen Wert angeben, wird das Tabellenschema überschrieben.

Wenn `enableUpdateCatalog` nicht auf „true“ festgelegt ist, aktualisiert der ETL-Auftrag die Tabelle im Data Catalog nicht, unabhängig von der Option, die für `updateBehavior` ausgewählt ist. 

## Erstellen neuer Tabellen
<a name="update-from-job-creating-new-tables"></a>

Sie können dieselben Optionen auch verwenden, um eine neue Tabelle im Data Catalog zu erstellen. Sie können die Datenbank und den neuen Tabellennamen mit `setCatalogInfo` angeben.

------
#### [ Python ]

```
sink = glueContext.getSink(connection_type="s3", path="s3://path/to/data",
    enableUpdateCatalog=True, updateBehavior="UPDATE_IN_DATABASE",
    partitionKeys=["partition_key0", "partition_key1"])
sink.setFormat("<format>")
sink.setCatalogInfo(catalogDatabase=<dst_db_name>, catalogTableName=<dst_tbl_name>)
sink.writeFrame(last_transform)
```

------
#### [ Scala ]

```
val options = JsonOptions(Map(
    "path" -> outputPath, 
    "partitionKeys" -> Seq("<partition_1>", "<partition_2>"), 
    "enableUpdateCatalog" -> true, 
    "updateBehavior" -> "UPDATE_IN_DATABASE"))
val sink = glueContext.getSink(connectionType = "s3", connectionOptions = options).withFormat("<format>")
sink.setCatalogInfo(catalogDatabase = “<dst_db_name>”, catalogTableName = “<dst_tbl_name>”)
sink.writeDynamicFrame(df)
```

------

## Einschränkungen
<a name="update-from-job-restrictions"></a>

Beachten Sie die folgenden Einschränkungen:
+ Es werden nur Amazon Simple Storage Service (Amazon S3)-Ziele unterstützt.
+ Das `enableUpdateCatalog`-Feature wird für reglementierte Tabellen nicht unterstützt.
+ Es werden nur die folgenden Formate unterstützt: `json`, `csv`, `avro` und `parquet`.
+ Um Tabellen mit der `parquet` Klassifizierung zu erstellen oder zu aktualisieren, müssen Sie den AWS Glue optimierten Parquet Writer for verwenden DynamicFrames. Dies kann mit einem der folgenden Schritte erreicht werden:
  + Wenn Sie eine vorhandene Tabelle im Katalog mit `parquet`-Klassifizierung aktualisieren, muss die `"useGlueParquetWriter"`-Tabelleneigenschaft der Tabelle auf `true` festgelegt sein, bevor Sie sie aktualisieren. Sie können diese Eigenschaft über das AWS Glue APIs /SDK, über die Konsole oder über eine Athena-DDL-Anweisung festlegen.   
![\[Bearbeitungsfeld für Eigenschaften der Katalogtabelle in der Konsole. AWS Glue\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/edit-table-property.png)

    Sobald die Katalogtabelleneigenschaft festgelegt ist, können Sie den folgenden Codeausschnitt verwenden, um die Katalogtabelle mit den neuen Daten zu aktualisieren:

    ```
    glueContext.write_dynamic_frame.from_catalog(
        frame=frameToWrite,
        database="dbName",
        table_name="tableName",
        additional_options={
            "enableUpdateCatalog": True,
            "updateBehavior": "UPDATE_IN_DATABASE"
        }
    )
    ```
  + Wenn die Tabelle noch nicht im Katalog vorhanden ist, können Sie die `getSink()`-Methode in Ihrem Skript mit `connection_type="s3"` verwenden, um die Tabelle und ihre Partitionen dem Katalog hinzuzufügen und die Daten in Amazon S3 zu schreiben. Geben Sie das entsprechende `partitionKeys` und `compression` für Ihren Workflow an.

    ```
    s3sink = glueContext.getSink(
        path="s3://bucket/folder/",
        connection_type="s3",
        updateBehavior="UPDATE_IN_DATABASE",
        partitionKeys=[],
        compression="snappy",
        enableUpdateCatalog=True
    )
        
    s3sink.setCatalogInfo(
        catalogDatabase="dbName", catalogTableName="tableName"
    )
        
    s3sink.setFormat("parquet", useGlueParquetWriter=True)
    s3sink.writeFrame(frameToWrite)
    ```
  + Der `glueparquet` Formatwert ist eine ältere Methode zur Aktivierung des AWS Glue Parquet Writers.
+ Wenn `updateBehavior` auf `LOG` festgelegt ist, werden neue Partitionen nur hinzugefügt, wenn das `DynamicFrame`-Schema äquivalent zu den in der Data-Catalog-Tabelle definierten Spalten ist oder eine Teilmenge dieser Spalten enthält.
+ Schemaaktualisierungen werden für nicht partitionierte Tabellen nicht unterstützt (ohne Verwendung der Option „partitionKeys“).
+ Die partitionKeys müssen für den im ETL-Skript übergebenen Parameter und die partitionKeys im Tabellenschema des Data Catalogs äquivalent sein und in der gleichen Reihenfolge vorliegen.
+ Diese Funktion unterstützt derzeit noch keine updating/creating Tabellen, in denen die Aktualisierungsschemas verschachtelt sind (z. B. Arrays innerhalb von Strukturen).

Weitere Informationen finden Sie unter [Programmieren von Spark-Skripte](aws-glue-programming.md).

# Arbeiten mit MongoDB-Verbindungen in ETL-Aufträgen
<a name="integrate-with-mongo-db"></a>

Sie können eine Verbindung für MongoDB erstellen und diese Verbindung dann in Ihrem AWS Glue-Auftrag nutzen. Weitere Informationen finden Sie [MongoDB-Verbindungen](aws-glue-programming-etl-connect-mongodb-home.md) im AWS Glue Programmierhandbuch. `url`, `username` und `password` für die Verbindung werden in der MongoDB-Verbindung gespeichert. Andere Optionen können in Ihrem ETL-Auftraggskript mit dem `additionalOptions`-Parameter von `glueContext.getCatalogSource` festgelegt werden. Weitere Optionen können Folgendes umfassen:
+ `database`: (Erforderlich) Die MongoDB-Datenbank, aus der gelesen werden soll.
+ `collection`: (Erforderlich) Die MongoDB-Sammlung, aus der gelesen werden soll.

Indem Sie die `database`- und `collection`-Informationen innerhalb des ETL-Auftragsskripts verwenden, können Sie dieselbe Verbindung für mehrere Aufträge verwenden.

1. Erstellen Sie eine AWS Glue Data Catalog Verbindung für die MongoDB-Datenquelle. Unter [„connectionType“: „mongodb“](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-mongodb) finden Sie eine Beschreibung der Verbindungsparameter. Sie können die Verbindung über die Konsole APIs oder CLI herstellen.

1. Erstellen Sie eine Datenbank in AWS Glue Data Catalog , um die Tabellendefinitionen für Ihre MongoDB-Daten zu speichern. Weitere Informationen finden Sie unter [Erstellen von Datenbanken](define-database.md).

1. Erstellen Sie einen Crawler, der das Crawling der Daten in der MongoDB mit den Informationen in der Verbindung ausführt, um eine Verbindung mit der MongoDB herzustellen. Der Crawler erstellt die Tabellen in der AWS Glue Data Catalog , die die Tabellen in der MongoDB-Datenbank beschreiben, die Sie in Ihrem Job verwenden. Weitere Informationen finden Sie unter [Verwenden von Crawlern zum Auffüllen des Datenkatalogs](add-crawler.md).

1. Erstellen Sie einen Auftrag mit einem benutzerdefinierten Skript. Sie können den Job mit der Konsole APIs oder der CLI erstellen. Weitere Informationen finden Sie unter [Hinzufügen von Aufträgen in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html).

1. Wählen Sie die Datenziele Ihres Auftrags aus. Die Tabellen, die das Datenziel repräsentieren, können in Ihrem Data Catalog definiert werden, oder Ihr Auftrag kann die Zieltabellen erstellen, wenn er ausgeführt wird. Beim Verfassen des Auftrags wählen Sie einen Zielspeicherort aus. Wenn das Ziel eine Verbindung benötigt, wird auch die Verbindung in Ihrem Auftrag referenziert. Wenn Ihr Auftrag mehrere Datenziele benötigt, können Sie sie später hinzufügen, indem Sie das Skript bearbeiten.

1. Passen Sie die Auftragsverarbeitungsumgebung an, indem Sie Argumente für Ihren Auftrag und das generierte Skript bereitstellen. 

   Hier sehen Sie ein Beispiel für das Erstellen eines `DynamicFrame` aus der MongoDB-Datenbank basierend auf der in Data Catalog definierten Tabellenstruktur. Der Code verwendet `additionalOptions` zur Bereitstellung der zusätzlichen Datenquelleninformationen:

------
#### [  Scala  ]

   ```
   val resultFrame: DynamicFrame = glueContext.getCatalogSource(
           database = catalogDB, 
           tableName = catalogTable, 
           additionalOptions = JsonOptions(Map("database" -> DATABASE_NAME, 
                   "collection" -> COLLECTION_NAME))
         ).getDynamicFrame()
   ```

------
#### [  Python  ]

   ```
   glue_context.create_dynamic_frame_from_catalog(
           database = catalogDB,
           table_name = catalogTable,
           additional_options = {"database":"database_name", 
               "collection":"collection_name"})
   ```

------

1. Führen Sie den Auftrag entweder on demand oder über einen Auslöser aus.

# Optimieren der Abfrageleistung mithilfe von Spaltenstatistiken
<a name="column-statistics"></a>

Sie können Statistiken auf Spaltenebene für AWS Glue Data Catalog Tabellen in Datenformaten wie Parquet, ORC, JSON, ION, CSV und XML berechnen, ohne zusätzliche Datenpipelines einzurichten. Spaltenstatistiken helfen Ihnen dabei, Datenprofile zu verstehen, indem sie Einblicke in die Werte innerhalb einer Spalte gewinnen. 

Der Datenkatalog unterstützt die Generierung von Statistiken für Spaltenwerte wie Minimalwert, Maximalwert, Gesamtzahl der Nullwerte, Gesamtzahl unterschiedlicher Werte, durchschnittliche Länge von Werten und Gesamtzahl der Vorkommen von wahren Werten. AWS Analysedienste wie Amazon Redshift und Amazon Athena können diese Spaltenstatistiken verwenden, um Abfrageausführungspläne zu generieren und den optimalen Plan auszuwählen, der die Abfrageleistung verbessert.

Es gibt drei Szenarien für die Generierung von Spaltenstatistiken: 

 **Automatisch**   
AWS Glue unterstützt die automatische Generierung von Spaltenstatistiken auf Katalogebene, sodass automatisch Statistiken für neue Tabellen in der generiert werden können. AWS Glue Data Catalog

**Geplant**  
AWS Glue unterstützt die Planung der Generierung von Spaltenstatistiken, sodass sie automatisch nach einem wiederkehrenden Zeitplan ausgeführt werden kann.   
Bei der geplanten Statistikberechnung aktualisiert der Task für Spaltenstatistiken die Gesamtstatistiken auf Tabellenebene, z. B. Min., Max und Durchschnitt, mit den neuen Statistiken, sodass Abfrage-Engines genaue Statistiken und up-to-date Statistiken zur Optimierung der Abfrageausführung erhalten. 

**On-Demand**  
Verwenden Sie diese Option, um bei Bedarf Spaltenstatistiken zu generieren. Dies ist nützlich für Ad-hoc-Analysen oder wenn Statistiken sofort berechnet werden müssen. 

Sie können so konfigurieren, dass die Aufgabe zur Generierung von Spaltenstatistiken mithilfe von AWS Glue Konsolen- und AWS CLI AWS Glue API-Vorgängen ausgeführt wird. Wenn Sie den Prozess starten, AWS Glue wird ein Spark-Job im Hintergrund gestartet und die AWS Glue Tabellenmetadaten im Datenkatalog aktualisiert. Sie können Spaltenstatistiken über die AWS Glue Konsole AWS CLI oder durch Aufrufen des [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html)API-Vorgangs anzeigen.

**Anmerkung**  
Wenn Sie Lake-Formation-Berechtigungen verwenden, um den Zugriff auf die Tabelle zu steuern, erfordert die von der Aufgabe für Spaltenstatistiken übernommene Rolle vollständigen Tabellenzugriff, um Statistiken zu generieren.

 Das folgende Video veranschaulicht, wie Sie die Abfrageleistung mithilfe von Spaltenstatistiken verbessern. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/zUHEXJdHUxs?si=HjyhpoALR6RXJz2i/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/zUHEXJdHUxs?si=HjyhpoALR6RXJz2i)


**Topics**
+ [Voraussetzungen für die Generierung von Spaltenstatistiken](column-stats-prereqs.md)
+ [Automatisches Generieren von Spaltenstatistiken](auto-column-stats-generation.md)
+ [Planmäßige Generierung von Spaltenstatistiken](generate-column-stats.md)
+ [On-Demand-Generierung von Spaltenstatistiken](column-stats-on-demand.md)
+ [Anzeigen von Spaltenstatistiken](view-column-stats.md)
+ [Anzeigen von Spaltenstatistik-Aufgabenläufen](view-stats-run.md)
+ [Beenden des Spaltenstatistik-Aufgabenlaufs](stop-stats-run.md)
+ [Löschen von Spaltenstatistiken](delete-column-stats.md)
+ [Überlegungen und Einschränkungen](column-stats-notes.md)

# Voraussetzungen für die Generierung von Spaltenstatistiken
<a name="column-stats-prereqs"></a>

Um Spaltenstatistiken zu erstellen oder zu aktualisieren, übernimmt die Statistikgenerierungsaufgabe in Ihrem Namen eine AWS Identity and Access Management (IAM)-Rolle. Basierend auf den der Rolle erteilten Berechtigungen kann die Aufgabe zur Generierung von Spaltenstatistiken die Daten aus dem Amazon-S3-Datenspeicher lesen.

Wenn Sie die Aufgabe zur Generierung von Spaltenstatistiken konfigurieren, AWS Glue können Sie eine Rolle erstellen, die die `AWSGlueServiceRole` AWS verwaltete Richtlinie sowie die erforderliche Inline-Richtlinie für die angegebene Datenquelle umfasst. 

Wenn Sie eine vorhandene Rolle für das Generieren von Spaltenstatistiken angeben, stellen Sie sicher, dass dieser die `AWSGlueServiceRole`-Richtlinie oder eine gleichwertige Version dieser Richtlinie (oder eine reduzierte Version) sowie die erforderlichen Inline-Richtlinien enthält. Führen Sie diese Schritte aus, um eine neue IAM-Rolle zu erstellen:

**Anmerkung**  
 Um Statistiken für von Lake Formation verwaltete Tabellen zu generieren, benötigt die IAM-Rolle, die zum Generieren von Statistiken verwendet wird, vollständigen Tabellenzugriff. 

Wenn Sie die Aufgabe zur Generierung von Spaltenstatistiken konfigurieren, AWS Glue können Sie eine Rolle erstellen, die die `AWSGlueServiceRole` AWS verwaltete Richtlinie sowie die erforderliche Inline-Richtlinie für die angegebene Datenquelle umfasst. Sie können auch eine Rolle erstellen, die in der folgenden Richtlinie aufgeführten Berechtigungen anhängen und diese Rolle der Aufgabe zur Generierung von Spaltenstatistiken hinzufügen.

**So erstellen Sie eine IAM-Rolle für die Generierung von Spaltenstatistiken**

1. Eine Anleitung zum Erstellen einer IAM;-Rolle finden Sie unter [Erstellen von IAM-Rollen für AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html).

1. Um eine bestehende Rolle zu aktualisieren, wechseln Sie in der IAM-Konsole zu der IAM-Rolle, die beim Generieren von Spaltenstatistiken verwendet wird.

1. Wählen Sie in der Registerkarte **Berechtigungen hinzufügen** die Option **Richtlinien anfügen** aus. Wählen Sie im neu geöffneten Browserfenster die Option `AWSGlueServiceRole` AWS Verwaltete Richtlinie aus.

1. Sie müssen außerdem Berechtigungen zum Lesen von Daten am Amazon-S3-Speicherort hinzufügen.

   Wählen Sie im Abschnitt **Berechtigungen hinzufügen** die Option **Richtlinie erstellen** aus. Erstellen Sie im neu geöffneten Browserfenster eine neue Richtlinie, die Sie mit Ihrer Rolle verwenden möchten.

1. Wählen Sie auf der Seite **Richtlinie erstellen** die Registerkarte **JSON** aus. Kopieren Sie den folgenden `JSON`-Code in das Richtlinien-Editor-Feld.
**Anmerkung**  
Ersetzen Sie in den folgenden Richtlinien die Konto-ID durch eine gültige AWS-Konto und `region` durch die Region der Tabelle sowie `bucket-name` durch den Amazon S3 S3-Bucket-Namen.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3BucketAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
               	"arn:aws:s3:::amzn-s3-demo-bucket/*",
   							"arn:aws:s3:::amzn-s3-demo-bucket"
               ]
           }
        ]
   }
   ```

------

1. (Optional) Wenn Sie Lake-Formation-Berechtigungen verwenden, um Zugriff auf Ihre Daten zu gewähren, sind für die IAM-Rolle `lakeformation:GetDataAccess`-Berechtigungen erforderlich.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "LakeFormationDataAccess",
         "Effect": "Allow",
         "Action": "lakeformation:GetDataAccess",
         "Resource": [
           "*"
         ]
       }
     ]
   }
   ```

------

    Wenn der Amazon-S3-Speicherort bei Lake Formation registriert ist und für die IAM-Rolle, die von der Aufgabe zur Generierung von Spaltenstatistiken übernommen wurde, keine `IAM_ALLOWED_PRINCIPALS`-Gruppenberechtigungen für die Tabelle erteilt wurden, benötigt die Rolle `ALTER`- und `DESCRIBE`-Berechtigungen in Lake Formation für die Tabelle. Die Rolle, die für die Registrierung des Amazon-S3-Buckets verwendet wird, erfordert `INSERT`- und `DELETE`-Berechtigungen in Lake Formation für die Tabelle. 

   Wenn der Amazon-S3-Speicherort bei Lake Formation registriert ist und für die IAM-Rolle keine `IAM_ALLOWED_PRINCIPALS`-Gruppenberechtigungen für die Tabelle erteilt wurden, benötigt die Rolle `ALTER`-, `DESCRIBE`-, `INSERT`- und `DELETE`-Berechtigungen in Lake Formation für die Tabelle. 

1. Wenn Sie die Option `Automatic statistics generation` auf Katalogebene aktiviert haben, muss die IAM-Rolle über die `glue:UpdateCatalog`-Berechtigung oder die Lake-Formation-Berechtigung `ALTER CATALOG` für den Standarddatenkatalog verfügen. Sie können den `GetCatalog`-Vorgang verwenden, um die Katalogeigenschaften zu überprüfen. 

1. (Optional) Für die Aufgabe zur Generierung von Spaltenstatistiken, die verschlüsselte Amazon CloudWatch Logs -Schreibvorgänge durchführt, sind die folgenden Berechtigungen in der Schlüsselrichtlinie erforderlich.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "CWLogsKmsPermissions",
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:AssociateKmsKey"
         ],
         "Resource": [
           "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue:*"
         ]
       },
       {
         "Sid": "KmsPermissions",
         "Effect": "Allow",
         "Action": [
           "kms:GenerateDataKey",
           "kms:Decrypt",
           "kms:Encrypt"
         ],
         "Resource": [
           "arn:aws:kms:us-east-1:111122223333:key/arn of key used for ETL cloudwatch encryption"
         ],
         "Condition": {
           "StringEquals": {
             "kms:ViaService": [
               "glue.us-east-1.amazonaws.com"
             ]
           }
         }
       }
     ]
   }
   ```

------

1. Die Rolle, die Sie zum Ausführen der Spaltenstatistiken verwenden, muss die `iam:PassRole`-Berechtigung für die Rolle haben.

------
#### [ JSON ]

****  

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

------

1. Wenn Sie eine IAM-Rolle für die Generierung von Spaltenstatistiken erstellen, muss für diese Rolle auch die folgende Vertrauensrichtlinie gelten, damit der Service die Rolle übernehmen kann. 

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "TrustPolicy",
         "Effect": "Allow",
         "Principal": {
           "Service": "glue.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

# Automatisches Generieren von Spaltenstatistiken
<a name="auto-column-stats-generation"></a>

Die automatische Generierung von Spaltenstatistiken ermöglicht es Ihnen, Statistiken für neue Tabellen in AWS Glue Data Catalog zu planen und automatisch zu berechnen. Wenn Sie die automatische Statistikgenerierung aktivieren, erkennt der Datenkatalog neue Tabellen mit bestimmten Datenformaten wie Parquet, JSON, CSV, XML, ORC, ION und Apache Iceberg sowie deren individuelle Bucket-Pfade. Mit einer einmaligen Katalogkonfiguration generiert der Datenkatalog Statistiken für diese Tabellen.

 Data–Lake-Administratoren können die Statistikgenerierung konfigurieren, indem sie den Standardkatalog in der Lake-Formation-Konsole auswählen und die Tabellenstatistik über die Option `Optimization configuration` aktivieren. Wenn Sie neue Tabellen erstellen oder bestehende Tabellen im Datenkatalog aktualisieren, erfasst der Datenkatalog wöchentlich die Anzahl der unterschiedlichen Werte (NDVs) für Apache Iceberg-Tabellen sowie zusätzliche Statistiken wie die Anzahl der Nullen, die maximale, minimale und durchschnittliche Länge für andere unterstützte Dateiformate. 

Wenn Sie die Statistikgenerierung auf Tabellenebene konfiguriert haben oder wenn Sie zuvor die Einstellungen für die Statistikgenerierung für eine Tabelle gelöscht haben, haben diese tabellenspezifischen Einstellungen Vorrang vor den Standardkatalogeinstellungen für die automatische Generierung von Spaltenstatistiken.

 Die Aufgabe zur automatischen Statistikgenerierung analysiert 50 % der Datensätze in den Tabellen, um Statistiken zu berechnen. Die automatische Generierung von Spaltenstatistiken stellt sicher, dass der Datenkatalog wöchentliche Kennzahlen enthält, die von Abfrage-Engines wie Amazon Athena und Amazon Redshift Spectrum verwendet werden können, um die Abfrageleistung zu verbessern und potenzielle Kosteneinsparungen zu erzielen. Es ermöglicht die Planung der Statistikgenerierung mithilfe AWS Glue APIs oder der Konsole und bietet so einen automatisierten Prozess ohne manuelles Eingreifen. 

**Topics**
+ [Aktivieren der automatischen Statistikgenerierung auf Katalogebene](enable-auto-column-stats-generation.md)
+ [Anzeigen von automatisierten Einstellungen auf Tabellenebene](view-auto-column-stats-settings.md)
+ [Deaktivierung der Generierung von Spaltenstatistiken auf Katalogebene](disable-auto-column-stats-generation.md)

# Aktivieren der automatischen Statistikgenerierung auf Katalogebene
<a name="enable-auto-column-stats-generation"></a>

Sie können die automatische Generierung von Spaltenstatistiken für alle neuen Apache-Iceberg-Tabellen und Tabellen in Nicht-OTF-Tabellenformaten (Parquet, JSON, CSV, XML, ORC, ION) im Datenkatalog aktivieren. Nachdem Sie die Tabelle erstellt haben, können Sie die Einstellungen für die Spaltenstatistik auch explizit manuell aktualisieren.

 Um die Datenkatalogeinstellungen zu aktualisieren, um die Katalogebene zu aktivieren, muss die verwendete IAM-Rolle über die `glue:UpdateCatalog` Berechtigung oder die Berechtigung für den AWS Lake Formation `ALTER CATALOG` Stammkatalog verfügen. Sie können die `GetCatalog`-API verwenden, um die Katalogeigenschaften zu überprüfen. 

------
#### [ AWS-Managementkonsole ]

**So aktivieren Sie die automatische Generierung von Spaltenstatistiken auf Kontoebene**

1. Öffnen Sie die Lake Formation Formation-Konsole unter [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Wählen Sie in der linken Navigationsleiste die Option **Kataloge** aus.

1. Wählen Sie auf der Seite mit der **Katalogübersicht** unter **Optimierungskonfiguration** die Option **Bearbeiten** aus.   
![\[Im Screenshot werden die Optionen angezeigt, die zum Generieren von Spaltenstatistiken verfügbar sind.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/edit-column-stats-auto.png)

1. Wählen Sie auf der Seite **Konfiguration für die Tabellenoptimierung** die Option **Automatische Statistikgenerierung für die Tabellen des Katalogs aktivieren** aus.  
![\[Im Screenshot werden die Optionen angezeigt, die zum Generieren von Spaltenstatistiken verfügbar sind.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/edit-optimization-option.jpg)

1. Wählen Sie eine vorhandene IAM-Rolle aus oder erstellen Sie eine neue, die über die erforderlichen Berechtigungen zum Ausführen der Aufgabe für Spaltenstatistiken verfügt.

1. Wählen Sie **Absenden** aus.

------
#### [ AWS CLI ]

Sie können die Erfassung von Statistiken auf Katalogebene auch über die AWS CLI aktivieren. Führen Sie den folgenden Befehl aus AWS CLI, um die Erfassung von Statistiken auf Tabellenebene mithilfe von zu konfigurieren:

```
aws glue update-catalog --cli-input-json '{
    "name": "123456789012",
    "catalogInput": {
        "description": "Updating root catalog with role arn",
        "catalogProperties": {
            "customProperties": {
                "ColumnStatistics.RoleArn": "arn:aws:iam::"123456789012":role/service-role/AWSGlueServiceRole",
                "ColumnStatistics.Enabled": "true"
            }
        }
    }
}'
```

 Der obige Befehl ruft AWS Glue die `UpdateCatalog` Operation auf, die eine `CatalogProperties` Struktur mit den folgenden Schlüssel-Wert-Paaren für die Generierung von Statistiken auf Katalogebene verwendet: 
+ ColumnStatistics. RoleArn — ARN der IAM-Rolle, der für alle Aufgaben verwendet werden soll, die für die Generierung von Statistiken auf Katalogebene ausgelöst wurden
+ ColumnStatistics.Enabled — Boolescher Wert, der angibt, ob die Einstellungen auf Katalogebene aktiviert oder deaktiviert sind

------

# Anzeigen von automatisierten Einstellungen auf Tabellenebene
<a name="view-auto-column-stats-settings"></a>

 Wenn die Erfassung von Statistiken auf Katalogebene aktiviert ist, wird bei jeder Erstellung oder Aktualisierung einer Apache Hive-Tabelle oder einer Apache Iceberg-Tabelle über das SDK `CreateTable` oder `UpdateTable` APIs über AWS-Managementkonsole das SDK oder AWS-Glue-Crawler eine entsprechende Einstellung auf Tabellenebene für diese Tabelle erstellt. 

 Tabellen mit aktivierter automatischer Statistikgenerierung müssen eine der folgenden Eigenschaften aufweisen:
+ Verwenden eine `InputSerdeLibrary`, die mit org.apache.hadoop beginnt und bei der `TableType` `EXTERNAL_TABLE` entspricht.
+ Verwenden eine `InputSerdeLibrary`, die mit `com.amazon.ion` beginnt und bei der `TableType` `EXTERNAL_TABLE` entspricht.
+ Enthalten table\$1type: „ICEBERG“ in der Parameterstruktur. 

 Nachdem Sie eine Tabelle erstellt oder aktualisiert haben, können Sie die Tabellendetails überprüfen, um die Statistikgenerierung zu bestätigen. Die `Statistics generation summary` zeigt die `Schedule`-Eigenschaft an, die als `AUTO` festgelegt ist und deren `Statistics configuration`-Wert `Inherited from catalog` lautet. Jede Tabelleneinstellung mit der folgenden Konfiguration würde intern automatisch von Glue ausgelöst werden. 

![\[Ein Bild einer Hive-Tabelle mit Katalog-Level-Statistiksammlung wurde angewendet und Statistiken wurden gesammelt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/auto-stats-summary.png)


# Deaktivierung der Generierung von Spaltenstatistiken auf Katalogebene
<a name="disable-auto-column-stats-generation"></a>

 Sie können die automatische Generierung von Spaltenstatistiken für neue Tabellen mithilfe der AWS Lake Formation Konsole, der API oder der `glue:UpdateCatalogSettings` API deaktivieren. `glue:DeleteColumnStatisticsTaskSettings` 

**So deaktivieren Sie die automatische Generierung von Spaltenstatistiken auf Kontoebene**

1. Öffnen Sie die Lake Formation Formation-Konsole unter [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. Wählen Sie in der linken Navigationsleiste die Option **Kataloge** aus.

1. Wählen Sie auf der Seite mit der **Katalogübersicht** unter **Optimierungskonfiguration** die Option **Bearbeiten** aus. 

1. Deaktivieren Sie auf der Seite **Konfiguration für die Tabellenoptimierung** die Option **Automatische Statistikgenerierung für die Tabellen des Katalogs aktivieren**.

1. Wählen Sie **Absenden** aus.

# Planmäßige Generierung von Spaltenstatistiken
<a name="generate-column-stats"></a>

Gehen Sie wie folgt vor, um einen Zeitplan für die Generierung von Spaltenstatistiken in der [CreateColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-CreateColumnStatisticsTaskSettings)Operation AWS Glue Data Catalog AWS Glue Using the console AWS CLI, the oder the zu konfigurieren.

------
#### [ Console ]

**Generieren von Spaltenstatistiken mit der Konsole**

1. Melden Sie sich bei der AWS Glue Konsole unter an [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Wählen Sie „Datenkatalog-Tabellen“ aus.

1. Wählen Sie eine Tabelle aus der Liste aus. 

1. Wählen Sie im unteren Bereich der Seite **Tabellen** die Registerkarte **Spaltenstatistik**.

1. Sie können aus **Aktionen** auch unter **Spaltenstatistiken** die Option **Nach Zeitplan generieren** auswählen.

1. Konfigurieren Sie auf der Seite **Statistiken nach Zeitplan generieren** einen wiederkehrenden Zeitplan für die Ausführung der Spaltenstatistikaufgabe, indem Sie die Häufigkeit und die Startzeit auswählen. Sie können wählen, ob die Frequenz stündlich, täglich oder wöchentlich sein soll, oder Sie können einen Cron-Ausdruck definieren, um den Zeitplan zu spezifizieren.

   Ein Cron-Ausdruck ist eine Zeichenfolge, die ein Zeitplanmuster darstellt und aus 6 durch Leerzeichen getrennten Feldern besteht: \$1 \$1 \$1 \$1 \$1 <minute><hour><day of month><month><day of week><year>Um beispielsweise eine Aufgabe jeden Tag um Mitternacht auszuführen, wäre der Cron-Ausdruck: 0 0 \$1 \$1? \$1

   Weitere Informationen finden Sie unter [Cron-Ausdrücke](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions).  
![\[Im Screenshot werden die Optionen angezeigt, die zum Generieren von Spaltenstatistiken verfügbar sind.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/generate-column-stats-schedule.png)

1. Wählen Sie als Nächstes die Spaltenoption aus, um Statistiken zu generieren.
   + **Alle Spalten**: Wählen Sie diese Option aus, um Statistiken für alle Spalten in der Tabelle zu generieren.
   + **Ausgewählte Spalten** – Wählen Sie diese Option aus, um Statistiken für bestimmte Spalten zu generieren. Sie können die Spalten in der Dropdown-Liste auswählen.

1. Wählen Sie eine IAM-Rolle oder erstellen Sie eine vorhandene Rolle, die über Berechtigungen zum Generieren von Statistiken verfügt. AWS Glue übernimmt diese Rolle, um Spaltenstatistiken zu generieren.

   Eine schnellere Methode besteht darin, die AWS Glue Konsole eine Rolle für Sie erstellen zu lassen. Die von ihr erstellte Rolle dient speziell der Generierung von Spaltenstatistiken und umfasst die `AWSGlueServiceRole` AWS verwaltete Richtlinie sowie die erforderliche Inline-Richtlinie für die angegebene Datenquelle. 

   Wenn Sie eine vorhandene Rolle für das Generieren von Spaltenstatistiken angeben, stellen Sie sicher, dass diese die `AWSGlueServiceRole`-Richtlinie oder eine gleichwertige Version dieser Richtlinie (oder eine reduzierte Version) sowie die erforderlichen Inline-Richtlinien enthält. 

1. (Optional) Wählen Sie als Nächstes eine Sicherheitskonfiguration aus, um für Protokolle die Verschlüsselung im Ruhezustand zu aktivieren.

1. (Optional) Sie können eine Stichprobengröße auswählen, indem Sie nur einen bestimmten Prozentsatz der Zeilen aus der Tabelle angeben, um Statistiken zu generieren. Der Standardwert ist „Alle Zeilen“. Verwenden Sie die Aufwärts- und Abwärtspfeile, um den Prozentwert zu erhöhen oder zu verringern. 

   Wir empfehlen, alle Zeilen in die Tabelle aufzunehmen, um genaue Statistiken zu berechnen. Verwenden Sie Beispielzeilen zur Generierung von Spaltenstatistiken nur dann, wenn Näherungswerte akzeptabel sind.

1. Wählen Sie **Statistiken generieren** aus, um die Aufgabe zur Generierung von Spaltenstatistiken auszuführen.

------
#### [ AWS CLI ]

Sie können das folgende AWS CLI Beispiel verwenden, um einen Zeitplan für die Generierung von Spaltenstatistiken zu erstellen. Datenbankname, Tabellenname und Rolle sind erforderliche Parameter, und optionale Parameter sind Zeitplan, Katalog-ID, Stichprobengröße und column-name-list Sicherheitskonfiguration.

```
aws glue create-column-statistics-task-settings \ 
 --database-name 'database_name' \ 
 --table-name table_name \ 
 --role 'arn:aws:iam::123456789012:role/stats-role' \ 
 --schedule 'cron(0 0-5 14 * * ?)' \ 
 --column-name-list 'col-1' \  
 --catalog-id '123456789012' \ 
 --sample-size '10.0 ' \
 --security-configuration 'test-security'
```

Sie können Spaltenstatistiken auch generieren, indem Sie den Vorgang aufrufen. [StartColumnStatisticsTaskRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StartColumnStatisticsTaskRun)

------

# Verwalten des Zeitplans für die Generierung von Spaltenstatistiken
<a name="manage-column-stats-schedule"></a>

Sie können die Planungsvorgänge wie Aktualisieren, Starten, Stoppen und Löschen von Zeitplänen für die Erstellung von Spaltenstatistiken in AWS Glue verwalten. Sie können [API-Operationen für AWS GlueAWS CLI Konsolen- oder AWS Glue Spaltenstatistiken](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html) verwenden, um diese Aufgaben auszuführen.

**Topics**
+ [Aktualisieren des Zeitplans für die Generierung von Spaltenstatistiken](#update-column-stats-shedule)
+ [Beenden des Zeitplans für die Generierung von Spaltenstatistiken](#stop-column-stats-schedule)
+ [Fortsetzen des Zeitplans für die Generierung von Spaltenstatistiken](#resume-column-stats-schedule)
+ [Löschen des Zeitplans für die Generierung von Spaltenstatistiken](#delete-column-stats-schedule)

## Aktualisieren des Zeitplans für die Generierung von Spaltenstatistiken
<a name="update-column-stats-shedule"></a>

Sie können den Zeitplan aktualisieren, um die Aufgabe zur Generierung der Spaltenstatistiken nach deren Erstellung auszulösen. Sie können die AWS Glue Konsole verwenden oder den [UpdateColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-UpdateColumnStatisticsTaskSettings)Vorgang ausführen AWS CLI, um den Zeitplan für eine Tabelle zu aktualisieren. Die Parameter eines bestehenden Zeitplans, z. B. der Zeitplantyp (auf Abruf oder geplant) und andere optionale Parameter lassen sich ändern. 

------
#### [ AWS-Managementkonsole ]

**So aktualisieren Sie die Einstellungen für eine Aufgabe zur Generierung von Spaltenstatistiken**

1. Melden Sie sich bei der AWS Glue Konsole an unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Wählen Sie aus der Tabellenliste die Tabelle aus, die Sie aktualisieren möchten.

1. Wählen Sie im unteren Bereich der Detailseite der Tabelle die Option **Spaltenstatistiken**. 

1. Wählen Sie unter **Aktionen** die Option **Bearbeiten** aus, um den Zeitplan zu aktualisieren.

1. Nehmen Sie die gewünschten Änderungen am Zeitplan vor und wählen Sie **Speichern**.

------
#### [ AWS CLI ]

 Wenn Sie die Funktion zur Generierung AWS Glue von Statistiken in der Konsole nicht verwenden, können Sie den Zeitplan mithilfe des `update-column-statistics-task-settings` Befehls manuell aktualisieren. Im folgenden Beispiel wird gezeigt, wie Sie Spaltenstatistiken mithilfe von AWS CLI aktualisieren. 

```
aws glue update-column-statistics-task-settings \ 
 --database-name 'database_name' \ 
 --table-name 'table_name' \ 
 --role arn:aws:iam::123456789012:role/stats_role \ 
 --schedule 'cron(0 0-5 16 * * ?)' \ 
 --column-name-list 'col-1' \
 --sample-size '20.0' \  
 --catalog-id '123456789012'\
 --security-configuration 'test-security'
```

------

## Beenden des Zeitplans für die Generierung von Spaltenstatistiken
<a name="stop-column-stats-schedule"></a>

 Wenn Sie die inkrementellen Statistiken nicht mehr benötigen, können Sie die geplante Generierung stoppen, um Ressourcen und Kosten zu sparen. Das Anhalten des Zeitplans hat keine Auswirkungen auf die zuvor generierten Statistiken. Sie können den Zeitplan nach Belieben fortsetzen. 

------
#### [ AWS-Managementkonsole ]

**So beenden Sie den Zeitplan für die Generierung von Spaltenstatistiken**

1. Wählen Sie in der AWS Glue Konsole unter Datenkatalog die Option **Tabellen** aus.

1. Wählen Sie eine Tabelle mit Spaltenstatistiken aus.

1. Wählen Sie auf der Seite **Tabellendetails** die Option **Spaltenstatistiken** aus.

1. Wählen Sie unter **Aktionen** die Option **Geplante Generierung** und dann **Pausieren** aus.

1. Bestätigen Sie mit **Pausieren**.

------
#### [ AWS CLI ]

Um die Ausführung einer Aufgabe mit Spaltenstatistiken mithilfe von zu beenden AWS CLI, können Sie den folgenden Befehl verwenden: 

```
aws glue stop-column-statistics-task-run-schedule \
 --database-name ''database_name' \
 --table-name 'table_name'
```

Ersetzen Sie `database_name` und `table_name` durch die tatsächlichen Namen der Datenbank und Tabelle, für die Sie den Zeitplan für die Ausführung der Spaltenstatistikaufgabe beenden möchten.

------

## Fortsetzen des Zeitplans für die Generierung von Spaltenstatistiken
<a name="resume-column-stats-schedule"></a>

 Wenn Sie den Zeitplan für die Statistikgenerierung angehalten haben, AWS Glue können Sie den Zeitplan nach Belieben fortsetzen. Sie können den Zeitplan über die AWS Glue Konsole oder den AWS CLI[StartColumnStatisticsTaskRunSchedule](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StartColumnStatisticsTaskRunSchedule)Vorgang fortsetzen. 

------
#### [ AWS-Managementkonsole ]

**So setzen Sie den Zeitplan für die Generierung von Spaltenstatistiken fort**

1. Wählen Sie auf der AWS Glue Konsole unter Datenkatalog die Option **Tabellen** aus.

1. Wählen Sie eine Tabelle mit Spaltenstatistiken aus.

1. Wählen Sie auf der Seite **Tabellendetails** die Option **Spaltenstatistiken** aus.

1. Wählen Sie unter **Aktionen** die Option **Geplante Generierung** und dann **Fortsetzen** aus.

1. Bestätigen Sie mit **Fortsetzen**.

------
#### [ AWS CLI ]

Ersetzen Sie `database_name` und `table_name` durch die tatsächlichen Namen der Datenbank und Tabelle, für die Sie den Zeitplan für die Ausführung der Spaltenstatistikaufgabe beenden möchten.

```
aws glue start-column-statistics-task-run-schedule \
 --database-name 'database_name' \
 --table-name 'table_name'
```

------

## Löschen des Zeitplans für die Generierung von Spaltenstatistiken
<a name="delete-column-stats-schedule"></a>

 Für eine optimale Abfrageleistung wird zwar generell empfohlen, up-to-date Statistiken zu verwalten, es gibt jedoch spezielle Anwendungsfälle, in denen es von Vorteil sein könnte, den Zeitplan für die automatische Generierung zu entfernen.
+ Bleiben die Daten relativ statisch, können die vorhandenen Spaltenstatistiken über einen längeren Zeitraum hinweg genau bleiben, wodurch die Notwendigkeit häufiger Aktualisierungen verringert wird. Das Löschen des Zeitplans kann unnötigen Ressourcenverbrauch und Overhead verhindern, der mit der Neugenerierung von Statistiken zu unveränderten Daten verbunden ist.
+ Wenn eine manuelle Steuerung der Statistikgenerierung bevorzugt wird. Durch das Löschen des automatischen Zeitplans können Administratoren die Spaltenstatistiken in bestimmten Intervallen oder nach wesentlichen Datenänderungen selektiv aktualisieren und den Prozess so an ihre Wartungsstrategien und Anforderungen an die Ressourcenzuweisung anpassen. 

------
#### [ AWS-Managementkonsole ]

**So löschen Sie den Zeitplan für die Generierung von Spaltenstatistiken**

1. Wählen Sie auf der AWS Glue Konsole unter Datenkatalog die Option **Tabellen** aus.

1. Wählen Sie eine Tabelle mit Spaltenstatistiken aus.

1. Wählen Sie auf der Seite **Tabellendetails** die Option **Spaltenstatistiken** aus.

1. Wählen Sie unter **Aktionen** die Option **Geplante Generierung** und dann **Löschen** aus.

1. Bestätigen Sie mit **Löschen**.

------
#### [ AWS CLI ]

Ersetzen Sie `database_name` und `table_name` durch die tatsächlichen Namen der Datenbank und Tabelle, für die Sie den Zeitplan für die Ausführung der Spaltenstatistikaufgabe beenden möchten.

Sie können den Zeitplan für Spaltenstatistiken mithilfe der [DeleteColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-DeleteColumnStatisticsTaskSettings)API-Operation oder löschen AWS CLI. Das folgende Beispiel zeigt, wie der Zeitplan für die Generierung von Spaltenstatistiken mithilfe von AWS Command Line Interface (AWS CLI) gelöscht wird.

```
aws glue delete-column-statistics-task-settings \
    --database-name 'database_name' \
    --table-name 'table_name'
```

------

# On-Demand-Generierung von Spaltenstatistiken
<a name="column-stats-on-demand"></a>

Sie können die Aufgabe Spaltenstatistiken für die AWS Glue Data Catalog Tabellentask bei Bedarf ohne festen Zeitplan ausführen. Diese Option ist nützlich für Ad-hoc-Analysen oder wenn Statistiken sofort berechnet werden müssen.

Gehen Sie wie folgt vor, um bei Bedarf Spaltenstatistiken für die Datenkatalogtabellen mithilfe der AWS Glue Konsole oder zu generieren AWS CLI.

------
#### [ AWS-Managementkonsole ]

**Generieren von Spaltenstatistiken mit der Konsole**

1. Melden Sie sich bei der AWS Glue Konsole an unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Wählen Sie „Datenkatalog-Tabellen“ aus.

1.  Wählen Sie eine Tabelle aus der Liste aus. 

1. Wählen Sie im Menü **Aktionen** die Option **Statistiken generieren** aus.

   Sie können auch **Generieren**, **Generieren bei Bedarf** auf der Registerkarte **Spaltenstatistiken** unten auf der Seite **Tabellen** auswählen.

1. Folgen Sie den Schritten 7 bis 11 in [Planmäßige Generierung von Spaltenstatistiken](generate-column-stats.md), um Spaltenstatistiken für die Tabelle zu generieren.

1. Geben Sie auf der Seite **Statistiken generieren** die folgenden Optionen an:   
![\[Im Screenshot werden die Optionen angezeigt, die zum Generieren von Spaltenstatistiken verfügbar sind.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/generate-column-stats.png)
   + **Alle Spalten** – Wählen Sie diese Option aus, um Statistiken für alle Spalten in der Tabelle zu generieren.
   + **Ausgewählte Spalten** – Wählen Sie diese Option aus, um Statistiken für bestimmte Spalten zu generieren. Sie können die Spalten in der Dropdown-Liste auswählen.
   + **IAM-Rolle** – Wählen Sie **Neue IAM-Rolle erstellen** aus, um eine neue Rolle zu erstellen, die über die erforderlichen Berechtigungsrichtlinien verfügt, um die Aufgabe zur Generierung von Spaltenstatistiken auszuführen. Wählen Sie „Berechtigungsdetails anzeigen“ aus, um die Richtlinienerklärung zu überprüfen. Sie können auch eine IAM-Rolle in der Liste auswählen. Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unter [Voraussetzungen für die Generierung von Spaltenstatistiken](column-stats-prereqs.md).

     AWS Glue nimmt die Berechtigungen der Rolle an, die Sie zum Generieren von Statistiken angeben. 

     Weitere Informationen zur Bereitstellung von Rollen für AWS Glue finden Sie unter [Identitätsbasierte Richtlinien](https://docs.aws.amazon.com/glue/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies) für. AWS Glue.
   + (Optional) Wählen Sie als Nächstes eine Sicherheitskonfiguration aus, um für Protokolle die Verschlüsselung im Ruhezustand zu aktivieren.
   + **Beispielzeilen** – Wählen Sie nur einen bestimmten Prozentsatz der Zeilen aus der Tabelle aus, um Statistiken zu generieren. Der Standardwert ist „Alle Zeilen“. Verwenden Sie die Aufwärts- und Abwärtspfeile, um den Prozentwert zu erhöhen oder zu verringern.
**Anmerkung**  
Wir empfehlen, alle Zeilen in die Tabelle aufzunehmen, um genaue Statistiken zu berechnen. Verwenden Sie Beispielzeilen zur Generierung von Spaltenstatistiken nur dann, wenn Näherungswerte akzeptabel sind.

   Wählen Sie **Statistik generieren** aus, um die Aufgabe auszuführen.

------
#### [ AWS CLI ]

Dieser Befehl löst die Ausführung einer Spaltenstatistikaufgabe für die angegebene Tabelle aus. Sie müssen den Datenbanknamen, den Tabellennamen und eine IAM-Rolle mit Berechtigungen zum Generieren von Statistiken angeben. Optional können Sie Spaltennamen und einen Prozentsatz der Stichprobengröße für die Statistikberechnung angeben.

```
aws glue start-column-statistics-task-run \ 
    --database-name 'database_name \ 
    --table-name 'table_name' \ 
    --role 'arn:aws:iam::123456789012:role/stats-role' \
    --column-name 'col1','col2'  \
    --sample-size 10.0
```

Dieser Befehl startet eine Aufgabe zum Generieren von Spaltenstatistiken für die angegebene Tabelle. 

------

## Aktualisieren von Spaltenstatistiken bei Bedarf
<a name="update-column-stats-on-demand"></a>

 Die Pflege von up-to-date Spaltenstatistiken ist für den Abfrageoptimierer von entscheidender Bedeutung, um effiziente Ausführungspläne zu erstellen und so eine verbesserte Abfrageleistung, einen geringeren Ressourcenverbrauch und eine bessere Gesamtsystemleistung sicherzustellen. Dieser Prozess ist besonders wichtig nach erheblichen Datenänderungen, wie etwa beim Laden großer Datenmengen oder bei umfangreichen Änderungen, die bestehende Statistiken unbrauchbar machen können. 

Sie müssen die Aufgabe **Statistik generieren** explizit von der AWS Glue Konsole aus ausführen, um die Spaltenstatistiken zu aktualisieren. Der Datenkatalog aktualisiert die Statistiken nicht automatisch.

Wenn Sie die Funktion zur Generierung AWS Glue von Statistiken in der Konsole nicht verwenden, können Sie die Spaltenstatistiken mithilfe der [UpdateColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateColumnStatisticsForTable.html)API-Operation oder manuell aktualisieren AWS CLI. Im folgenden Beispiel wird gezeigt, wie Sie Spaltenstatistiken mithilfe von AWS CLI aktualisieren.

```
aws glue update-column-statistics-for-table --cli-input-json:

{
    "CatalogId": "111122223333",
    "DatabaseName": "database_name",
    "TableName": "table_name",
    "ColumnStatisticsList": [
        {
            "ColumnName": "col1",
            "ColumnType": "Boolean",
            "AnalyzedTime": "1970-01-01T00:00:00",
            "StatisticsData": {
                "Type": "BOOLEAN",
                "BooleanColumnStatisticsData": {
                    "NumberOfTrues": 5,
                    "NumberOfFalses": 5,
                    "NumberOfNulls": 0
                }
            }
        }
    ]
}
```

# Anzeigen von Spaltenstatistiken
<a name="view-column-stats"></a>

Nach erfolgreicher Generierung der Statistiken speichert Data Catalog diese Informationen für die kostenbasierten Optimierer in Amazon Athena und Amazon Redshift, um bei der Ausführung von Abfragen optimale Entscheidungen treffen zu können. Die Statistiken variieren je nach Spaltentyp.

------
#### [ AWS-Managementkonsole ]

**Anzeigen von Spaltenstatistiken für eine Tabelle**
+ Nach dem Ausführen der Spaltenstatistik-Aufgabe werden in der Registerkarte **Spaltenstatistiken** auf der Seite **Tabellendetails** die Statistiken für die Tabelle angezeigt.   
![\[Der Screenshot zeigt Spalten, die bei der letzten Ausführung generiert wurden.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/view-column-stats.png)

  Die folgenden Statistiken sind verfügbar:
  + Spaltenname: Der Spaltenname, der zur Generierung der Statistiken verwendet wurde.
  + Letzte Aktualisierung: Das Datum und die Uhrzeit der Erstellung.
  + Durchschnittliche Länge: durchschnittliche Länge der Werte in der Spalte.
  + Eindeutige Werte: Gesamtzahl der unterschiedlichen Werte in der Spalte. Wir schätzen die Anzahl unterschiedlicher Werte in einer Spalte mit einer relativen Fehlerquote von 5 %.
  + Höchstwert: der höchste Wert in der Spalte.
  + Mindestwert: der kleinste Wert in der Spalte. 
  + Maximale Länge: die Länge des höchsten Werts in der Spalte.
  + Null-Werte: die Anzahl der Null-Werte in der Spalte.
  + „Wahr“-Werte: die Anzahl der „Wahr“-Werte in der Spalte.
  + „Falsch“-Werte: die Anzahl der „Falsch“-Werte in der Spalte.
  + numFiles: Die Gesamtzahl der Dateien in der Tabelle. Dieser Wert ist auf der Registerkarte **Erweiterte Eigenschaften** verfügbar.

------
#### [ AWS CLI ]

Im folgenden Beispiel wird gezeigt, wie Sie Spaltenstatistiken mithilfe von AWS CLI abrufen.

```
aws glue get-column-statistics-for-table \
    --database-name database_name \
    --table-name table_name \
    --column-names <column_name>
```

 Sie können die Spaltenstatistiken auch mithilfe der API-Operation anzeigen. [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html) 

------

# Anzeigen von Spaltenstatistik-Aufgabenläufen
<a name="view-stats-run"></a>

Nachdem Sie eine Aufgabe mit Spaltenstatistiken ausgeführt haben, können Sie die Details der Aufgabenausführung für eine Tabelle mithilfe der AWS Glue Konsole AWS CLI oder mithilfe von [GetColumnStatisticsTaskRuns](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-GetColumnStatisticsTaskRun)Operation untersuchen.

------
#### [ Console ]

**Anzeigen von Details zur Ausführung einer Spaltenstatistik-Aufgabe**

1. Wählen Sie auf der AWS Glue Konsole unter Datenkatalog die Option **Tabellen** aus.

1. Wählen Sie eine Tabelle mit Spaltenstatistiken aus.

1. Wählen Sie auf der Seite **Tabellendetails** die Option **Spaltenstatistiken** aus.

1. Wählen Sie **Ausführungen anzeigen** aus.

   Sie können Informationen zu allen Ausführungen in Verbindung mit der angegebenen Tabelle anzeigen.  
![\[Im Screenshot werden die Optionen angezeigt, die zum Generieren von Spaltenstatistiken verfügbar sind.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/view-column-stats-task-runs.png)

------
#### [ AWS CLI ]

Ersetzen Sie Werte für `DatabaseName` und `TableName` im folgenden Beispiel durch den tatsächlichen Datenbank- und Tabellennamen.

```
aws glue get-column-statistics-task-runs --input-cli-json file://input.json
{
    "DatabaseName": "database_name",
    "TableName": "table_name"
}
```

------

# Beenden des Spaltenstatistik-Aufgabenlaufs
<a name="stop-stats-run"></a>

Sie können die Ausführung einer Spaltenstatistikaufgabe für eine Tabelle mithilfe der AWS Glue Konsole AWS CLI oder mithilfe von [StopColumnStatisticsTaskRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StopColumnStatisticsTaskRun)Operation beenden.

------
#### [ Console ]

**Einen Spaltenstatistik-Aufgabenlauf beenden Sie wie folgt:**

1. Wählen Sie in der AWS Glue Konsole unter Datenkatalog die Option **Tabellen** aus.

1. Wählen Sie die Tabelle mit der Spalte „Spaltenstatistik-Aufgabenlauf wird ausgeführt“ aus.

1. Wählen Sie auf der Seite **Tabellendetails** die Option **Spaltenstatistiken** aus.

1. Wählen Sie **Beenden** aus.

   Wenn Sie die Aufgabe beenden, bevor die Ausführung abgeschlossen ist, werden keine Spaltenstatistiken für die Tabelle generiert.

------
#### [ AWS CLI ]

Ersetzen Sie Werte für `DatabaseName` und `TableName` im folgenden Beispiel durch den tatsächlichen Datenbank- und Tabellennamen.

```
aws glue stop-column-statistics-task-run --input-cli-json file://input.json
{
    "DatabaseName": "database_name",
    "TableName": "table_name"
}
```

------

# Löschen von Spaltenstatistiken
<a name="delete-column-stats"></a>

Sie können Spaltenstatistiken mithilfe der [DeleteColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_DeleteColumnStatisticsForTable.html)API-Operation oder löschen AWS CLI. Das folgende Beispiel zeigt, wie Spaltenstatistiken mit AWS Command Line Interface (AWS CLI) gelöscht werden.

```
aws glue delete-column-statistics-for-table \
    --database-name 'database_name' \
    --table-name 'table_name' \
    --column-name 'column_name'
```

# Überlegungen und Einschränkungen
<a name="column-stats-notes"></a>

Die folgenden Überlegungen und Einschränkungen gelten für die Generierung von Spaltenstatistiken.

**Überlegungen**
+ Die Verwendung von Stichproben zur Generierung von Statistiken reduziert die Laufzeit, kann jedoch zu ungenauen Statistiken führen.
+ Data Catalog speichert keine unterschiedlichen Versionen der Statistiken.
+ Sie können pro Tabelle nur jeweils eine Aufgabe zur Erstellung von Statistiken gleichzeitig ausführen.
+ Wenn eine Tabelle mit einem AWS KMS Kundenschlüssel verschlüsselt ist, der bei Data Catalog registriert ist, AWS Glue verwendet denselben Schlüssel zum Verschlüsseln von Statistiken.

**Die Aufgabe für Spaltenstatistiken unterstützt das Generieren von Statistiken:**
+ Wenn die IAM-Rolle über vollständige Tabellenberechtigungen verfügt (IAM oder Lake Formation).
+ Wenn die IAM-Rolle im Lake-Formation-Hybridzugriffsmodus über Berechtigungen für die Tabelle verfügt.

**Die Aufgabe für Spaltenstatistiken unterstützt das Generieren von Statistiken in folgenden Fällen nicht:**
+ Tabellen mit zellbasierter Zutrittskontrolle von Lake Formation
+ Transaktionale Data Lakes – Linux Foundation Delta Lake, Apache Hudi
+ Tabellen in Verbunddatenbanken – Hive Metastore, Amazon Redshift Datashares
+ Verschachtelte Spalten, Arrays und Strukturdatentypen.
+ Tabellen, die von einem anderen Konto mit Ihnen geteilt werden

# Verschlüsseln Ihres Data Catalog
<a name="catalog-encryption"></a>

 Sie können Ihre im Ruhezustand gespeicherten Metadaten mithilfe von Verschlüsselungsschlüsseln schützen, die AWS Glue Data Catalog von AWS Key Management Service (AWS KMS) verwaltet werden. Sie können die Datenkatalogverschlüsselung für neue Datenkataloge mithilfe der **Datenkatalogeinstellungen** aktivieren. Sie können die Verschlüsselung für einen vorhandenen Datenkatalog nach Bedarf aktivieren oder deaktivieren. Wenn diese Option aktiviert ist, werden alle neuen Metadaten, die in den Katalog geschrieben werden, AWS Glue verschlüsselt, während vorhandene Metadaten unverschlüsselt bleiben. 

Ausführliche Informationen zur Verschlüsselung Ihres Datenkatalogs finden Sie unter [Verschlüsseln Ihres Data Catalog](encrypt-glue-data-catalog.md).

# Sicherung Ihres Datenkatalogs mit Lake Formation
<a name="secure-catalog"></a>

 AWS Lake Formation ist ein Service, der es einfacher macht, einen sicheren Data Lake einzurichten AWS. Er bietet einen zentralen Ort, an dem Sie Ihre Data Lakes erstellen und sicher verwalten können, indem Sie detaillierte Zugriffssteuerungsberechtigungen definieren. Lake Formation verwendet den Datenkatalog, um Metadaten zu Ihrem Data Lake zu speichern und abzurufen, z. B. Tabellendefinitionen, Schemainformationen und Einstellungen für die Datenzugriffssteuerung.

Sie können Ihren Amazon-S3-Datenspeicherort der Metadatentabelle oder -datenbank bei Lake Formation registrieren und damit Berechtigungen auf Metadatenebene für die Datenkatalogressourcen definieren. Sie können Lake Formation auch verwenden, um Speicherzugriffsberechtigungen für die in Amazon S3 gespeicherten zugrunde liegenden Daten im Auftrag integrierter Analyse-Engines zu verwalten.

Weitere Informationen finden Sie unter [Was ist AWS Lake Formation?](lake-formation/latest/dg/what-is-lake-formation.html) .

# Arbeiten mit AWS Glue Data Catalog Ansichten in AWS Glue
<a name="catalog-views"></a>

 Sie können Ansichten in den AWS Glue Data Catalog, allgemein als AWS Glue Data Catalog Ansichten bekannt, erstellen und verwalten. Diese Ansichten sind nützlich, da sie mehrere SQL-Abfrage-Engines unterstützen, sodass Sie über verschiedene AWS Dienste hinweg auf dieselbe Ansicht zugreifen können Amazon Athena, z. B. Amazon Redshift, und AWS Glue. Sie können Ansichten verwenden, die auf Apache Iceberg, Apache Hudi und Delta Lake basieren. 

 Indem Sie eine Ansicht im Datenkatalog erstellen, können Sie mithilfe von Ressourcenzuweisungen und tagbasierten Zugriffskontrollen Zugriff darauf gewähren. AWS Lake Formation Mit dieser Methode der Zugriffskontrolle müssen Sie keinen zusätzlichen Zugriff auf die Tabellen konfigurieren, auf die beim Erstellen der Ansicht verwiesen wird. Diese Methode zum Gewähren von Berechtigungen wird als Definer-Semantik bezeichnet, und diese Ansichten werden als Definer-Ansichten bezeichnet. Weitere Informationen zur Zugriffskontrolle finden Sie unter [Erteilen und Widerrufen von Berechtigungen für Datenkatalogressourcen](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html) im AWS Lake Formation Entwicklerhandbuch. AWS Lake Formation

 Data-Catalog-Ansichten sind in folgenden Anwendungsfällen nützlich: 
+  **Präzisere Zugriffskontrolle** – Sie können eine Ansicht erstellen, die den Datenzugriff auf der Grundlage der vom Benutzer benötigten Berechtigungen einschränkt. Mithilfe von Ansichten im Datenkatalog können Sie beispielsweise verhindern, dass Mitarbeiter, die nicht in der Personalabteilung arbeiten, persönlich identifizierbare Informationen (PII) sehen. 
+  **Vollständige Ansichtsdefinition** – Durch das Anwenden von Filtern auf Ihre Ansicht im Datenkatalog stellen Sie sicher, dass die in der Ansicht verfügbaren Datensätze immer vollständig sind. 
+  **Verbesserte Sicherheit** – Die zum Erstellen der Ansicht verwendete Abfragedefinition muss vollständig sein, sodass Data-Catalog-Ansichten weniger anfällig für SQL-Befehle von böswilligen Akteuren sind. 
+  **Einfache gemeinsame Nutzung von Daten** — Nutzen Sie die kontenübergreifende Datenfreigabe in, um Daten mit anderen AWS Konten zu teilen, ohne Daten verschieben zu müssen. AWS Lake Formation

## Erstellen einer Data-Catalog-Ansicht
<a name="catalog-creating-view"></a>

 Sie können Datenkatalogansichten mit den AWS CLI und AWS Glue ETL-Skripts mit Spark SQL erstellen. Die Syntax für die Erstellung einer Data-Catalog-Ansicht beinhaltet die Angabe des Ansichtstyps als `MULTI DIALECT` und des `SECURITY` Prädikats als `DEFINER`, wodurch eine Definer-Ansicht angegeben wird. 

 Beispiel für eine SQL-Anweisung zum Erstellen einer Data-Catalog-Ansicht: 

```
CREATE PROTECTED MULTI DIALECT VIEW database_name.catalog_view SECURITY DEFINER
AS SELECT order_date, sum(totalprice) AS price
FROM source_table
GROUP BY order_date;
```

 Nachdem Sie eine Datenkatalogsicht erstellt haben, können Sie eine IAM-Rolle mit der AWS Lake Formation `SELECT`-Berechtigung für die Ansicht verwenden, um sie von Diensten wie Amazon Athena Amazon Redshift, oder AWS Glue ETL-Jobs abzufragen. Sie müssen keinen Zugriff auf die zugrunde liegenden Tabellen gewähren, auf die in der Ansicht verwiesen wird. 

 Weitere Informationen zum Erstellen und Konfigurieren von Datenkatalogsichten finden Sie unter [Erstellen von AWS Glue Datenkatalogansichten im AWS Lake Formation Entwicklerhandbuch](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html). 

## Unterstützte Ansichtsvorgänge
<a name="catalog-supported-view-operations"></a>

 Die folgenden Befehlsfragmente zeigen Ihnen verschiedene Möglichkeiten, mit Data-Catalog-Ansichten zu arbeiten: 

 **ANSICHT ERSTELLEN** 

 Erstellt eine Data-Catalog-Ansicht. Dies ist ein Beispiel für das Erstellen einer Ansicht aus einer vorhandenen Tabelle: 

```
CREATE PROTECTED MULTI DIALECT VIEW catalog_view 
SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table
```

 **ALTER VIEW** 

 Verfügbare Syntax: 

```
ALTER VIEW view_name [FORCE] ADD DIALECT AS query
ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query
ALTER VIEW view_name DROP DIALECT
```

 Sie können die Option `FORCE ADD DIALECT` verwenden, um das Aktualisieren des Schemas und der Unterobjekte gemäß dem neuen Engine-Dialekt zu erzwingen. Beachten Sie, dass dies zu Abfragefehlern führen kann, wenn Sie nicht auch `FORCE` verwenden, um andere Engine-Dialekte zu aktualisieren. Hier ein Beispiel: 

```
ALTER VIEW catalog_view FORCE ADD DIALECTAS
SELECT order_date, sum(totalprice) AS priceFROM source_tableGROUP BY orderdate;
```

 Unten wird gezeigt, wie Sie eine Ansicht ändern, um den Dialekt zu aktualisieren: 

```
ALTER VIEW catalog_view UPDATE DIALECT AS
SELECT count(*) FROM my_catalog.my_database.source_table;
```

 **DESCRIBE VIEW** 

 Verfügbare Syntax für die Beschreibung einer Ansicht: 

 `SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]`— Wenn der Benutzer über die erforderlichen AWS Glue AWS Lake Formation Rechte zur Beschreibung der Ansicht verfügt, kann er die Spalten auflisten. Unten sehen Sie einige Beispielbefehle zum Anzeigen von Spalten: 

```
SHOW COLUMNS FROM my_database.source_table;    
SHOW COLUMNS IN my_database.source_table;
```

 `DESCRIBE view_name`— Wenn der Benutzer über die erforderlichen AWS Lake Formation Rechte AWS Glue und Berechtigungen zur Beschreibung der Ansicht verfügt, kann er die Spalten in der Ansicht zusammen mit ihren Metadaten auflisten. 

 **DROP VIEW** 

 Verfügbare Syntax: 

```
DROP VIEW [ IF EXISTS ] view_name
```

 Das folgende Beispiel zeigt eine `DROP`-Anweisung, die testet, ob eine Ansicht vorhanden ist, bevor sie gelöscht wird: 

```
DROP VIEW IF EXISTS catalog_view;
```

 `SHOW CREATE VIEW view_name` – Zeigt die SQL-Anweisung an, die die angegebene Ansicht erstellt. Dies ist ein Beispiel für das Erstellen einer Data-Catalog-Ansicht: 

```
SHOW CREATE TABLE my_database.catalog_view;CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view (
  net_profit,
  customer_id,
  item_id,
  sold_date)
TBLPROPERTIES (
  'transient_lastDdlTime' = '1736267222')
SECURITY DEFINER AS SELECT * FROM
my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)
```

 **SHOW VIEWS** 

 Listet alle Ansichten im Katalog auf, z. B. reguläre Ansichten, Ansichten mit mehreren Dialekten (Multi-Dialect Views, MDV) und MDV ohne Spark-Dialekt. Die verfügbare Syntax lautet wie folgt: 

```
SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]:
```

 Im Folgenden finden Sie einen Beispielbefehl zum Anzeigen von Ansichten: 

```
SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';
```

 Weitere Informationen zum Erstellen und Konfigurieren von Datenkatalogansichten finden Sie unter [Erstellen von AWS Glue Datenkatalogansichten](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html) im AWS Lake Formation Entwicklerhandbuch. 

## Abfrage einer Data-Catalog-Ansicht
<a name="catalog-view-query"></a>

 Nachdem Sie eine Data-Catalog-Ansicht erstellt haben, können Sie die Ansicht abfragen. Die in Ihren AWS Glue Jobs konfigurierte IAM-Rolle muss über die Lake Formation **SELECT-Berechtigung** in der Datenkatalogansicht verfügen. Sie müssen keinen Zugriff auf die zugrunde liegenden Tabellen gewähren, auf die in der Ansicht verwiesen wird. 

 Sobald Sie alles eingerichtet haben, können Sie Ihre Ansicht abfragen. Sie können beispielsweise folgende Abfrage ausführen, um auf eine Ansicht zuzugreifen. 

```
SELECT * from my_database.catalog_view LIMIT 10;
```

## Einschränkungen
<a name="catalog-view-limitations"></a>

 Berücksichtigen Sie die folgenden Einschränkungen, wenn Sie Data-Catalog-Ansichten verwenden. 
+  Sie können Datenkatalogansichten nur mit AWS Glue Version 5.0 und höher erstellen. 
+  Der Data-Catalog-Ansicht-Definer muss `SELECT`-Zugriff auf die zugrunde liegenden Basistabellen haben, auf die in der Ansicht zugegriffen wird. Das Erstellen der Data-Catalog-Ansicht schlägt fehl, wenn einer bestimmten Basistabelle Lake-Formation-Filter zugewiesen wurden, die der Definier-Rolle zugewiesen wurden. 
+  Basistabellen dürfen nicht über die `IAMAllowedPrincipals`-Data-Lake-Berechtigung in AWS Lake Formation verfügen. Falls vorhanden, tritt der Fehler **Multi Dialect views may only referenzed tables without IAMAllowed Principals permissions**. 
+  Der Amazon S3-Standort der Tabelle muss als AWS Lake Formation Data Lake-Standort registriert sein. Wenn die Tabelle nicht registriert ist, tritt der Fehler `Multi Dialect views may only reference AWS Lake Formation managed tables` auf. Informationen zur Registrierung von Amazon Amazon S3 S3-Standorten finden Sie unter [Registrierung eines Amazon S3 S3-Standorts](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html) im AWS Lake Formation Entwicklerhandbuch. AWS Lake Formation
+  Sie können nur `PROTECTED`-Data-Catalog-Ansichten erstellen. `UNPROTECTED`-Ansichten werden nicht unterstützt. 
+  Sie können in einer Datenkatalog-View-Definition nicht auf Tabellen in einem anderen AWS Konto verweisen. Sie können auch nicht auf eine Tabelle in demselben Konto verweisen, das sich in einer separaten Region befindet. 
+  Um Daten konto- oder regionsübergreifend freizugeben, muss die gesamte Ansicht mithilfe von AWS Lake Formation -Ressourcenlinks konto- und regionsübergreifend freigegeben werden. 
+  Benutzerdefinierte Funktionen (UDFs) werden nicht unterstützt. 
+  In Data-Catalog-Ansichten kann nicht auf andere Ansichten verwiesen werden. 

# Zugreifen auf den Datenkatalog
<a name="access_catalog"></a>

 Sie können den AWS Glue Data Catalog (Datenkatalog) verwenden, um Ihre Daten zu entdecken und zu verstehen. Der Datenkatalog bietet eine konsistente Methode zur Verwaltung von Schemadefinitionen, Datentypen, Speicherorten und anderen Metadaten. Sie können mit den folgenden Methoden auf den Datenkatalog zugreifen:
+ AWS Glue Konsole — Sie können über die AWS Glue Konsole, eine webbasierte Benutzeroberfläche, auf den Datenkatalog zugreifen und ihn verwalten. Über die Konsole können Sie Datenbanken, Tabellen und die zugehörigen Metadaten durchsuchen sowie Metadatendefinitionen erstellen, aktualisieren und löschen. 
+ AWS-Glue-Crawler — Crawler sind Programme, die Ihre Datenquellen automatisch scannen und den Datenkatalog mit Metadaten füllen. Sie können Crawler erstellen und ausführen, um Daten aus verschiedenen Quellen wie Amazon S3, Amazon RDS, Amazon DynamoDB und JDBC-kompatiblen relationalen Datenbanken wie MySQL und PostgreSQL sowie aus mehreren Nichtquellen wie Snowflake und Google zu entdecken und zu katalogisieren. Amazon CloudWatchAWS BigQuery
+ AWS Glue APIs — Sie können programmgesteuert auf den Datenkatalog zugreifen, indem Sie AWS Glue APIs Diese APIs ermöglichen Ihnen die programmgesteuerte Interaktion mit dem Datenkatalog und ermöglichen so die Automatisierung und Integration mit anderen Anwendungen und Diensten. 
+ AWS Command Line Interface (AWS CLI) — Sie können den verwenden AWS CLI , um über die Befehlszeile auf den Datenkatalog zuzugreifen und ihn zu verwalten. Die CLI bietet Befehle zum Erstellen, Aktualisieren und Löschen von Metadatendefinitionen sowie zum Abfragen und Abrufen von Metadateninformationen. 
+ Integration mit anderen AWS Diensten — Der Datenkatalog lässt sich in verschiedene andere AWS Dienste integrieren, sodass Sie auf die im Katalog gespeicherten Metadaten zugreifen und diese nutzen können. Sie können Amazon Athena beispielsweise verwenden, um Datenquellen mithilfe der Metadaten im Datenkatalog abzufragen und den Datenzugriff und die Datenverwaltung für die Datenkatalogressourcen AWS Lake Formation zu verwalten. 

**Topics**
+ [Mit dem AWS Glue Iceberg-REST-Endpunkt eine Verbindung zum Datenkatalog herstellen](connect-glu-iceberg-rest.md)
+ [Verbindung zum Datenkatalog mithilfe des AWS Glue Iceberg-REST-Erweiterungsendpunkts herstellen](connect-glue-iceberg-rest-ext.md)
+ [AWS Glue REST APIs für Apache Iceberg-Spezifikationen](iceberg-rest-apis.md)
+ [Herstellen einer Verbindung mit Datenkatalog über eine eigenständige Spark-Anwendung](connect-gludc-spark.md)
+ [Zuordnen von Daten zwischen Amazon Redshift und Apache Iceberg](data-mapping-rs-iceberg.md)
+ [Überlegungen und Einschränkungen bei der Verwendung von AWS Glue Iceberg REST Catalog APIs](limitation-glue-iceberg-rest-api.md)

# Mit dem AWS Glue Iceberg-REST-Endpunkt eine Verbindung zum Datenkatalog herstellen
<a name="connect-glu-iceberg-rest"></a>

 Der Iceberg-REST-Endpunkt von AWS Glue unterstützt API-Operationen, die in der Apache-Iceberg-REST-Spezifikation spezifiziert sind. Mit einem Iceberg-REST-Client können Sie Ihre auf einer Analyse-Engine ausgeführte Anwendung mit dem im Datenkatalog gehosteten REST-Katalog verbinden.

 Der Endpunkt unterstützt beide Apache-Iceberg-Tabellenspezifikationen – v1 und v2, wobei standardmäßig v2 verwendet wird. Wenn Sie die Iceberg-Tabellenspezifikation v1 verwenden, müssen Sie v1 im API-Aufruf angeben. Mit der API-Operation können Sie auf Iceberg-Tabellen zugreifen, die sowohl im Amazon-S3-Objektspeicher als auch im Amazon-S3-Tables-Speicher gespeichert sind. 

**Endpunktkonfiguration**

Sie können über den Service-Endpunkt auf den AWS Glue Iceberg-REST-Katalog zugreifen. Die regionsspezifischen Endpunkte finden Sie im [Referenzhandbuch zu den AWS Glue -Service-Endpunkten](https://docs.aws.amazon.com/general/latest/gr/glue.html#glue_region). Wenn Sie beispielsweise eine Verbindung zu AWS Glue in der Region us-east-1 herstellen, müssen Sie die Eigenschaft „Endpunkt-URI“ wie folgt konfigurieren: 

```
Endpoint : https://glue.us-east-1.amazonaws.com/iceberg
```

**Zusätzliche Konfigurationseigenschaften**: Wenn Sie den Iceberg-Client verwenden, um eine Analyse-Engine wie Spark mit dem Service-Endpunkt zu verbinden, müssen Sie die folgenden Anwendungskonfigurationseigenschaften angeben:

```
catalog_name = "mydatacatalog"
aws_account_id = "123456789012"
aws_region = "us-east-1"
spark = SparkSession.builder \
    ... \
    .config("spark.sql.defaultCatalog", catalog_name) \
    .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \
    .config(f"spark.sql.catalog.{catalog_name}.type", "rest") \
    .config(f"spark.sql.catalog.{catalog_name}.uri", "https://glue.{aws_region}.amazonaws.com/iceberg") \
    .config(f"spark.sql.catalog.{catalog_name}.warehouse", "{aws_account_id}") \
    .config(f"spark.sql.catalog.{catalog_name}.rest.sigv4-enabled", "true") \
    .config(f"spark.sql.catalog.{catalog_name}.rest.signing-name", "glue") \    
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
```

AWS Glue Der Iceberg-Endpunkt ` https://glue.us-east-1.amazonaws.com/iceberg` unterstützt den folgenden Iceberg-REST: APIs
+ GetConfig
+ ListNamespaces
+ CreateNamespace
+ LoadNamespaceMetadata
+ UpdateNamespaceProperties
+ DeleteNamespace
+ ListTables
+ CreateTable
+ LoadTable
+ TableExists
+ UpdateTable
+ DeleteTable

## Präfix- und Katalogpfadparameter
<a name="prefix-catalog-path-parameters"></a>

Der Iceberg-REST-Katalog enthält in APIs seiner Anfrage ein Präfix in freier Form. URLs Beispielsweise verwendet der `ListNamespaces` API-Aufruf das `GET/v1/{prefix}/namespaces` URL-Format. AWS Glue Das Präfix folgt immer der `/catalogs/{catalog}` Struktur, um sicherzustellen, dass der REST-Pfad der Hierarchie mit AWS Glue mehreren Katalogen entspricht. Der `{catalog}`-Pfadparameter kann auf der Grundlage der folgenden Regeln abgeleitet werden:


| **Zugriffsmuster** |  **Glue-Katalog-ID-Stil**  |  **Präfix-Stil**  | **Beispiel für eine Standard-Katalog-ID** |  **Beispiel für eine REST-Route**  | 
| --- | --- | --- | --- | --- | 
|  Zugriff auf den Standardkatalog im aktuellen Konto  | Nicht erforderlich | : |  Nicht zutreffend  |  GET /v1/catalogs/:/namespaces  | 
|  Zugriff auf den Standardkatalog in einem bestimmten Konto  | accountID | accountID | 111122223333 | GET /v1/catalogs/111122223333/namespaces | 
|  Zugriff auf einen verschachtelten Katalog im aktuellen Konto  |  catalog1/catalog2  |  catalog1/catalog2  |  rmscatalog1:db1  |  HOLEN SIE SICH /v1/ catalogs/rmscatalog1:db1/namespaces  | 
|  Zugriff auf einen verschachtelten Katalog in einem bestimmten Konto  |  accountId:catalog1/catalog2  |  accountId:catalog1/catalog2  |  123456789012/rmscatalog1:db1  |  GET /v1/catalogs/123456789012:rmscatalog1:db1/namespaces  | 

Diese Zuordnung von Katalog-ID zu Präfix ist nur erforderlich, wenn Sie den REST direkt aufrufen. APIs Wenn Sie mit dem AWS Glue Iceberg-REST-Katalog APIs über eine Engine arbeiten, müssen Sie die AWS Glue Katalog-ID im `warehouse` Parameter für Ihre Iceberg-REST-Katalog-API-Einstellung oder im `glue.id` Parameter für Ihre AWS Glue Erweiterungs-API-Einstellung angeben. Informationen zur Verwendung mit EMR Spark finden Sie unter [Verwenden Sie einen Iceberg-Cluster mit Spark](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-spark-cluster.html).

## Namespace-Pfadparameter
<a name="ns-path-param"></a>

Namespaces im APIs Iceberg-REST-Katalogpfad können mehrere Ebenen haben. AWS Glue unterstützt jedoch nur einstufige Namespaces. Um auf einen Namespace in einer mehrstufigen Kataloghierarchie zuzugreifen, können Sie eine Verbindung zu einem übergeordneten mehrstufigen Katalog herstellen, um auf den Namespace zu verweisen. Dadurch kann jede Abfrage-Engine, die die dreiteilige Notation unterstützt, im Vergleich `catalog.namespace.table` zur Verwendung des mehrstufigen AWS Glue Namespaces ohne Kompatibilitätsprobleme auf Objekte in der mehrstufigen Kataloghierarchie zugreifen.

# Verbindung zum Datenkatalog mithilfe des AWS Glue Iceberg-REST-Erweiterungsendpunkts herstellen
<a name="connect-glue-iceberg-rest-ext"></a>

 AWS Glue Der Iceberg-REST-Erweiterungsendpunkt bietet zusätzliche Funktionen APIs, die nicht in der Apache Iceberg-REST-Spezifikation enthalten sind, und bietet serverseitige Scanplanungsfunktionen. Diese zusätzlichen APIs werden verwendet, wenn Sie auf Tabellen zugreifen, die im verwalteten Amazon Redshift Redshift-Speicher gespeichert sind. Auf den Endpunkt kann von einer Anwendung aus zugegriffen werden, die Apache Iceberg-Erweiterungen AWS Glue Data Catalog verwendet. 

**Endpunktkonfiguration** – Über den Service-Endpunkt kann auf einen Katalog mit Tabellen im von Redshift verwalteten Speicher zugegriffen werden. Die regionsspezifischen Endpunkte finden Sie im [Referenzhandbuch zu den AWS Glue -Service-Endpunkten](https://docs.aws.amazon.com/general/latest/gr/glue.html#glue_region). Wenn Sie beispielsweise eine Verbindung mit der AWS Glue Region us-east-1 herstellen, müssen Sie die Eigenschaft Endpunkt-URI wie folgt konfigurieren:

```
Endpoint : https://glue.us-east-1.amazonaws.com/extensions
```

```
catalog_name = "myredshiftcatalog"
aws_account_id = "123456789012"
aws_region = "us-east-1"
spark = SparkSession.builder \
    .config("spark.sql.defaultCatalog", catalog_name) \
    .config(f"spark.sql.catalog.{catalog_name}", "org.apache.iceberg.spark.SparkCatalog") \
    .config(f"spark.sql.catalog.{catalog_name}.type", "glue") \
    .config(f"spark.sql.catalog.{catalog_name}.glue.id", "{123456789012}:redshiftnamespacecatalog/redshiftdb") \
    .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") \
    .getOrCreate()
```

# AWS Glue REST APIs für Apache Iceberg-Spezifikationen
<a name="iceberg-rest-apis"></a>

Dieser Abschnitt enthält Spezifikationen zum AWS Glue Iceberg-REST-Katalog und zur AWS Glue REST-Erweiterung APIs sowie Überlegungen zu deren Verwendung. APIs 

API-Anfragen an die AWS Glue Data Catalog Endgeräte werden mit AWS Signature Version 4 (Sigv4) authentifiziert. Weitere Informationen zu [AWS Sigv4 finden Sie im Abschnitt Signature Version 4 für API-Anfragen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html). AWS 

Beim Zugriff auf den AWS Glue Dienstendpunkt und die AWS Glue Metadaten nimmt die Anwendung eine IAM-Rolle ein, für die eine IAM-Aktion erforderlich ist`glue:getCatalog`. 

Der Zugriff auf den Datenkatalog und die Objekte kann mithilfe von IAM-, Lake-Formation- oder Lake-Formation-Hybridmodus-Berechtigungen verwaltet werden.

Verbundkataloge im Datenkatalog weisen in Lake Formation registrierte Datenspeicherorte auf. Lake Formation arbeitet mit dem Datenkatalog zusammen, um Datenbanken ähnliche Berechtigungen für die Verwaltung des Benutzerzugriffs auf Datenkatalogobjekte bereitzustellen. 

Sie können IAM- oder Lake Formation Formation-Hybridmodus-Berechtigungen verwenden AWS Lake Formation, um den Zugriff auf den Standard-Datenkatalog und seine Objekte zu verwalten. 

Um Daten in von Lake Formation verwalteten Objekten zu erstellen, einzufügen oder zu löschen, müssen Sie bestimmte Berechtigungen für den IAM-Benutzer oder die IAM-Rolle einrichten. 
+ CREATE\$1CATALOG – erforderlich, um Kataloge zu erstellen 
+ CREATE\$1DATABASE – erforderlich, um Datenbanken zu erstellen
+ CREATE\$1TABLE – erforderlich, um Tabellen zu erstellen
+ DELETE – erforderlich, um Daten aus einer Tabelle zu löschen
+ DESCRIBE – erforderlich, um Metadaten zu lesen 
+ DROP — Für drop/delete eine Tabelle oder Datenbank erforderlich
+ INSERT – erforderlich, wenn der Prinzipal Daten in eine Tabelle einfügen muss
+ SELECT – erforderlich, wenn der Prinzipal Daten aus einer Tabelle auswählen muss

Weitere Informationen finden Sie in der [Berechtigungsreferenz für Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-reference.html) im AWS Lake Formation Entwicklerhandbuch.

# GetConfig
<a name="get-config"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | GetConfig | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  HOLEN/iceberg/v1/config  | 
| IAM-Aktion |  kleben: GetCatalog  | 
| Lake-Formation-Berechtigungen | Nicht zutreffend | 
| CloudTrail event |  kleben: GetCatalog  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L67 | 

****Überlegungen und Einschränkungen****
+ Der `warehouse` Abfrageparameter muss auf die AWS Glue Katalog-ID gesetzt werden. Wenn nicht festgelegt, wird der Stammkatalog im aktuellen Konto verwendet, um die Antwort zurückzugeben. Weitere Informationen finden Sie unter [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters).

# GetCatalog
<a name="get-catalog"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | GetCatalog | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  GET/extensions/v1/catalogs/\$1katalog\$1  | 
| IAM-Aktion |  Klebstoff: GetCatalog  | 
| Lake-Formation-Berechtigungen | DESCRIBE | 
| CloudTrail event |  kleben: GetCatalog  | 
| OpenAPI-Definition | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-Erweiterungen-api.yaml \$1L40 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.

# ListNamespaces
<a name="list-ns"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | ListNamespaces | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces  | 
| IAM-Aktion |  kleben: GetDatabase  | 
| Lake-Formation-Berechtigungen | ALL, DESCRIBE, SELECT | 
| CloudTrail event |  kleben: GetDatabase  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L205 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Es werden nur Namespaces der nächsten Ebene angezeigt. Um Namespaces auf tieferen Ebenen aufzulisten, geben Sie die ID des geschachtelten Katalogs im Katalogpfadparameter an.

# CreateNamespace
<a name="create-ns"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | CreateNamespace | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  POST/iceberg/v1/catalogs/\$1catalog\$1/namespaces  | 
| IAM-Aktion |  kleben: CreateDatabase  | 
| Lake-Formation-Berechtigungen | ALL, DESCRIBE, SELECT | 
| CloudTrail event |  kleben: CreateDatabase  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L256 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Es kann nur ein Namespace mit einer Ebene erstellt werden. Um einen Namespace mit mehreren Ebenen zu erstellen, müssen Sie jede Ebene iterativ erstellen und mithilfe des Katalogpfadparameters eine Verbindung mit der Ebene herstellen.

# StartCreateNamespaceTransaction
<a name="start-create-ns-transaction"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | StartCreateNamespaceTransaction | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces  | 
| IAM-Aktion |  kleben: CreateDatabase  | 
| Lake-Formation-Berechtigungen | ALL, DESCRIBE, SELECT | 
| CloudTrail event |  kleben: CreateDatabase  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L256 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können nur einen Namespace mit einer Ebene erstellen. Um Namespaces mit mehreren Ebenen zu erstellen, müssen Sie jede Ebene iterativ erstellen und mithilfe des Katalogpfadparameters eine Verbindung mit der Ebene herstellen.
+ Die API ist asynchron und gibt eine Transaktions-ID zurück, die Sie für die Nachverfolgung mithilfe des `CheckTransactionStatus`-API-Aufrufs verwenden können.
+  Sie können diese API nur aufrufen, wenn der `GetCatalog`-API-Aufruf den Parameter `use-extensions=true` in der Antwort enthält. 

## LoadNamespaceMetadata
<a name="load-ns-metadata"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | LoadNamespaceMetadata | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1  | 
| IAM-Aktion |  kleben: GetDatabase  | 
| Lake-Formation-Berechtigungen | ALL, DESCRIBE, SELECT | 
| CloudTrail event |  kleben: GetDatabase  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L302 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).

## UpdateNamespaceProperties
<a name="w2aac20c29c16c21c13"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | UpdateNamespaceProperties | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  BEITRAG/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/properties  | 
| IAM-Aktion |  kleben: UpdateDatabase  | 
| Lake-Formation-Berechtigungen | ALL, ALTER | 
| CloudTrail event |  kleben: UpdateDatabase  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L400 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).

# DeleteNamespace
<a name="delete-ns"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | DeleteNamespace | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  DELETE/iceberg/v1/catalogs/\$1catalog\$1/namespces/\$1ns\$1  | 
| IAM-Aktion |  kleben: DeleteDatabase  | 
| Lake-Formation-Berechtigungen | ALL, DROP | 
| CloudTrail event |  kleben: DeleteDatabase  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L365 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ Wenn sich Objekte in der Datenbank befinden, schlägt der Vorgang fehl.
+ Die API ist asynchron und gibt eine Transaktions-ID zurück, die Sie für die Nachverfolgung mithilfe des `CheckTransactionStatus`-API-Aufrufs verwenden können.
+  Die API kann nur verwendet werden, wenn der `GetCatalog`-API-Aufruf als Antwort `use-extensions=true` angibt. 

# StartDeleteNamespaceTransaction
<a name="start-delete-ns-transaction"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | StartDeleteNamespaceTransaction | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  /extensions/v1/catalogs/\$1catalog\$1/namespces/\$1ns\$1 LÖSCHEN  | 
| IAM-Aktion |  kleben: DeleteDatabase  | 
| Lake-Formation-Berechtigungen | ALL, DROP | 
| CloudTrail event |  kleben: DeleteDatabase  | 
| OpenAPI-Definition | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-Erweiterungen-api.yaml \$1L85 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ Wenn sich Objekte in der Datenbank befinden, schlägt der Vorgang fehl.
+ Die API ist asynchron und gibt eine Transaktions-ID zurück, die Sie für die Nachverfolgung mithilfe des `CheckTransactionStatus`-API-Aufrufs verwenden können.
+  Die API kann nur verwendet werden, wenn der `GetCatalog`-API-Aufruf als Antwort `use-extensions=true` angibt. 

# ListTables
<a name="list-tables"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | ListTables | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  HOLEN/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| IAM-Aktion |  kleben: GetTables  | 
| Lake-Formation-Berechtigungen | ALL, SELECT, DESCRIBE | 
| CloudTrail event |  kleben: GetTables  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L463 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ Alle Tabellen, auch wenn es sich nicht um Iceberg-Tabellen handelt, werden aufgelistet. Um festzustellen, ob eine Tabelle als Iceberg-Tabelle geladen werden kann oder nicht, rufen Sie den `LoadTable`-Vorgang auf.

# CreateTable
<a name="create-table"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | CreateTable | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  HOLEN/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| IAM-Aktion |  kleben: CreateTable  | 
| Lake-Formation-Berechtigungen | ALL, CREATE\$1TABLE | 
| CloudTrail event |  kleben: CreateTable  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L497 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ `CreateTable` mit Staging wird nicht unterstützt. Wenn der Abfrageparameter `stageCreate` angegeben ist, schlägt der Vorgang fehl. Das bedeutet, dass ein Vorgang wie `CREATE TABLE AS SELECT` nicht unterstützt wird und Sie können eine Kombination aus `CREATE TABLE` und `INSERT INTO` verwenden muss, um das Problem zu umgehen.
+ Der `CreateTable`-API-Vorgang unterstützt die Option `state-create = TRUE` nicht.

# StartCreateTableTransaction
<a name="start-create-table-transaction"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | CreateTable | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables  | 
| IAM-Aktion |  kleben: CreateTable  | 
| Lake-Formation-Berechtigungen | ALL, CREATE\$1TABLE | 
| CloudTrail event |  kleben: CreateTable  | 
| OpenAPI-Definition | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-Erweiterungen-api.yaml \$1L107 | 

****Überlegungen und Einschränkungen****
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ `CreateTable` mit Staging wird nicht unterstützt. Wenn der `stageCreate` Abfrageparameter angegeben ist, schlägt der Vorgang fehl. Das bedeutet, dass ein Vorgang wie `CREATE TABLE AS SELECT` nicht unterstützt wird und der Benutzer eine Kombination aus `CREATE TABLE` und `INSERT INTO` verwenden muss, um das Problem zu umgehen.
+ Die API ist asynchron und gibt eine Transaktions-ID zurück, die Sie für die Nachverfolgung mithilfe des `CheckTransactionStatus`-API-Aufrufs verwenden können.
+  Die API kann nur verwendet werden, wenn der `GetCatalog`-API-Aufruf als Antwort `use-extensions=true` angibt. 

# LoadTable
<a name="load-table"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | LoadTable | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  GET/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1Tabelle\$1  | 
| IAM-Aktion |  Klebstoff: GetTable  | 
| Lake-Formation-Berechtigungen | ALL, SELECT, DESCRIBE | 
| CloudTrail Ereignis |  kleben: GetTable  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L616 | 

**Überlegungen**
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ `CreateTable` mit Staging wird nicht unterstützt. Wenn der `stageCreate` Abfrageparameter angegeben ist, schlägt der Vorgang fehl. Das bedeutet, dass ein Vorgang wie `CREATE TABLE AS SELECT` nicht unterstützt wird und der Benutzer eine Kombination aus `CREATE TABLE` und `INSERT INTO` verwenden muss, um das Problem zu umgehen.
+ Die API ist asynchron und gibt eine Transaktions-ID zurück, die Sie für die Nachverfolgung mithilfe des `CheckTransactionStatus`-API-Aufrufs verwenden können.
+  Die API kann nur verwendet werden, wenn der `GetCatalog`-API-Aufruf als Antwort `use-extensions=true` angibt. 

# ExtendedLoadTable
<a name="extended-load-table"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | LoadTable | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  GET/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1Tabelle\$1  | 
| IAM-Aktion |  Klebstoff: GetTable  | 
| Lake-Formation-Berechtigungen | ALL, SELECT, DESCRIBE | 
| CloudTrail Ereignis |  kleben: GetTable  | 
| OpenAPI-Definition | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-Erweiterungen-api.yaml \$1L134 | 

**Überlegungen**
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ Für den Abfrageparameter für Snapshots wird nur der `all`-Modus unterstützt.
+ Im Vergleich zur `LoadTable`-API unterscheidet sich die `ExtendedLoadTable`-API in folgenden Punkten:
  +  Erzwingt nicht unbedingt, dass alle Felder verfügbar sind.
  + Stellt die folgenden zusätzlichen Parameter im Konfigurationsfeld der Antwort bereit:   
**Zusätzliche Parameter**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/extended-load-table.html)

# PreplanTable
<a name="preplan-table"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | PreplanTable | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  BEITRAG/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1/preplan  | 
| IAM-Aktion |  kleben: GetTable  | 
| Lake-Formation-Berechtigungen | ALL, SELECT, DESCRIBE | 
| CloudTrail Ereignis |  kleben: GetTable  | 
| OpenAPI-Definition | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-Erweiterungen-api.yaml \$1L211 | 

**Überlegungen**
+ Der Katalogpfadparameter sollte dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ Der Aufrufer dieser API muss immer anhand des Seitentokens ermitteln, ob noch Ergebnisse abgerufen werden müssen. Eine Antwort mit leerem Seitenelement, aber einem Paginierungstoken ist möglich, wenn die Serverseite noch verarbeitet, aber in der angegebenen Antwortzeit kein Ergebnis erzeugen kann.
+  Sie können diese API nur verwenden, wenn `aws.server-side-capabilities.scan-planning=true` in der `ExtendedLoadTable`-API-Antwort enthalten ist. 

# PlanTable
<a name="plan-table"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | PlanTable | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  BEITRAG/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1table\$1/plan  | 
| IAM-Aktion |  kleben: GetTable  | 
| Lake-Formation-Berechtigungen | ALL, SELECT, DESCRIBE | 
| CloudTrail Ereignis |  kleben: GetTable  | 
| OpenAPI-Definition | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-Erweiterungen-api.yaml \$1L243 | 

**Überlegungen**
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ Der Aufrufer dieser API muss immer anhand des Seitentokens ermitteln, ob noch Ergebnisse abgerufen werden müssen. Eine Antwort mit leerem Seitenelement, aber einem Paginierungstoken ist möglich, wenn die Serverseite noch verarbeitet, aber in der angegebenen Antwortzeit kein Ergebnis erzeugen kann.
+  Sie können diese API nur verwenden, wenn `aws.server-side-capabilities.scan-planning=true` in der `ExtendedLoadTable`-API-Antwort enthalten ist. 

# TableExists
<a name="table-exists"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | TableExists | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  HEAD/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1Tabelle\$1  | 
| IAM-Aktion |  Klebstoff: GetTable  | 
| Lake-Formation-Berechtigungen | ALL, SELECT, DESCRIBE | 
| CloudTrail Ereignis |  kleben: GetTable  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L833 | 

**Überlegungen**
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).

# UpdateTable
<a name="update-table"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | UpdateTable | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  POST/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1Tabelle\$1  | 
| IAM-Aktion |  kleben: UpdateTable  | 
| Lake-Formation-Berechtigungen | ALL, ALTER | 
| CloudTrail Ereignis |  kleben: UpdateTable  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L677 | 

**Überlegungen**
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).

# StartUpdateTableTransaction
<a name="start-update-table-transaction"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | StartUpdateTableTransaction | 
| Typ | AWS Glue Erweiterungs-API | 
| REST-Pfad |  POST/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1Tabelle\$1  | 
| IAM-Aktion |  Klebstoff: UpdateTable  | 
| Lake-Formation-Berechtigungen |  ALL, ALTER  | 
| CloudTrail Ereignis |  kleben: UpdateTable  | 
| OpenAPI-Definition | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-Erweiterungen-api.yaml \$1L154 | 

**Überlegungen**
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ Die API ist asynchron und gibt eine Transaktions-ID zurück, die Sie für die Nachverfolgung mithilfe des `CheckTransactionStatus`-API-Aufrufs verwenden können.
+  Ein `RenamTable`-Vorgang kann auch über diese API ausgeführt werden. In diesem Fall muss der Aufrufer auch die Glue: - CreateTable oder LakeFormation CREATE\$1TABLE-Berechtigung haben, damit die Tabelle umbenannt werden kann. 
+  Sie können diese API nur verwenden, wenn `aws.server-side-capabilities.scan-planning=true` in der `ExtendedLoadTable`-API-Antwort enthalten ist. 

# DeleteTable
<a name="delete-table"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | DeleteTable | 
| Typ |  REST-Katalog-API von Iceberg  | 
| REST-Pfad |  DELETE/iceberg/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1Tabelle\$1  | 
| IAM-Aktion |  Klebstoff: DeleteTable  | 
| Lake-Formation-Berechtigungen | ALL, DROP | 
| CloudTrail Ereignis |  kleben: DeleteTable  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L793 | 

**Überlegungen**
+ Der Katalogpfadparameter sollte dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ Der `DeleteTable`-API-Vorgang unterstützt eine Bereinigungsoption. Wenn die Bereinigungsoption auf `true` festgelegt ist, werden die Tabellendaten gelöscht, andernfalls werden keine Daten gelöscht. Bei Tabellen in Amazon S3 löscht der Vorgang keine Tabellendaten. Der Vorgang schlägt bei `purge = TRUE,` fehl, wenn die Tabelle in Amazon S3 gespeichert ist. 

  Bei Tabellen, die im verwalteten Amazon-Redshift-Speicher gespeichert sind, löscht der Vorgang Tabellendaten, ähnlich dem `DROP TABLE`-Verhalten in Amazon Redshift. Der Vorgang schlägt bei `purge = FALSE` fehl, wenn die Tabelle in Amazon Redshift gespeichert ist.
+ `purgeRequest=true` wird nicht unterstützt. 

# StartDeleteTableTransaction
<a name="start-delete-table-transaction"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | StartDeleteTableTransaction | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  LÖSCHEN/extensions/v1/catalogs/\$1catalog\$1/namespaces/\$1ns\$1/tables/\$1Tabelle\$1  | 
| IAM-Aktion |  kleben: DeleteTable  | 
| Lake-Formation-Berechtigungen | ALL, DROP | 
| CloudTrail Ereignis |  kleben: DeleteTable  | 
| OpenAPI-Definition | https://github.com/apache/iceberg/blob/apache-iceberg-1.6.1/open-api/rest- catalog-open-api .yaml \$1L793 | 

**Überlegungen**
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.
+ Sie können im REST-Pfadparameter nur einen einstufigen Namespace angeben. Weitere Informationen finden Sie im Abschnitt [Namespace-Pfadparameter](connect-glu-iceberg-rest.md#ns-path-param).
+ `purgeRequest=false` wird nicht unterstützt. 
+  Die API ist asynchron und gibt eine Transaktions-ID zurück, die über `CheckTransactionStatus` nachverfolgt werden kann. 

# CheckTransactionStatus
<a name="check-transaction-status"></a>


**Allgemeine Informationen**  

|  |  | 
| --- |--- |
| Vorgangsname | CheckTransactionStatus | 
| Typ |  AWS Glue Erweiterungs-API  | 
| REST-Pfad |  POST/extensions/v1/transactions/status  | 
| IAM-Aktion |  Dieselbe Berechtigung wie die Aktion, die die Transaktion initiiert  | 
| Lake-Formation-Berechtigungen | Dieselbe Berechtigung wie die Aktion, die die Transaktion initiiert | 
| OpenAPI-Definition | https://github.com/awslabs/glue-extensions-for-iceberg/blob/main/glue-Erweiterungen-api.yaml \$1L273 | 

**Überlegungen**
+ Der Katalogpfadparameter muss dem im Abschnitt [Präfix- und Katalogpfadparameter](connect-glu-iceberg-rest.md#prefix-catalog-path-parameters) beschriebenen Stil entsprechen.

# Herstellen einer Verbindung mit Datenkatalog über eine eigenständige Spark-Anwendung
<a name="connect-gludc-spark"></a>

Sie können mit einem Apache-Iceberg-Connector über eine eigenständige Anwendung eine Verbindung mit dem Datenkatalog herstellen. 

1. Erstellen Sie eine IAM-Rolle für die Spark-Anwendung.

1. Connect Sie mithilfe des AWS Glue Iceberg-Connectors eine Verbindung zum Iceberg Rest-Endpunkt her.

   ```
   # configure your application. Refer to https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html for best practices on configuring environment variables.
   export AWS_ACCESS_KEY_ID=$(aws configure get appUser.aws_access_key_id)
   export AWS_SECRET_ACCESS_KEY=$(aws configure get appUser.aws_secret_access_key)
   export AWS_SESSION_TOKEN=$(aws configure get appUser.aws_secret_token)
   
   export AWS_REGION=us-east-1
   export REGION=us-east-1
   export AWS_ACCOUNT_ID = {specify your aws account id here}
   
   ~/spark-3.5.3-bin-hadoop3/bin/spark-shell \
       --packages org.apache.iceberg:iceberg-spark-runtime-3.4_2.12:1.6.0 \
       --conf "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" \
       --conf "spark.sql.defaultCatalog=spark_catalog" \
       --conf "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkCatalog" \
       --conf "spark.sql.catalog.spark_catalog.type=rest" \
       --conf "spark.sql.catalog.spark_catalog.uri=https://glue.us-east-1.amazonaws.com/iceberg" \
       --conf "spark.sql.catalog.spark_catalog.warehouse = {AWS_ACCOUNT_ID}" \
       --conf "spark.sql.catalog.spark_catalog.rest.sigv4-enabled=true" \
       --conf "spark.sql.catalog.spark_catalog.rest.signing-name=glue" \
       --conf "spark.sql.catalog.spark_catalog.rest.signing-region=us-east-1" \
       --conf "spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO" \
       --conf "spark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.SimpleAWSCredentialProvider"
   ```

1. Fragen Sie die Daten im Datenkatalog ab.

   ```
   spark.sql("create database myicebergdb").show()
   spark.sql("""CREATE TABLE myicebergdb.mytbl (name string) USING iceberg location 's3://bucket_name/mytbl'""")
   spark.sql("insert into myicebergdb.mytbl values('demo') ").show()
   ```

# Zuordnen von Daten zwischen Amazon Redshift und Apache Iceberg
<a name="data-mapping-rs-iceberg"></a>

Redshift und Iceberg unterstützen verschiedene Datentypen. Die folgende Kompatibilitätsmatrix gibt einen Überblick über die Unterstützung und Einschränkungen bei der Zuordnung von Daten zwischen diesen beiden Datensystemen. Weitere Informationen zu den unterstützten Datentypen finden Sie in den jeweiligen Datensystemen unter [Amazon-Redshift-Datentypen](https://docs.aws.amazon.com/redshift/latest/dg/c_Supported_data_types.html) und [Apache-Iceberg-Tabellenspezifikationen](https://iceberg.apache.org/spec/#primitive-types).


| Redshift-Datentyp | Aliase | Iceberg-Datentyp | 
| --- | --- | --- | 
| SMALLINT | INT2 | int | 
| INTEGER | INT, INT4 | int | 
| BIGINT | INT8 | long | 
| DECIMAL | NUMERIC | Dezimalwert | 
| REAL | FLOAT4 | float | 
| REAL | FLOAT4 | float | 
| DOUBLE PRECISION | FLOAT8, SCHWEBEN | double | 
| CHAR | CHARACTER, NCHAR | Zeichenfolge | 
| VARCHAR | CHARACTER VARYING, NVARCHAR | Zeichenfolge | 
| BPCHAR |  | Zeichenfolge | 
| TEXT |  | Zeichenfolge | 
| DATE |  | date | 
| TIME | TIME WITHOUT TIMEZONE | time | 
| TIME | TIME WITH TIMEZONE | Nicht unterstützt | 
| TIMESTAMP (ZEITSTEMPEL) | TIMESTAMP WITHOUT TIMEZONE | TIMESTAMP (ZEITSTEMPEL) | 
| TIMESTAMPZ | TIMESTAMP WITH TIMEZONE | TIMESTAMPZ | 
| INTERVAL YEAR TO MONTH |  | Nicht unterstützt | 
| INTERVAL DAY TO SECOND |  | Nicht unterstützt | 
| BOOLEAN | BOOL | bool | 
| HLLSKETCH |  | Nicht unterstützt | 
| SUPER |  | Nicht unterstützt | 
| VARBYTE | VARBINARY, BINARY VARYING | Binary | 
| GEOMETRY |  | Nicht unterstützt | 
| GEOGRAPHY |  | Nicht unterstützt | 

# Überlegungen und Einschränkungen bei der Verwendung von AWS Glue Iceberg REST Catalog APIs
<a name="limitation-glue-iceberg-rest-api"></a>

Im Folgenden werden die Überlegungen und Einschränkungen bei der Verwendung des Betriebsverhaltens von Data Definition Language (DDL) für Apache-Iceberg-REST-Kataloge beschrieben.

**Überlegungen**
+  **`RenameTable`-API-Verhalten** – Der `RenameTable`-Vorgang wird in Tabellen in Amazon Redshift unterstützt, nicht jedoch in Amazon S3. 
+  **DDL-Vorgänge für Namespaces und Tabellen in Amazon Redshift** – Erstellungs-, Aktualisierungs- und Löschvorgänge für Namespaces und Tabellen in Amazon Redshift sind asynchrone Vorgänge, da sie davon abhängen, wann die von Amazon Redshift verwaltete Arbeitsgruppe verfügbar ist und ob eine konfliktreiche DDL- und DML-Transaktion ausgeführt wird und die Vorgänge auf eine Sperre warten und dann versuchen müssen, die Änderungen zu übernehmen. 

**Einschränkungen**
+  Ansichten APIs in der Apache Iceberg REST-Spezifikation werden im AWS Glue Iceberg REST Catalog nicht unterstützt. 

# AWS Glue Bewährte Methoden für den Datenkatalog
<a name="best-practice-catalog"></a>

 In diesem Abschnitt werden bewährte Methoden für die effektive Verwaltung und Nutzung von behandelt AWS Glue Data Catalog. Er konzentriert sich auf Praktiken wie effiziente Nutzung von Crawlern, Organisation von Metadaten, Sicherheit, Leistungsoptimierung, Automatisierung, Datenverwaltung und Integration mit anderen AWS Diensten. 
+ **Effektiver Einsatz von Crawlern** — Führen Sie regelmäßig Crawler aus, um den Datenkatalog up-to-date mit Änderungen in Ihren Datenquellen zu aktualisieren. Verwenden Sie inkrementelle Crawls für sich häufig ändernde Datenquellen, um die Leistung zu verbessern. Konfigurieren Sie Crawler so, dass sie automatisch neue Partitionen hinzufügen oder Schemata aktualisieren, wenn Änderungen erkannt werden. 
+ **Organisierung und Benennung von Metadatentabellen**: Richten Sie eine einheitliche Benennungskonvention für Datenbanken und Tabellen im Datenkatalog ein. Gruppieren Sie verwandte Datenquellen zur besseren Organisation in logische Datenbanken oder Ordner. Verwenden Sie aussagekräftige Namen, die den Zweck und den Inhalt der einzelnen Tabellen verdeutlichen. 
+ **Effektives Verwalten von Schemas** — Nutzen Sie die Schema-Inferenzfunktionen von Crawlern. AWS Glue Überprüfen und aktualisieren Sie Änderungen an Schemata, bevor Sie sie anwenden, um zu verhindern, dass nachgelagerte Anwendungen beschädigt werden. Verwenden Sie Features zur Schemaentwicklung, um Änderungen an Schemata ordnungsgemäß zu handhaben. 
+ **Sicherung des Datenkatalogs**: Aktivieren Sie die Datenverschlüsselung im Ruhezustand und bei der Übertragung für den Datenkatalog. Implementieren Sie differenzierte Richtlinien zur Zugriffskontrolle, um den Zugriff auf sensible Daten zu beschränken. Überprüfen Sie regelmäßig die Berechtigungen und Aktivitätsprotokolle für den Datenkatalog. 
+ **Integrieren Sie den Datenkatalog mit anderen AWS Diensten** Verwenden Sie den Datenkatalog als zentrale Metadatenebene für Dienste wie Amazon Athena, Redshift Spectrum und. AWS Lake Formation Nutzen Sie AWS Glue -ETL-Aufträge, um Daten zu transformieren und in verschiedene Datenspeicher zu laden und gleichzeitig die Metadaten im Datenkatalog beizubehalten. 
+  **Überwachen und optimieren Sie die Leistung** Data Catalog Überwachen Sie die Leistung von Crawlern und ETL-Jobs mithilfe von Metriken. Amazon CloudWatch Partitionieren Sie große Datensätze im Datenkatalog, um die Abfrageleistung zu verbessern. Implementieren Sie Leistungsoptimierungen für Metadaten, auf die häufig zugegriffen wird. 
+  **Bleiben Sie mit AWS Glue Dokumentation und bewährten Methoden auf dem Laufenden**. Datenkatalog Suchen Sie regelmäßig in der AWS Glue Dokumentation und in den AWS Glue Ressourcen nach den neuesten Updates, bewährten Methoden und Empfehlungen. Nehmen Sie an AWS Glue Webinaren, Workshops und anderen Veranstaltungen teil, um von Experten zu lernen und über neue Funktionen und Möglichkeiten auf dem Laufenden zu bleiben. 

# Überwachung der Nutzungsmetriken des Datenkatalogs in Amazon CloudWatch
<a name="data-catalog-cloudwatch-metrics"></a>

AWS Glue Data Catalog Nutzungsmetriken sind jetzt mit verfügbar Amazon CloudWatch, was die Überwachung und das Verständnis der Ressourcennutzung in Ihrem Datenkatalog vereinfacht. Sie haben jetzt sofort Einblick in die Nutzung von Katalogen, Datenbanken, Tabellen, Partitionen und Verbindungen durch Ihre Glue-Catalog-API, was es einfacher macht, den Überblick über Ihren Datenkatalog zu behalten.

## Überblick über die Data-Catalog-Metriken
<a name="data-catalog-metrics-overview"></a>

AWS Glue Data Catalog veröffentlicht automatisch Nutzungsmetriken für Amazon CloudWatch. Mit der Integration von CloudWatch Metriken können Sie jede Minute wichtige Leistungsindikatoren verfolgen, darunter:
+ Tabellenanforderungen
+ Erstellte Partitionsindizes
+ Aktualisierte Verbindungen
+ Aktualisierte Statistiken

Diese Metriken helfen Ihnen dabei, Engpässe zu identifizieren, Anomalien zu erkennen und datengestützte Entscheidungen zu treffen, um die allgemeine Zuverlässigkeit des Datenkatalogs zu verbessern. Sie können auch CloudWatch Alarme einrichten, um Benachrichtigungen zu erhalten, wenn Messwerte bestimmte Schwellenwerte überschreiten, sodass Sie Ihre Bereitstellung proaktiv verwalten können. 

## Hinzufügen von Metriken zu Ihrem Dashboard CloudWatch
<a name="glue-data-catalog-metrics-dashboard"></a>

Sie können benutzerdefinierte Dashboards erstellen, um Ihre AWS Glue Data Catalog Ressourcen zu überwachen, und Alarme einrichten, um über ungewöhnliche Aktivitäten informiert zu werden.

Gehen Sie wie folgt vor, um Datenkatalog-Metriken zu Ihrem CloudWatch Dashboard hinzuzufügen:

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im Navigationsbereich **Metriken** aus.

1. Wählen Sie **Alle Metriken** aus.

1. Wählen Sie „**Nutzung“ > „Nach Ressource AWS **“.

1. Filtern Sie nach **Glue**, um die verfügbaren Metriken zu sehen.

1. Wählen Sie die Metriken aus, die dem Dashboard hinzugefügt werden sollen.

1. Fügen Sie Ihrem Diagramm Metriken für Kataloge, Datenbanken, Tabellen, Partitionen und Verbindungen hinzu. CloudWatch   
![\[AWS Glue Data Catalog Metriken im Dashboard CloudWatch\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/glue-cloudwatch-metrics.png)

Sie können benutzerdefinierte Alarme konfigurieren, die automatisch ausgelöst werden, wenn die API-Nutzung Ihre definierten Schwellenwerte überschreitet, um Auffälligkeiten bei der Nutzung Ihres Datenkatalogs zu identifizieren.

Eine ausführliche Anleitung zur Einrichtung von Alarmen finden Sie unter [Einen Metrics CloudWatch Insights-Alarm erstellen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-insights-alarm-create.html).

# AWS Glue-Schemaregistrierung
<a name="schema-registry"></a>

**Anmerkung**  
AWS GlueDie Schemaregistrierung wird in den folgenden Regionen der AWS Glue Konsole nicht unterstützt: Naher Osten (VAE).

Mit der AWS Glue-Schemaregistrierung können Sie Datenstromschemas zentral erkennen, steuern und weiterentwickeln. Ein *Schema* definiert die Struktur und das Format eines Datensatzes. Mit der AWS Glue-Schemaregistrierung können Sie Schemas in Ihren Daten-Streaming-Anwendungen verwalten und erzwingen, indem Sie praktische Integrationen mit Apache Kafka, [Amazon Managed Streaming für Apache Kafka](https://aws.amazon.com/msk/), [Amazon Kinesis Data Streams](https://aws.amazon.com/kinesis/data-streams/), [Amazon Managed Service für Apache Flink ](https://aws.amazon.com/kinesis/data-analytics/) und [AWS Lambda](https://aws.amazon.com/lambda/) nutzen.

Die Schemaregistrierung unterstützt das AVRO-Datenformat (v1.11.4), das JSON-Datenformat mit dem [JSON-Schemaformat](https://json-schema.org/) für das Schema (Spezifikationen Draft-04, Draft-06 und Draft-07) mit JSON-Schemavalidierung unter Verwendung der [Everit-Bibliothek](https://github.com/everit-org/json-schema), Protokollpufferversionen (Protobuf) proto2 und proto3 ohne Unterstützung für `extensions` oder `groups` und Java-Sprachunterstützung. Weitere Datenformate und Sprachen werden folgen. Zu den unterstützten Features gehören Kompatibilität, Schemabeschaffung über Metadaten, automatische Registrierung von Schemas, IAM-Kompatibilität und optionale ZLIB-Komprimierung zur Optimierung von Speicher und Datenübertragung. Die Schemaregistrierung ist Serverless und die Verwendung ist kostenlos.

Die Verwendung eines Schemas als Datenformat-Vertrag zwischen Produzenten und Verbrauchern führt zu einer verbesserten Daten-Governance sowie einer höheren Datenqualität und ermöglicht Datenkonsumenten, resistent gegen kompatible Upstream-Änderungen zu sein.

Die Schemaregistrierung ermöglicht es unterschiedlichen Systemen, gemeinsam ein Schema für Serialisierung und Deserialisierung zu nutzen. Angenommen Sie haben einen Produzenten und Verbraucher von Daten. Der Produzent kennt das Schema, wenn er die Daten veröffentlicht. Die Schema Registry stellt einen Serialisierer und einen Deserializer für bestimmte Systeme wie Amazon MSK oder Apache Kafka bereit. 

 Weitere Informationen finden Sie unter [Funktionsweise der Schemaregistrierung](schema-registry-works.md).

**Topics**
+ [Schemata](#schema-registry-schemas)
+ [Registrierungen](#schema-registry-registries)
+ [Schema-Versioning und -Kompatibilität](#schema-registry-compatibility)
+ [Open-Source-SerDe-Bibliotheken](#schema-registry-serde-libraries)
+ [Kontingente in Schema Registry](#schema-registry-quotas)
+ [Funktionsweise der Schemaregistrierung](schema-registry-works.md)
+ [Erste Schritte mit der Schemaregistrierung](schema-registry-gs.md)

## Schemata
<a name="schema-registry-schemas"></a>

Ein *Schema* definiert die Struktur und das Format eines Datensatzes. Ein Schema ist eine versionierte Spezifikation für zuverlässige Datenveröffentlichung, -nutzung oder -speicherung.

In diesem Beispielschema für Avro werden Format und Struktur durch die Layout- und Feldnamen definiert, und das Format der Feldnamen wird durch die Datentypen definiert (z. B.`string`, `int`).

```
{
    "type": "record",
    "namespace": "ABC_Organization",
    "name": "Employee",
    "fields": [
        {
            "name": "Name",
            "type": "string"
        },
        {
            "name": "Age",
            "type": "int"
        },
        {
            "name": "address",
            "type": {
                "type": "record",
                "name": "addressRecord",
                "fields": [
                    {
                        "name": "street",
                        "type": "string"
                    },
                    {
                        "name": "zipcode",
                        "type": "int" 
                    }
                ]
            }
        }
    ]
}
```

In diesem JSON-Beispielschema draft-07 für JSON wird das Format von der [JSON-Schemaorganisation](https://json-schema.org/) definiert.

```
{
	"$id": "https://example.com/person.schema.json",
	"$schema": "http://json-schema.org/draft-07/schema#",
	"title": "Person",
	"type": "object",
	"properties": {
		"firstName": {
			"type": "string",
			"description": "The person's first name."
		},
		"lastName": {
			"type": "string",
			"description": "The person's last name."
		},
		"age": {
			"description": "Age in years which must be equal to or greater than zero.",
			"type": "integer",
			"minimum": 0
		}
	}
}
```

In diesem Beispiel für Protobuf wird das Format durch [Version 2 der Protocol Buffers Sprache (proto2)](https://developers.google.com/protocol-buffers/docs/reference/proto2-spec) definiert.

```
syntax = "proto2";

package tutorial;

option java_multiple_files = true;
option java_package = "com.example.tutorial.protos";
option java_outer_classname = "AddressBookProtos";

message Person {
  optional string name = 1;
  optional int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    optional string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phones = 4;
}

message AddressBook {
  repeated Person people = 1;
}
```

## Registrierungen
<a name="schema-registry-registries"></a>

Eine *Registry* ist ein logischer Container mit Schemata. Eine Registry ermöglicht Ihnen, Ihre Schemata zu organisieren und die Zugriffskontrolle für Ihre Anwendungen zu verwalten. Eine Registry verfügt über einen Amazon Resource Name (ARN), mit dem Sie verschiedene Zugriffsberechtigungen für Schemavorgänge in der Registry organisieren und festlegen können.

Sie können die Standard-Registry verwenden oder so viele neue Registries erstellen, wie nötig.


**Hierarchie der AWS Glue Schema Registry**  

|  | 
| --- |
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/schema-registry.html)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/schema-registry.html)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/schema-registry.html)  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/schema-registry.html)  | 

## Schema-Versioning und -Kompatibilität
<a name="schema-registry-compatibility"></a>

Jedes Schema kann mehrere Versionen haben. Das Versioning wird durch eine Kompatibilitätsregel geregelt, die auf ein Schema angewendet wird. Anforderungen zur Registrierung neuer Schemaversionen werden von der Schema Registry anhand dieser Regel geprüft, bevor sie durchgeführt werden. 

Eine Schemaversion, die als Checkpoint markiert ist, wird verwendet, um die Kompatibilität der Registrierung neuer Versionen eines Schemas zu ermitteln. Wenn ein Schema zum ersten Mal erstellt wird, ist der Standard-Checkpoint die erste Version. Wenn sich das Schema mit mehr Versionen weiterentwickelt, können Sie den Checkpoint verwenden, CLI/SDK um mithilfe der `UpdateSchema` API den Checkpoint auf eine Version eines Schemas umzustellen, die einer Reihe von Einschränkungen entspricht. Wenn Sie die Schemadefinition oder den Kompatibilitätsmodus in der Konsole bearbeiten, wird der Checkpoint standardmäßig auf die neueste Version geändert. 

Mit Kompatibilitätsmodi können Sie steuern, wie sich Schemata im Lauf der Zeit entwickeln können oder nicht. Diese Modi bilden den Vertrag zwischen Anwendungen, die Daten erzeugen und Anwendungen, die Daten verbrauchen. Wenn eine neue Version eines Schemas an die Registrierung übermittelt wird, wird anhand der auf den Schemanamen angewendeten Kompatibilitätsregel ermittelt, ob die neue Version akzeptiert werden kann. Es gibt 8 Kompatibilitätsmodi: NONE (KEINE), DISABLED (DEAKTIVIERT), BACKWARD (ABWÄRTS), BACKWARD\$1ALL (ABWÄRTS\$1ALLE), FORWARD (AUFWÄRTS), FORWARD\$1ALL (AUFWÄRTS\$1ALLE), FULL (VOLL), FULL\$1ALL (VOLL\$1ALLE).

Im Avro-Datenformat können Felder optional oder erforderlich sein. Ein optionales Feld ist ein Feld, in dem `Type` null enthält. Erforderliche Felder haben keine NULL-Werte als `Type`.

Im Protobuf-Datenformat können Felder in der Proto2-Syntax optional (einschließlich wiederholt) oder erforderlich sein, während in der Proto3-Syntax alle Felder optional (einschließlich wiederholt) sind. Alle Kompatibilitätsregeln werden auf der Grundlage des Verständnisses der Protokollpufferspezifikationen sowie der Leitlinien der [Dokumentation zu Google Protocol Buffers](https://developers.google.com/protocol-buffers/docs/overview#updating) bestimmt.
+ *NONE (KEINE)*: Es gibt keinen Kompatibilitätsmodus. Sie können diese Option in Entwicklungsszenarien verwenden, oder wenn Sie die Kompatibilitätsmodi, die Sie auf Schemata anwenden möchten, nicht kennen. Jede neue Version, die hinzugefügt wird, wird ohne Kompatibilitätsprüfung akzeptiert.
+ *DISABLED (DEAKTIVIERT)*: Diese Kompatibilitätsoption verhindert das Versioning für ein bestimmtes Schema. Es können keine neuen Versionen hinzugefügt werden.
+ *BACKWARD (ABWÄRTS)*: Diese Kompatibilitätsoption wird empfohlen, damit Verbraucher sowohl die aktuelle als auch die vorherige Schemaversion lesen können. Sie können diese Option verwenden, wenn Sie Felder löschen oder optionale Felder hinzufügen und die Kompatibilität mit der vorherigen Schemaversion überprüfen möchten. Ein typischer Anwendungsfall für BACKWARD (ABWÄRTS) ist, wenn Ihre Anwendung für das neueste Schema erstellt wurde.

**AVRO**  
Angenommen Sie haben ein Schema mit Vorname (erforderlich), Nachname (erforderlich), E-Mail (erforderlich) und Telefonnummer (optional) erstellt.

  Wenn Ihre nächste Schemaversion das erforderliche E-Mail-Feld entfernt, würde dies erfolgreich registriert werden. Abwärtskompatibilität erfordert, dass Verbraucher die aktuelle und die vorherige Schemaversion lesen können. Ihre Verbraucher können das neue Schema lesen, da das zusätzliche E-Mail-Feld aus alten Nachrichten ignoriert wird.

  Wenn Sie eine vorgeschlagene neue Schemaversion haben, die ein erforderliches Feld hinzufügt, z. B. Postleitzahl, würde dies bei einer erforderlichen Abwärtskombatibilität nicht erfolgreich registriert. Verbraucher der neuen Version könnten alte Nachrichten vor der Schemaänderung nicht lesen, da ihnen das erforderliche PLZ-Feld fehlt. Wenn das PLZ-Feld jedoch im neuen Schema als optional festgelegt wurde, würde sich die vorgeschlagene Version erfolgreich registrieren, da Verbraucher das alte Schema ohne das optionale PLZ-Feld lesen können.

**JSON**  
Angenommen Sie haben eine Schemaversion mit Vorname (optional), Nachname (optional), E-Mail (optional) und Telefonnummer (optional).

  Wenn Ihre nächste Schemaversion die optionale Telefonnummereigenschaft hinzufügt, würde dies erfolgreich registriert werden, solange die ursprüngliche Schemaversion keine zusätzlichen Eigenschaften zulässt und das `additionalProperties`-Feld auf „False“ festlegt. Abwärtskompatibilität erfordert, dass Verbraucher die aktuelle und die vorherige Schemaversion lesen können. Ihre Verbraucher können Daten lesen, die mit dem ursprünglichen Schema erstellt wurden, in dem die Telefonnummereigenschaft nicht existiert.

  Wenn Sie eine vorgeschlagene neue Schemaversion haben, die die optionale Telefonnummereigenschaft hinzufügt, würde dies mit der Abwärtskompatibilität nicht erfolgreich registriert, wenn die ursprüngliche Schemaversion das `additionalProperties`-Feld auf „True“ setzt und eine zusätzliche Eigenschaft erlaubt. Ihre Verbraucher mit der neuen Version könnten alte Nachrichten vor der Schemaänderung nicht lesen, da sie keine Daten mit der Telefonnummereigenschaft als anderen Typ lesen können, z. B. „Zeichenfolge“ statt „Ganzzahl“.

**PROTOBUF**  
Angenommen, Sie haben ein Schema mit einer Nachricht `Person` mit den Feldern `first name` (erforderlich), `last name` (erforderlich), `email` (erforderlich) und `phone number` (optional) unter proto2-Syntax definiert.

  Ähnlich wie bei AVRO-Szenarien, wenn Ihre nächste Schemaversion das erforderliche `email`-Feld entfernt, würde dies erfolgreich registriert werden. Abwärtskompatibilität erfordert, dass Verbraucher die aktuelle und die vorherige Schemaversion lesen können. Ihre Verbraucher können das neue Schema lesen, da das zusätzliche `email`-Feld aus alten Nachrichten ignoriert wird.

  Wenn Sie eine vorgeschlagene neue Schemaversion haben, die ein erforderliches Feld hinzufügt, z. B. `zip code`, würde dies bei einer erforderlichen Abwärtskombatibilität nicht erfolgreich registriert. Verbraucher der neuen Version könnten alte Nachrichten vor der Schemaänderung nicht lesen, da ihnen das erforderliche `zip code`-Feld fehlt. Wenn das `zip code`-Feld jedoch im neuen Schema als optional festgelegt wurde, würde sich die vorgeschlagene Version erfolgreich registrieren, da Verbraucher das alte Schema ohne das optionale `zip code`-Feld lesen können.

  Im Falle eines gRPC-Anwendungsfalls ist das Hinzufügen eines neuen RPC-Services oder einer RPC-Methode eine abwärtskompatible Änderung. Angenommen, Sie haben ein Schema mit einem RPC-Service `MyService` mit zwei RPC-Methoden `Foo` und `Bar` definiert.

  Wenn Ihre nächste Schemaversion eine neue RPC-Methode namens `Baz` hinzufügt, würde dies erfolgreich registriert werden. Ihre Verbraucher können Daten lesen, die mit dem ursprünglichen Schema erstellt wurden, entsprechend der ABWÄRTSkompatibilität, da die neu hinzugefügte RPC-Methode `Baz` optional ist. 

  Wenn Sie eine neue vorgeschlagene Schemaversion haben, die die bestehende RPC-Methode `Foo` entfernt, würde diese nicht erfolgreich mit der RÜCKWÄRTSkompatibilität registriert. Ihre Verbraucher mit der neuen Version könnten alte Nachrichten vor der Schemaänderung nicht lesen, da sie Daten mit der nicht vorhandenen RPC-Methode `Foo` in einer gRPC-Anwendung nicht verstehen und lesen können.
+ *BACKWARD\$1ALL (ABWÄRTS\$1ALLE)*: Diese Kompatibilitätsoption ermöglicht Verbrauchern, sowohl die aktuelle als auch alle vorherigen Schemaversionen zu lesen. Sie können diese Option verwenden, wenn Sie Felder löschen oder optionale Felder hinzufügen und die Kompatibilität mit allen vorherigen Schemaversionen überprüfen möchten.
+ *FORWARD (AUFWÄRTS)*: Diese Kompatibilitätsoption ermöglicht Verbrauchern, sowohl die aktuelle als auch die nachfolgende Schemaversion zu lesen, aber nicht unbedingt spätere Versionen. Sie können diese Option verwenden, wenn Sie Felder hinzufügen oder optionale Felder löschen und die Kompatibilität mit der vorherigen Schemaversion überprüfen möchten. Ein typischer Anwendungsfall für FORWARD (AUFWÄRTS) ist, wenn Ihre Anwendung für ein vorheriges Schema erstellt wurde und in der Lage sein soll, ein neueres Schema zu verarbeiten.

**AVRO**  
Angenommen Sie haben ein Schema mit Vorname (erforderlich), Nachname (erforderlich) und E-Mail (optional) erstellt.

  Wenn Sie eine neue Schemaversion haben, die ein erforderliches Feld hinzufügt, z. B. Telefonnummer, würde dies erfolgreich registriert werden. Aufwärtskompatibilität erfordert, dass Verbraucher Daten lesen können, die mit dem neuen Schema erstellt wurden, indem sie die vorherige Version verwenden.

  Wenn Sie eine vorgeschlagene Schemaversion haben, die das erforderliche Vornamenfeld löscht, würde dies bei einer Aufwärtskompatibilität nicht erfolgreich registriert. Verbraucher mit der vorherigen Version könnten die vorgeschlagenen Schemata nicht lesen, da ihnen das erforderliche Vornamenfeld fehlt. Wenn das Feld für den Vornamen ursprünglich optional war, würde das vorgeschlagene neue Schema erfolgreich registriert werden, da die Verbraucher Daten basierend auf dem neuen Schema lesen können, die nicht über das optionale Feld Vorname verfügen.

**JSON**  
Angenommen Sie haben eine Schemaversion mit Vorname (optional), Nachname (optional), E-Mail (optional) und Telefonnummer (optional).

  Wenn Sie eine neue Schemaversion haben, die die optionale Telefonnummereigenschaft entfernt, würde dies erfolgreich registriert werden, solange die neue Schemaversion keine zusätzlichen Eigenschaften zulässt und das `additionalProperties`-Feld auf „False“ festlegt. Aufwärtskompatibilität erfordert, dass Verbraucher Daten lesen können, die mit dem neuen Schema erstellt wurden, indem sie die vorherige Version verwenden.

  Wenn Sie eine vorgeschlagene Schemaversion haben, die die optionale Telefonnummereigenschaft entfernt, würde dies mit der Aufwärtskompatibilität nicht erfolgreich registriert, wenn die neue Schemaversion das `additionalProperties`-Feld auf „True“ setzt und eine zusätzliche Eigenschaft erlaubt. Ihre Verbraucher mit der vorherigen Version könnten die vorgeschlagenen Schemata nicht lesen, da diese die Telefonnummereigenschaft als anderen Typ haben könnten, z. B. „Zeichenfolge“ statt „Ganzzahl“.

**PROTOBUF**  
Angenommen, Sie haben ein Schema mit einer Nachricht `Person` mit den Feldern `first name` (erforderlich), `last name` (erforderlich) und `email` (optional) unter proto2-Syntax definiert.

  Ähnlich wie in den AVRO-Szenarien, wenn Sie eine neue Schemaversion haben, die ein erforderliches Feld hinzufügt, z. B. `phone number`, würde dies erfolgreich registriert werden. Aufwärtskompatibilität erfordert, dass Verbraucher Daten lesen können, die mit dem neuen Schema erstellt wurden, indem sie die vorherige Version verwenden.

  Wenn Sie eine vorgeschlagene Schemaversion haben, die das erforderliche Feld `first name` löscht, würde dies bei einer VORWÄRTSkompatibilität nicht erfolgreich registriert. Verbraucher mit der vorherigen Version könnten die vorgeschlagenen Schemata nicht lesen, da ihnen das erforderliche Feld `first name` fehlt. Wenn das Feld `first name` ursprünglich optional war, würde das vorgeschlagene neue Schema erfolgreich registriert werden, da die Verbraucher Daten basierend auf dem neuen Schema lesen können, die nicht über das optionale Feld `first name` verfügen.

  Im Falle eines gRPC-Anwendungsfalls ist das Entfernen eines RPC-Services oder einer RPC-Methode eine vorwärtskompatible Änderung. Angenommen, Sie haben ein Schema mit einem RPC-Service `MyService` mit zwei RPC-Methoden `Foo` und `Bar` definiert. 

  Wenn Ihre nächste Schemaversion die bestehende RPC-Methode mit dem Namen `Foo` löscht, würde dies gemäß der VORWÄRTSkompatibilität erfolgreich registriert, da die Verbraucher Daten, die mit dem neuen Schema erzeugt wurden, unter Verwendung der vorherigen Version lesen können. Wenn Sie eine vorgeschlagene neue Schemaversion haben, die eine RPC-Methode `Baz` hinzufügt, würde diese mit der VORWÄRTSkompatibilität nicht erfolgreich registriert. Verbraucher mit der vorherigen Version könnten die vorgeschlagenen Schemata nicht lesen, da ihnen die erforderliche RPC-Methode `Baz` fehlt.
+ *FORWARD\$1ALL (AUFWÄRTS\$1ALLE)*: Diese Kompatibilitätsoption ermöglicht Verbrauchern, Daten zu lesen, die von Verfassern eines neuen registrierten Schemas geschrieben wurden. Sie können diese Option verwenden, wenn Sie Felder hinzufügen oder optionale Felder löschen und die Kompatibilität mit allen vorherigen Schemaversionen überprüfen möchten.
+ *FULL (VOLL)*: Diese Kompatibilitätsoption ermöglicht Verbrauchern, Daten zu lesen, die von Verfassern geschrieben wurden, die die vorherige oder die nächste Version des Schemas verwenden, jedoch nicht frühere oder spätere Versionen. Sie können diese Option verwenden, wenn Sie optionale Felder hinzufügen oder löschen und die Kompatibilität mit der vorherigen Schemaversion überprüfen möchten.
+ *FULL\$1ALL (VOLL\$1ALLE)*: Diese Kompatibilitätsoption ermöglicht Verbrauchern, Daten zu lesen, die von Verfassern geschrieben wurden, die alle früheren Schemaversionen verwenden. Sie können diese Option verwenden, wenn Sie optionale Felder hinzufügen oder löschen und die Kompatibilität mit allen vorherigen Schemaversionen überprüfen möchten.

## Open-Source-SerDe-Bibliotheken
<a name="schema-registry-serde-libraries"></a>

AWS stellt Open-Source-Serde-Bibliotheken als Framework für die Serialisierung und Deserialisierung von Daten bereit. Das Open-Source-Design dieser Bibliotheken ermöglicht gängige Open-Source-Anwendungen und Frameworks, diese Bibliotheken in ihren Projekten zu unterstützen.

Weitere Details zur Funktionsweise der SerDe-Bibliotheken finden Sie unter [Funktionsweise der Schemaregistrierung](schema-registry-works.md).

## Kontingente in Schema Registry
<a name="schema-registry-quotas"></a>

Kontingente, auch Limits genannt AWS, sind die Höchstwerte für die Ressourcen, Aktionen und Elemente in Ihrem Konto. AWS Im Folgenden finden Sie weiche Grenzwerte für Schema Registry in AWS Glue.

**Metadaten-Schlüssel-Wert-Paare pro Schemaversion.**  
 SchemaVersion Pro Region können Sie bis zu 10 Schlüssel-Wert-Paare verwenden. AWS 

Sie können die Schlüssel-Wert-Metadatenpaare mit dem oder anzeigen oder festlegen. [QuerySchemaVersionMetadata Aktion (Python: query\$1schema\$1version\$1metadata)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-QuerySchemaVersionMetadata) [PutSchemaVersionMetadata Aktion (Python: put\$1schema\$1version\$1metadata)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-PutSchemaVersionMetadata) APIs

Im Folgenden finden Sie weiche Grenzwerte für Schema Registry in AWS Glue.

**Registrierungen**  
Sie können bis zu 100 Registrierungen pro AWS Region für dieses Konto einrichten.

**SchemaVersion**  
Sie können bis zu 10000 Schemaversionen pro AWS Region für dieses Konto haben.

Jedes neue Schema erstellt eine neue Schemaversion, sodass Sie theoretisch bis zu 10000 Schemas pro Konto und Region haben können, wenn jedes Schema nur eine Version hat.

**Schema-Nutzlasten**  
Es gibt eine Größenbeschränkung von 170 KB für Schema-Nutzlasten.

# Funktionsweise der Schemaregistrierung
<a name="schema-registry-works"></a>

In diesem Abschnitt wird beschrieben, wie die Serialisierungs- und Deserialisierungsprozesse der Schemaregistrierung funktionieren.

1. Registrieren eines Schemas: Wenn das Schema noch nicht in der Registrierung vorhanden ist, kann das Schema mit einem Schemanamen registriert werden, der dem Namen des Ziels entspricht (z. B. test\$1topic, test\$1stream, prod\$1firehose) oder der Produzent kann einen benutzerdefinierten Namen für das Schema angeben. Produzenten können dem Schema auch Schlüssel-Wert-Paare als Metadaten hinzufügen, z. B. source: MSK\$1Kafka\$1Topic\$1A, oder bei der Schemaerstellung Tags auf Schemas anwenden. AWS Sobald ein Schema registriert ist, gibt Schema Registry die Schemaversions-ID an den Serializer zurück. Wenn das Schema vorhanden ist, aber der Serializer eine neue Version verwendet, die nicht existiert, überprüft Schema Registry die Schemareferenz, eine Kompatibilitätsregel, um sicherzustellen, dass die neue Version kompatibel ist, bevor sie als neue Version registriert wird.

   Es gibt zwei Methoden zum Registrieren eines Schemas: manuelle Registrierung und automatische Registrierung. Sie können ein Schema manuell über dieAWS Glue-Konsole oder CLI/SDK registrieren.

   Wenn die automatische Registrierung in den Einstellungen des Serializers aktiviert ist, wird die automatische Registrierung des Schemas durchgeführt. Wenn `REGISTRY_NAME` nicht in den Konfigurationen des Produzenten bereitgestellt wird, registriert die automatische Registrierung die neue Schemaversion in der Standardregistrierung (Default-Registry). Siehe [SerDe Bibliotheken installieren](schema-registry-gs-serde.md) für Informationen zur Angabe der Eigenschaft für die automatische Registrierung.

1. Der Serializer validiert Datensätze anhand des Schemas: Wenn die Anwendung, die Daten erzeugt, ihr Schema registriert hat, überprüft der Serializer der Schema Registry, ob der Datensatz, der von der Anwendung erstellt wird, mit den Feldern und Datentypen strukturiert ist, die einem registrierten Schema entsprechen. Wenn das Schema des Datensatzes nicht mit einem registrierten Schema übereinstimmt, gibt der Serializer eine Ausnahme zurück und die Anwendung kann den Datensatz nicht an das Ziel liefern. 

   Wenn kein Schema vorhanden ist und der Schemaname nicht über die Konfigurationen des Produzenten bereitgestellt wird, wird das Schema mit demselben Namen wie der Themenname (bei Apache Kafka oder Amazon MSK) oder der Streamname (bei Kinesis Data Streams) erstellt.

   Jeder Datensatz hat eine Schemadefinition und Daten. Die Schemadefinition wird anhand der vorhandenen Schemata und Versionen in der Schema Registry abgefragt.

   Standardmäßig speichern Produzenten Schemadefinitionen und Schemaversionen registrierter Schemas im Cache. IDs Wenn die Schemaversionsdefinition eines Datensatzes nicht mit dem übereinstimmt, was im Cache verfügbar ist, versucht der Produzent, das Schema mit der Schema Registry zu validieren. Wenn die Schemaversion gültig ist, werden ihre Versions-ID und Definition lokal beim Produzenten zwischengespeichert.

   Sie können den Standard-Cache-Zeitraum (24 Stunden) in den optionalen Producer-Eigenschaften in Schritt 3 von [SerDe Bibliotheken installieren](schema-registry-gs-serde.md) anpassen.

1. Serialisieren und Ausliefern von Datensätzen: Wenn der Datensatz dem Schema entspricht, kennzeichnet der Serializer jeden Datensatz mit der Schema-Versions-ID, serialisiert den Datensatz basierend auf dem ausgewählten Datenformat (AVRO, JSON, Protobuf oder in Kürze weitere Formate), komprimiert den Datensatz (optionale Konfiguration des Produzenten) und liefert ihn an das Ziel.

1. Verbraucher deserialisieren die Daten: Verbraucher, die diese Daten lesen, verwenden die Deserializer-Bibliothek der Schema Registry, die die Schemaversions-ID aus der Datensatznutzlast analysiert.

1. Der Deserializer kann das Schema von der Schema Registry anfordern: Wenn dies das erste Mal ist, dass der Deserializer Datensätze mit einer bestimmten Schemaversions-ID sieht, fordert der Deserializer das Schema unter Verwendung der Schemaversions-ID von der Schema-Registry an und speichert das Schema lokal auf dem Verbraucher zwischen. Wenn die Schema Registry den Datensatz nicht deserialisieren kann, kann der Verbraucher die Daten aus dem Datensatz protokollieren und fortfahren oder die Anwendung anhalten.

1. Der Deserializer verwendet das Schema, um den Datensatz zu deserialisieren: Wenn der Deserializer die Schemaversions-ID aus der Schema Registry abruft, dekomprimiert der Deserializer den Datensatz (wenn der vom Produzent gesendete Datensatz komprimiert wird) und verwendet das Schema, um den Datensatz zu deserialisieren. Dann verarbeitet die Anwendung den Datensatz.

**Anmerkung**  
Verschlüsselung: Ihre Clients kommunizieren mit der Schema Registry über API-Aufrufe, die Daten während der Übertragung mittels TLS-Verschlüsselung über HTTPS verschlüsseln. In der Schemaregistry gespeicherte Schemas werden im Ruhezustand immer mit einem vom Dienst verwalteten Schlüssel AWS Key Management Service ()AWS KMS verschlüsselt.

**Anmerkung**  
Benutzerautorisierung: Die Schema Registry unterstützt identitätsbasierte IAM-Richtlinien.

# Erste Schritte mit der Schemaregistrierung
<a name="schema-registry-gs"></a>

Die folgenden Abschnitte vermitteln einen Überblick und führen Sie durch das Einrichten und Verwenden der Schema Registry. Informationen zu den Konzepten und Komponenten der Schemaregistrierung finden Sie unter [AWS Glue-Schemaregistrierung](schema-registry.md).

**Topics**
+ [SerDe Bibliotheken installieren](schema-registry-gs-serde.md)
+ [Integration mit AWS Glue Schema Registry](schema-registry-integrations.md)
+ [Migration von einer Drittanbieter-Schemaregistrierung zu AWS Glue Schema Registry](schema-registry-integrations-migration.md)

# SerDe Bibliotheken installieren
<a name="schema-registry-gs-serde"></a>

Die SerDe Bibliotheken bieten ein Framework für die Serialisierung und Deserialisierung von Daten. 

Sie installieren den Open-Source-Serializer für Ihre Anwendungen, die Daten erzeugen (zusammen die „Serializer“). Der Serializer übernimmt Serialisierung, Komprimierung und Interaktion mit der Schema Registry. Der Serializer extrahiert das Schema automatisch aus einem Datensatz, der in ein mit der Schema Registry kompatibles Ziel wie Amazon MSK geschrieben wird. Ebenso installieren Sie den Open-Source-Deserializer auf Ihren Anwendungen, die Daten verbrauchen.

# Java-Implementierung
<a name="schema-registry-gs-serde-java"></a>

**Anmerkung**  
Bevor Sie die folgenden Schritte ausführen, müssen Sie einen aktiven Amazon-MSK- ( Amazon Managed Streaming für Apache Kafka ) oder Apache-Kafka-Cluster haben. Ihre Produzenten und Verbraucher müssen Java 8 oder höher nutzen.

So installieren Sie die Bibliotheken auf Produzenten und Verbrauchern:

1. Fügen Sie diese Abhängigkeit in den pom.xml-Dateien von Produzenten und Verbrauchern über den folgenden Code hinzu:

   ```
   <dependency>
       <groupId>software.amazon.glue</groupId>
       <artifactId>schema-registry-serde</artifactId>
       <version>1.1.5</version>
   </dependency>
   ```

   Alternativ können Sie das [AWS Glue-Schema-Registry-Github-Repository](https://github.com/awslabs/aws-glue-schema-registry) klonen.

1. Richten Sie Ihre Produzenten mit den folgenden Eigenschaften ein:

   ```
   props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); // Can replace StringSerializer.class.getName()) with any other key serializer that you may use
   props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, GlueSchemaRegistryKafkaSerializer.class.getName());
   props.put(AWSSchemaRegistryConstants.AWS_REGION, "us-east-2");
   properties.put(AWSSchemaRegistryConstants.DATA_FORMAT, "JSON"); // OR "AVRO"
   ```

   Wenn keine Schemas vorhanden sind, muss die automatische Registrierung aktiviert werden (nächster Schritt). Wenn Sie ein Schema haben, das Sie anwenden möchten, ersetzen Sie „my-schema“ durch Ihren Schemanamen. Auch der „registry-name“ muss angegeben werden, wenn die automatische Registrierung des Schemas deaktiviert ist. Wenn das Schema unter der „default-registry“ erstellt wird, kann der Registrierungsname weggelassen werden.

1. (Optional) Legen Sie eine dieser optionalen Produzenteneigenschaften fest. Detaillierte Beschreibungen der Eigenschaften finden Sie in [der ReadMe Datei](https://github.com/awslabs/aws-glue-schema-registry/blob/master/README.md).

   ```
   props.put(AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING, "true"); // If not passed, uses "false"
   props.put(AWSSchemaRegistryConstants.SCHEMA_NAME, "my-schema"); // If not passed, uses transport name (topic name in case of Kafka, or stream name in case of Kinesis Data Streams)
   props.put(AWSSchemaRegistryConstants.REGISTRY_NAME, "my-registry"); // If not passed, uses "default-registry"
   props.put(AWSSchemaRegistryConstants.CACHE_TIME_TO_LIVE_MILLIS, "86400000"); // If not passed, uses 86400000 (24 Hours)
   props.put(AWSSchemaRegistryConstants.CACHE_SIZE, "10"); // default value is 200
   props.put(AWSSchemaRegistryConstants.COMPATIBILITY_SETTING, Compatibility.FULL); // Pass a compatibility mode. If not passed, uses Compatibility.BACKWARD
   props.put(AWSSchemaRegistryConstants.DESCRIPTION, "This registry is used for several purposes."); // If not passed, constructs a description
   props.put(AWSSchemaRegistryConstants.COMPRESSION_TYPE, AWSSchemaRegistryConstants.COMPRESSION.ZLIB); // If not passed, records are sent uncompressed
   ```

   Die automatische Registrierung registriert die Schemaversion unter der Standardregistrierung („default-registry“). Wenn im vorherigen Schritt kein `SCHEMA_NAME` angegeben wird, wird der Themenname als `SCHEMA_NAME` verwendet. 

   Weitere Informationen zu Kompatibilitätsmodi finden Sie unter [Schema-Versioning und -Kompatibilität](schema-registry.md#schema-registry-compatibility).

1. Richten Sie Ihre Verbraucher mit den folgenden Eigenschaften ein:

   ```
   props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
   props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, GlueSchemaRegistryKafkaDeserializer.class.getName());
   props.put(AWSSchemaRegistryConstants.AWS_REGION, "us-east-2"); // Pass an AWS-Region
   props.put(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, AvroRecordType.GENERIC_RECORD.getName()); // Only required for AVRO data format
   ```

1. (Optional) Legen Sie diese optionalen Verbrauchereigenschaften fest. Detaillierte Eigenschaftsbeschreibungen finden Sie [in der ReadMe Datei](https://github.com/awslabs/aws-glue-schema-registry/blob/master/README.md).

   ```
   properties.put(AWSSchemaRegistryConstants.CACHE_TIME_TO_LIVE_MILLIS, "86400000"); // If not passed, uses 86400000
   props.put(AWSSchemaRegistryConstants.CACHE_SIZE, "10"); // default value is 200
   props.put(AWSSchemaRegistryConstants.SECONDARY_DESERIALIZER, "com.amazonaws.services.schemaregistry.deserializers.external.ThirdPartyDeserializer"); // For migration fall back scenario
   ```

# C\$1-Implementierung
<a name="schema-registry-gs-serde-csharp"></a>

**Anmerkung**  
Bevor Sie die folgenden Schritte ausführen, müssen Sie einen aktiven Amazon-MSK- ( Amazon Managed Streaming für Apache Kafka ) oder Apache-Kafka-Cluster haben. Ihre Produzenten und Verbraucher müssen auf .NET 8.0 oder höher laufen.

## Installation
<a name="schema-registry-gs-serde-csharp-install"></a>

Installieren Sie für C\$1-Anwendungen das AWS Glue Schema SerDe NuGet Registry-Paket mit einer der folgenden Methoden:

**.NET-CLI:**  
Verwenden Sie den folgenden Befehl, um das Paket zu installieren:

```
dotnet add package Aws.Glue.SchemaRegistry --version 1.0.0-<rid>
```

wo `<rid>` könnte sein`1.0.0-linux-x64`, `1.0.0-linux-musl-x64` oder `1.0.0-linux-arm64`

**PackageReference (in deiner.csproj-Datei):**  
Fügen Sie Ihrer Projektdatei Folgendes hinzu:

```
<PackageReference Include="Aws.Glue.SchemaRegistry" Version="1.0.0-<rid>" />
```

wo `<rid>` könnte sein`1.0.0-linux-x64`, `1.0.0-linux-musl-x64` oder `1.0.0-linux-arm64`

## Konfiguration der Konfigurationsdatei
<a name="schema-registry-gs-serde-csharp-config"></a>

Erstellen Sie eine Datei mit Konfigurationseigenschaften (z. B.`gsr-config.properties`) mit den erforderlichen Einstellungen:

**Minimale Konfiguration:**  
Im Folgenden wird ein Beispiel für eine minimale Konfiguration gezeigt:

```
region=us-east-1
registry.name=default-registry
dataFormat=AVRO
schemaAutoRegistrationEnabled=true
```

## Verwenden der C\$1 Glue Schema-Clientbibliothek für Kafka SerDes
<a name="schema-registry-gs-serde-csharp-kafka"></a>

**Beispiel für die Verwendung des Serializers:**  
Das folgende Beispiel zeigt, wie der Serializer verwendet wird:

```
private static readonly string PROTOBUF_CONFIG_PATH = "<PATH_TO_CONFIG_FILE>";
var protobufSerializer = new GlueSchemaRegistryKafkaSerializer(PROTOBUF_CONFIG_PATH);
var serialized = protobufSerializer.Serialize(message, message.Descriptor.FullName);
// send serialized bytes to Kafka using producer.Produce(serialized)
```

**Beispiel für die Verwendung des Deserializers:**  
Das folgende Beispiel zeigt, wie der Deserializer verwendet wird:

```
private static readonly string PROTOBUF_CONFIG_PATH = "<PATH_TO_CONFIG_FILE>";
var dataConfig = new GlueSchemaRegistryDataFormatConfiguration(
    new Dictionary<string, dynamic>
    {
        {
            GlueSchemaRegistryConstants.ProtobufMessageDescriptor, message.Descriptor
        }
    }
);
var protobufDeserializer = new GlueSchemaRegistryKafkaDeserializer(PROTOBUF_CONFIG_PATH, dataConfig);

// read message from Kafka using serialized = consumer.Consume()
var deserializedObject = protobufDeserializer.Deserialize(message.Descriptor.FullName, serialized);
```

## Verwenden der C\$1 Glue-Schema-Clientbibliothek mit for KafkaFlow SerDes
<a name="schema-registry-gs-serde-csharp-kafkaflow"></a>

**Beispiel für die Verwendung des Serializers:**  
Das folgende Beispiel zeigt, wie Sie KafkaFlow mit dem Serializer konfigurieren:

```
services.AddKafka(kafka => kafka
    .UseConsoleLog()
    .AddCluster(cluster => cluster
        .WithBrokers(new[] { "localhost:9092" })
        .AddProducer<CustomerProducer>(producer => producer
            .DefaultTopic("customer-events")
            .AddMiddlewares(m => m
                .AddSerializer<GlueSchemaRegistryKafkaFlowProtobufSerializer<Customer>>(
                    () => new GlueSchemaRegistryKafkaFlowProtobufSerializer<Customer>("config/gsr-config.properties")
                )
            )
        )
    )
);
```

**Beispiel für die Verwendung des Deserializers:**  
Das folgende Beispiel zeigt, wie die Konfiguration KafkaFlow mit dem Deserializer durchgeführt wird:

```
.AddConsumer(consumer => consumer
    .Topic("customer-events")
    .WithGroupId("customer-group")
    .WithBufferSize(100)
    .WithWorkersCount(10)
    .AddMiddlewares(middlewares => middlewares
        .AddDeserializer<GlueSchemaRegistryKafkaFlowProtobufDeserializer<Customer>>(
            () => new GlueSchemaRegistryKafkaFlowProtobufDeserializer<Customer>("config/gsr-config.properties")
        )
        .AddTypedHandlers(h => h.AddHandler<CustomerHandler>())
    )
)
```

## Optionale Producer-Eigenschaften
<a name="schema-registry-gs-serde-csharp-optional"></a>

Sie können Ihre Konfigurationsdatei um zusätzliche optionale Eigenschaften erweitern:

```
# Auto-registration (if not passed, uses "false")
schemaAutoRegistrationEnabled=true

# Schema name (if not passed, uses topic name)
schema.name=my-schema

# Registry name (if not passed, uses "default-registry")
registry.name=my-registry

# Cache settings
cacheTimeToLiveMillis=86400000
cacheSize=200

# Compatibility mode (if not passed, uses BACKWARD)
compatibility=FULL

# Registry description
description=This registry is used for several purposes.

# Compression (if not passed, records are sent uncompressed)
compressionType=ZLIB
```

## Unterstützte Datenformate
<a name="schema-registry-gs-serde-supported-formats"></a>

Sowohl Java- als auch C\$1-Implementierungen unterstützen dieselben Datenformate:
+ *AVRO*: Apache Avro-Binärformat
+ *JSON: JSON-Schemaformat*
+ *PROTOBUF: Format* für Protokollpuffer

## Hinweise
<a name="schema-registry-gs-serde-csharp-notes"></a>
+ [Um mit der Bibliothek zu beginnen, besuchen Sie bitte https://www.nuget. org/packages/AWS.Kleber. SchemaRegistry](https://www.nuget.org/packages/AWS.Glue.SchemaRegistry)
+ Der Quellcode ist verfügbar unter: [https://github.com/awslabs/aws-glue-schema-registry](https://github.com/awslabs/aws-glue-schema-registry)

# Erstellen einer Registrierung
<a name="schema-registry-gs3"></a>

Sie können die Standardregistrierung verwenden oder mit der AWS Glue OR-Konsole so viele neue Registrierungen wie nötig erstellen. AWS Glue APIs 

**AWS Glue APIs**  
Sie können diese Schritte verwenden, um diese Aufgabe mithilfe von auszuführen. AWS Glue APIs

Um die Registry AWS CLI für das AWS Glue Schema verwenden zu können APIs, stellen Sie sicher, dass Sie Ihre Version AWS CLI auf die neueste Version aktualisieren.

 Um eine neue Registrierung hinzuzufügen, verwenden Sie die [CreateRegistry Aktion (Python: create\$1registry)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-CreateRegistry)-API. Geben Sie `RegistryName` als Name der zu erstellenden Registrierung an (maximale Länge 255 Zeichen, nur Buchstaben, Zahlen, Bindestriche, Unterstriche, Dollarzeichen oder Hashzeichen). 

Geben Sie `Description` als Zeichenfolge mit maximal 2048 Bytes an, entsprechend dem [mehrzeiligen Zeichenfolgenmuster für URI-Adressen](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-common.html#aws-glue-api-common-_string-patterns). 

Geben Sie optional einen oder mehrere `Tags` als Map-Array für Schlüssel-Wert-Paare Ihrer Registrierung an.

```
aws glue create-registry --registry-name registryName1 --description description
```

Wenn Ihre Registrierung erstellt wurde, wird ihr ein Amazon-Ressourcenname (ARN) zugewiesen, den Sie im Abschnitt `RegistryArn` der API-Antwort anzeigen können. Nachdem Sie nun eine Registrierung erstellt haben, erstellen Sie ein oder mehrere Schemata für diese Registrierung.

**AWS Glue-Konsole**  
In der AWS Glue-Konsole eine neue Registrierung hinzufügen

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Klicken Sie im Navigationsbereich unter **Data Catalog** auf **Schema Registries (Schemaregistrierungen)**.

1. Wählen Sie **Add registry (Registrierung hinzufügen)**.

1. Geben Sie einen **Registry name (Registrierungsname)** aus Buchstaben, Ziffern, Bindestrichen oder Unterstrichen ein. Dieser Name kann nicht geändert werden.

1. Geben Sie eine **Description (Beschreibung)** (optional) für die Registrierung ein.

1. Wenden Sie optional einen oder mehrere Tags auf Ihre Registrierung an. Klicken Sie auf **Add new Tag (Neuen Tag hinzufügen)** und geben Sie einen **Tag-Schlüssel** und optional einen **Tag-Wert** ein.

1. Wählen Sie **Add registry (Registrierung hinzufügen)**.

![\[Beispiel für das Erstellen einer Registrierung.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/schema_reg_create_registry.png)


Wenn Ihre Registrierung erstellt wird, wird ihr ein Amazon-Ressourcenname (ARN) zugewiesen, den Sie anzeigen können, indem Sie die Registrierung aus der Liste in **Schema Registries (Schemaregistrierungen)** auswählen. Nachdem Sie nun eine Registrierung erstellt haben, erstellen Sie ein oder mehrere Schemata für diese Registrierung.

# Umgang mit einem bestimmten Datensatz (JAVA POJO) für JSON
<a name="schema-registry-gs-json-java-pojo"></a>

Sie können ein Plain-Old-Java-Objekt (POJO) verwenden und das Objekt als Datensatz übergeben. Dies ist ähnlich dem Konzept eines bestimmten Datensatzes in AVRO. Das [mbknor-jackson-jsonschema](https://github.com/mbknor/mbknor-jackson-jsonSchema)kann ein JSON-Schema für das übergebene POJO generieren. Diese Bibliothek kann auch zusätzliche Informationen in das JSON-Schema einfügen.

Die AWS Glue-Schema-Registry-Bibliothek verwendet das injizierte Feld „className“ im Schema, um einen vollständig klassifizierten Klassennamen bereitzustellen. Das Feld „className“ wird vom Deserializer verwendet, um in ein Objekt dieser Klasse zu deserialisieren.

```
 Example class :

@JsonSchemaDescription("This is a car")
@JsonSchemaTitle("Simple Car Schema")
@Builder
@AllArgsConstructor
@EqualsAndHashCode
// Fully qualified class name to be added to an additionally injected property
// called className for deserializer to determine which class to deserialize
// the bytes into
@JsonSchemaInject(
        strings = {@JsonSchemaString(path = "className",
                value = "com.amazonaws.services.schemaregistry.integrationtests.generators.Car")}
)
// List of annotations to help infer JSON Schema are defined by https://github.com/mbknor/mbknor-jackson-jsonSchema
public class Car {
    @JsonProperty(required = true)
    private String make;

    @JsonProperty(required = true)
    private String model;

    @JsonSchemaDefault("true")
    @JsonProperty
    public boolean used;

    @JsonSchemaInject(ints = {@JsonSchemaInt(path = "multipleOf", value = 1000)})
    @Max(200000)
    @JsonProperty
    private int miles;

    @Min(2000)
    @JsonProperty
    private int year;

    @JsonProperty
    private Date purchaseDate;

    @JsonProperty
    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    private Date listedDate;

    @JsonProperty
    private String[] owners;

    @JsonProperty
    private Collection<Float> serviceChecks;

    // Empty constructor is required by Jackson to deserialize bytes
    // into an Object of this class
    public Car() {}
}
```

# Erstellen eines Schemas
<a name="schema-registry-gs4"></a>

Sie können ein Schema mit der AWS Glue APIs oder der AWS Glue Konsole erstellen. 

**AWS Glue APIs**  
Sie können diese Schritte verwenden, um diese Aufgabe mithilfe von auszuführen AWS Glue APIs.

Um ein neues Schema hinzuzufügen, verwenden Sie die [CreateSchema Aktion (Python: create\$1schema)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-CreateSchema)-API.

Geben Sie eine `RegistryId`-Struktur an, um eine Registrierung für das Schema anzugeben. Oder lassen Sie die `RegistryId` weg, um die Standardregistrierung zu verwenden.

Geben Sie einen `SchemaName` bestehend aus Buchstaben, Ziffern, Bindestrichen oder Unterstrichen an, und geben Sie als `DataFormat` **AVRO** oder **JSON** an. Ist das `DataFormat` einmal für ein Schema festgelegt, ist nicht änderbar.

Geben Sie einen `Compatibility`-Modus an:
+ *Backward (Abwärts) (empfohlen)* – Der Verbraucher kann sowohl die aktuelle als auch die vorherige Version lesen.
+ *Backward all (Abwärts alle)* – Der Verbraucher kann die aktuelle und alle früheren Versionen lesen.
+ *Forward (Aufwärts)* – Der Verbraucher kann sowohl die aktuelle als auch die nachfolgende Version lesen.
+ *Forward all (Aufwärts alle)* – Der Verbraucher kann sowohl die aktuelle als auch alle nachfolgenden Versionen lesen.
+ *Full (Voll)* – Kombination aus „Backward“ (Abwärts) und „Forward“ (Aufwärts).
+ *Full all (Voll alle)* – Kombination aus „Backward all“ (Abwärts alle) und „Forward all“ (Aufwärts alle).
+ *None (Keine)* – Es werden keine Kompatibilitätsprüfungen durchgeführt.
+ *Disabled (Deaktiviert)* – Verhindert das Versioning für dieses Schema.

Geben Sie optional `Tags` für Ihr Schema an. 

Geben Sie eine `SchemaDefinition` an, um das Schema im Avro-, JSON-oder Protobuf-Datenformat zu definieren. Informationen finden Sie in den Beispielen.

Für Avro-Datenformat:

```
aws glue create-schema --registry-id RegistryName="registryName1" --schema-name testschema --compatibility NONE --data-format AVRO --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}"
```

```
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName1" --schema-name testschema --compatibility NONE --data-format AVRO  --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}"
```

Für JSON-Datenformat:

```
aws glue create-schema --registry-id RegistryName="registryName" --schema-name testSchemaJson --compatibility NONE --data-format JSON --schema-definition "{\"$schema\": \"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"f1\":{\"type\":\"string\"}}}"
```

```
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName" --schema-name testSchemaJson --compatibility NONE --data-format JSON --schema-definition "{\"$schema\": \"http://json-schema.org/draft-07/schema#\",\"type\":\"object\",\"properties\":{\"f1\":{\"type\":\"string\"}}}"
```

Für das Protobuf-Datenformat:

```
aws glue create-schema --registry-id RegistryName="registryName" --schema-name testSchemaProtobuf --compatibility NONE --data-format PROTOBUF --schema-definition "syntax = \"proto2\";package org.test;message Basic { optional int32 basic = 1;}"
```

```
aws glue create-schema --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName" --schema-name testSchemaProtobuf --compatibility NONE --data-format PROTOBUF --schema-definition "syntax = \"proto2\";package org.test;message Basic { optional int32 basic = 1;}"
```

**AWS Glue-Konsole**  
Ein neues Schema mithilfe der AWS Glue-Konsole hinzufügen:

1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Klicken Sie im Navigationsbereich unter **Data Catalog** auf **Schemas (Schemata)**.

1. Klicken Sie auf **Add Schema (Schema hinzufügen)**.

1. Geben Sie einen **Schemanamen** an, bestehend aus Buchstaben, Zahlen, Bindestrichen, Unterstrichen, Dollarzeichen oder Hashmarks. Dieser Name kann nicht geändert werden.

1. Wählen Sie im Dropdown-Menü die **Registry**, in der das Schema gespeichert wird. Die übergeordnete Registrierung kann nach der Erstellung nicht geändert werden.

1. Lassen Sie das **Data format (Datenformat)** als *Apache Avro* oder *JSON*. Dieses Format gilt für alle Versionen dieses Schemas.

1. Wählen Sie einen **Compatibility mode (Kompatibilitätsmodus)**.
   + *Backward (Abwärts) (empfohlen)* – Receiver kann sowohl aktuelle als auch frühere Versionen lesen.
   + *Backward All (Abwärts alle)* – Receiver kann aktuelle und alle früheren Versionen lesen.
   + *Vorwärts* – Absender kann sowohl aktuelle als auch frühere Versionen schreiben.
   + *Vorwärts alle* – Absender kann sowohl aktuelle als auch alle früheren Versionen schreiben.
   + *Full (Voll)* – Kombination aus „Backward“ (Abwärts) und „Forward“ (Aufwärts).
   + *Full all (Voll alle)* – Kombination aus „Backward all“ (Abwärts alle) und „Forward all“ (Aufwärts alle).
   + *Keine* – Es werden keine Kompatibilitätsprüfungen durchgeführt.
   + *Disabled (Deaktiviert)* – Verhindert das Versioning für dieses Schema.

1. Geben Sie eine optionale **Beschreibung** für die Registrierung ein (max. 250 Zeichen).  
![\[Beispiel für das Erstellen eines Schemas.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/schema_reg_create_schema.png)

1. Wenden Sie optional ein oder mehrere Tags auf Ihr Schema an. Klicken Sie auf **Add new Tag (Neuen Tag hinzufügen)** und geben Sie einen **Tag-Schlüssel** und optional einen **Tag-Wert** ein.

1. Geben Sie in das Feld **Erste Schemaversion** das ursprüngliche Schema ein oder fügen Sie es ein.

   Informationen zum Avro-Format finden Sie unter [Arbeiten mit dem Avro-Datenformat](#schema-registry-avro).

   Informationen zum JSON-Format finden Sie unter [Arbeiten mit dem JSON-Datenformat](#schema-registry-json).

1. Wählen Sie alternativ die Option **Add metadata (Metadaten hinzufügen)**, um Versionsmetadaten hinzuzufügen und Ihre Schemaversion mit Anmerkungen zu versehen oder zu klassifizieren.

1. Klicken Sie auf **Create schema and version (Schema und Version erstellen)**.

![\[Beispiel für das Erstellen eines Schemas.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/schema_reg_create_schema2.png)


Das Schema wird erstellt und in der Liste unter **Schemas (Schemata)** angezeigt.

## Arbeiten mit dem Avro-Datenformat
<a name="schema-registry-avro"></a>

Avro bietet Datenserialisierung und Datenaustausch. Avro speichert die Datendefinition im JSON-Format, wodurch es leicht zu lesen und zu interpretieren ist. Die Daten selbst werden im Binärformat gespeichert.

Informationen zum Definieren eines Apache-Avro-Schemas finden Sie unter [Apache Avro-Spezifikationen](http://avro.apache.org/docs/current/spec.html).

## Arbeiten mit dem JSON-Datenformat
<a name="schema-registry-json"></a>

Daten können im JSON-Format serialisiert werden. Das [JSON-Schemaformat](https://json-schema.org/) definiert den Standard für das Format des JSON-Schemas.

# Aktualisieren eines Schemas oder einer Registrierung
<a name="schema-registry-gs5"></a>

Nach der Erstellung können Sie Schemata, Schemaversionen und die Registrierung bearbeiten.

## Aktualisieren einer Registrierung
<a name="schema-registry-gs5a"></a>

Sie können eine Registrierung mithilfe der AWS Glue APIs oder der AWS Glue Konsole aktualisieren. Der Name einer vorhandenen Registrierung kann nicht bearbeitet werden. Sie können die Beschreibung für eine Registrierung bearbeiten.

**AWS Glue APIs**  
Um eine vorhandene Registrierung zu aktualisieren, verwenden Sie die [UpdateRegistry Aktion (Python: update\$1registry)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-UpdateRegistry)-API.

Wählen Sie eine `RegistryId`-Struktur, um die Registrierung anzugeben, die Sie aktualisieren möchten. Übergeben Sie eine `Description`, um die Beschreibung für eine Registrierung zu ändern.

```
aws glue update-registry --description updatedDescription --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName1"
```

**AWS Glue-Konsole**  
Eine Registrierung mithilfe der AWS Glue-Konsole aktualisieren:

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Klicken Sie im Navigationsbereich unter **Data Catalog** auf **Schema Registries (Schemaregistrierungen)**.

1. Wählen Sie eine Registrierung aus der Liste der Registrierungen, indem Sie das entsprechende Kontrollkästchen aktivieren.

1. Klicken Sie im Menü **Action (Aktion)** auf **Edit registry (Registrierung bearbeiten)**.

# Aktualisieren eines Schemas
<a name="schema-registry-gs5b"></a>

Sie können die Beschreibung und die Kompatibilitätseinstellung für ein Schema aktualisieren.

Um ein vorhandenes Schema zu aktualisieren, verwenden Sie die [UpdateSchema Aktion (Python: update\$1schema)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-UpdateSchema)-API.

Wählen Sie eine `SchemaId`-Struktur, um das Schema anzugeben, die Sie aktualisieren möchten. Eine `VersionNumber` oder `Compatibility` muss angegeben werden.

Codebeispiel 11:

```
aws glue update-schema --description testDescription --schema-id SchemaName="testSchema1",RegistryName="registryName1" --schema-version-number LatestVersion=true --compatibility NONE
```

```
aws glue update-schema --description testDescription --schema-id SchemaArn="arn:aws:glue:us-east-2:901234567890:schema/registryName1/testSchema1" --schema-version-number LatestVersion=true --compatibility NONE
```

# Eine Schemaversion hinzufügen
<a name="schema-registry-gs5c"></a>

Wenn Sie eine Schemaversion hinzufügen, müssen Sie die Versionen vergleichen, um sicherzustellen, dass das neue Schema akzeptiert wird.

Um eine neue Version zu einem vorhandenen Schema hinzuzufügen, verwenden Sie die [RegisterSchemaVersion Aktion (Python: register\$1schema\$1version)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-RegisterSchemaVersion)-API.

Wählen Sie eine `SchemaId`-Struktur, um das Schema anzugeben, für das Sie eine Version hinzufügen möchten, und eine `SchemaDefinition`, um das Schema zu definieren.

Codebeispiel 12:

```
aws glue register-schema-version --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}" --schema-id SchemaArn="arn:aws:glue:us-east-1:901234567890:schema/registryName/testschema"
```

```
aws glue register-schema-version --schema-definition "{\"type\": \"record\", \"name\": \"r1\", \"fields\": [ {\"name\": \"f1\", \"type\": \"int\"}, {\"name\": \"f2\", \"type\": \"string\"} ]}" --schema-id SchemaName="testschema",RegistryName="testregistry"
```

1. Melden Sie sich bei an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Klicken Sie im Navigationsbereich unter **Data Catalog** auf **Schemas (Schemata)**.

1. Wählen Sie das Schema aus der Liste der Schemata aus, indem Sie das entsprechende Kontrollkästchen aktivieren.

1. Wählen Sie ein oder mehrere Schemata in der Liste aus, indem Sie die Kontrollkästchen aktivieren.

1. Wählen Sie im Menü **Action (Aktion)** die Option **Register a new version (Neue Version registrieren)**.

1. Geben Sie das neue Schema in das Feld **New version (Neue Version)** ein oder fügen Sie es ein.

1. Klicken Sie auf **Compare with previous version (Vergleich mit vorheriger Version)**, um Unterschiede zur vorherigen Schemaversion anzuzeigen.

1. Wählen Sie alternativ die Option **Add metadata (Metadaten hinzufügen)**, um Versionsmetadaten hinzuzufügen und Ihre Schemaversion mit Anmerkungen zu versehen oder zu klassifizieren. Geben Sie den **Schlüssel** und optional einen **Wert** ein.

1. Klicken Sie auf **Register version (Version registrieren)**.

![\[Eine Schemaversion hinzufügen.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/schema_reg_add_schema_version.png)


Die Version des Schemas (der Schemata) wird in der Liste der Versionen angezeigt. Wenn die Version den Kompatibilitätsmodus geändert hat, wird die Version als Checkpoint markiert.

## Beispiel für einen Vergleich von Schemaversionen
<a name="schema-registry-gs5c1"></a>

Wenn Sie entscheiden, die Option **Compare with previous version (Vergleich mit vorheriger Version)** zu verwenden, werden die vorherigen und die neuen Versionen zusammen angezeigt. Geänderte Informationen werden wie folgt hervorgehoben:
+ *Gelb*: Kennzeichnet geänderte Informationen.
+ *Grün*: Kennzeichnet Inhalte, die in der neuesten Version hinzugefügt wurden.
+ *Rot*: Kennzeichnet Inhalte, die in der neuesten Version entfernt wurden.

Sie können auch einen Vergleich mit früheren Versionen durchführen.

![\[Beispiel für einen Vergleich von Schemaversionen.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/schema_reg_version_comparison.png)


# Ein Schema oder eine Registrierung löschen
<a name="schema-registry-gs7"></a>

Das Löschen eines Schemas, einer Schemaversion oder einer Registrierung ist eine permanente Aktion, die nicht rückgängig gemacht werden kann.

## Ein Schema löschen
<a name="schema-registry-gs7a"></a>

Möglicherweise möchten Sie ein Schema löschen, wenn es nicht mehr in einer Registrierung verwendet werden soll, indem Sie die AWS-Managementkonsole oder die [DeleteSchema Aktion (Python: delete\$1schema)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-DeleteSchema) API verwenden.

Das Löschen eines oder mehrerer Schemata ist ein dauerhafter Vorgang, der nicht rückgängig gemacht werden kann. Stellen Sie sicher, dass das Schema oder die Schemata nicht mehr benötigt werden.

Um ein Schema aus der Registrierung zu löschen, rufen Sie die [DeleteSchema Aktion (Python: delete\$1schema)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-DeleteSchema)-API auf und geben die `SchemaId`-Struktur an, um das Schema zu identifizieren.

Zum Beispiel:

```
aws glue delete-schema --schema-id SchemaArn="arn:aws:glue:us-east-2:901234567890:schema/registryName1/schemaname"
```

```
aws glue delete-schema --schema-id SchemaName="TestSchema6-deleteschemabyname",RegistryName="default-registry"
```

**AWS Glue-Konsole**  
Ein Schema aus der AWS Glue-Konsole löschen:

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Klicken Sie im Navigationsbereich unter **Data Catalog** auf **Schema Registries (Schemaregistrierungen)**.

1. Wählen Sie die Registrierung, die Ihr Schema enthält, aus der Liste der Registrierungen aus.

1. Wählen Sie ein oder mehrere Schemata in der Liste aus, indem Sie die Kontrollkästchen aktivieren.

1. Wählen Sie im Menü **Actions (Aktionen)** die Option **Delete (Löschen)**.

1. Geben Sie **Delete** in das Feld ein, um den Löschvorgang zu bestätigen.

1. Wählen Sie **Löschen** aus.

Die von Ihnen angegebenen Schemata werden aus der Registrierung gelöscht.

## Eine Schemaversion löschen
<a name="schema-registry-gs7b"></a>

Da sich Schemas in der Registrierung ansammeln, möchten Sie möglicherweise unerwünschte Schemaversionen mithilfe der AWS-Managementkonsole oder der [DeleteSchemaVersions Aktion (Python: delete\$1schema\$1versions)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-DeleteSchemaVersions) API löschen. Das Löschen einer oder mehrerer Schemaversionen ist ein dauerhafter Vorgang, der nicht rückgängig gemacht werden kann. Stellen Sie sicher, dass die Schemaversionen nicht mehr benötigt werden.

Beachten Sie beim Löschen von Schemaversionen die folgenden Einschränkungen:
+ Sie können keine Version mit Checkpoint löschen.
+ Die Anzahl zusammenhängender Versionen darf nicht mehr als 25 betragen.
+ Die neueste Schemaversion darf sich nicht im Status „Ausstehend“ befinden.

Geben Sie die `SchemaId`-Struktur an, um das Schema zu identifizieren, und geben Sie `Versions` als Bereich von Versionen an, die gelöscht werden sollen. Weitere Informationen zum Angeben einer Version oder eines Versionsbereichs finden Sie unter [DeleteRegistry Aktion (Python: delete\$1registry)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-DeleteRegistry). Die von Ihnen angegebenen Schemaversionen werden aus der Registrierung gelöscht.

Das Aufrufen der [ListSchemaVersions Aktion (Python: list\$1schema\$1versions)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-ListSchemaVersions)-API nach diesem Aufruf listet den Status der gelöschten Versionen auf.

Beispiel:

```
aws glue delete-schema-versions --schema-id SchemaName="TestSchema6",RegistryName="default-registry" --versions "1-1"
```

```
aws glue delete-schema-versions --schema-id SchemaArn="arn:aws:glue:us-east-2:901234567890:schema/default-registry/TestSchema6-NON-Existent" --versions "1-1"
```

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Klicken Sie im Navigationsbereich unter **Data Catalog** auf **Schema Registries (Schemaregistrierungen)**.

1. Wählen Sie die Registrierung, die Ihr Schema enthält, aus der Liste der Registrierungen aus.

1. Wählen Sie ein oder mehrere Schemata in der Liste aus, indem Sie die Kontrollkästchen aktivieren.

1. Wählen Sie im Menü **Actions (Aktionen)** die Option **Delete (Löschen)**.

1. Geben Sie **Delete** in das Feld ein, um den Löschvorgang zu bestätigen.

1. Wählen Sie **Löschen** aus.

Die von Ihnen angegebenen Schemaversionen werden aus der Registrierung gelöscht.

# Eine Registrierung löschen
<a name="schema-registry-gs7c"></a>

Unter Umständen möchten Sie eine Registrierung löschen, wenn die darin enthaltenen Schemata nicht mehr unter dieser Registrierung organisiert werden sollen. Sie müssen diese Schemata einer anderen Registrierung zuweisen.

Das Löschen einer oder mehrerer Registrierungen ist ein dauerhafter Vorgang, der nicht rückgängig gemacht werden kann. Stellen Sie sicher, dass die Registrierung(en) nicht mehr benötigt wird/werden.

Die Standardregistrierung kann mit der AWS CLI gelöscht werden.

**AWS Glue-API**  
Um die gesamte Registrierung einschließlich Schema und aller Schemaversionen zu löschen, rufen Sie die [DeleteRegistry Aktion (Python: delete\$1registry)](aws-glue-api-schema-registry-api.md#aws-glue-api-schema-registry-api-DeleteRegistry)-API auf. Geben Sie eine `RegistryId`-Struktur an, um die Registrierung zu identifizieren.

Zum Beispiel:

```
aws glue delete-registry --registry-id RegistryArn="arn:aws:glue:us-east-2:901234567890:registry/registryName1"
```

```
aws glue delete-registry --registry-id RegistryName="TestRegistry-deletebyname"
```

Um den Status des Löschvorgangs zu erhalten, können Sie die `GetRegistry`-API nach dem asynchronen Aufruf aufrufen.

**AWS Glue-Konsole**  
Eine Registrierung aus der AWS Glue-Konsole löschen:

1. Melden Sie sich bei an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Klicken Sie im Navigationsbereich unter **Data Catalog** auf **Schema Registries (Schemaregistrierungen)**.

1. Wählen Sie eine Registrierung aus der Liste, indem Sie das entsprechende Kontrollkästchen aktivieren.

1. Klicken Sie im Menü **Action (Aktion)** auf **Delete registry (Registrierung löschen)**.

1. Geben Sie **Delete** in das Feld ein, um den Löschvorgang zu bestätigen.

1. Wählen Sie **Löschen** aus.

Die ausgewählten Registrierungen werden aus AWS Glue gelöscht.

## IAM-Beispiele für Serialisierer
<a name="schema-registry-gs1"></a>

**Anmerkung**  
AWS verwaltete Richtlinien gewähren die erforderlichen Berechtigungen für allgemeine Anwendungsfälle. Informationen zur Verwendung verwalteter Richtlinien zum Verwalten der Schemaregistrierung finden Sie unter [AWS verwaltete (vordefinierte) Richtlinien für AWS Glue](security-iam-awsmanpol.md#access-policy-examples-aws-managed). 

Für Serialisierer sollten Sie eine minimale Richtlinie wie unten erstellen, um eine Möglichkeit zu haben, die `schemaVersionId` für eine bestimmte Schemadefinition zu finden. Achten Sie darauf, dass Sie Leserechte für die Registrierung haben, um die Schemata in der Registrierung zu lesen. Sie können die Registrierungen, die gelesen werden können, mit der `Resource`-Klausel einschränken.

Codebeispiel 13:

```
{
    "Sid" : "GetSchemaByDefinition",
    "Effect" : "Allow",
    "Action" :
	[
        "glue:GetSchemaByDefinition"
    ],
        "Resource" : ["arn:aws:glue:us-east-2:012345678:registry/registryname-1",
                      "arn:aws:glue:us-east-2:012345678:schema/registryname-1/schemaname-1",
                      "arn:aws:glue:us-east-2:012345678:schema/registryname-1/schemaname-2"
                     ]
}
```

Sie können Produzenten auch erlauben, neue Schemata und Versionen zu erstellen, indem Sie die folgenden zusätzlichen Methoden einbeziehen. Beachten Sie, dass Sie in der Lage sein sollten, die Registrierung anhand add/remove/evolve der darin enthaltenen Schemas zu überprüfen. Sie können die Registrierungen, die inspiziert werden können, mit der `Resource`-Klausel einschränken.

Codebeispiel 14:

```
{
    "Sid" : "RegisterSchemaWithMetadata",
    "Effect" : "Allow",
    "Action" :
	[
        "glue:GetSchemaByDefinition",
        "glue:CreateSchema",
        "glue:RegisterSchemaVersion",
        "glue:PutSchemaVersionMetadata",
    ],
    "Resource" : ["arn:aws:glue:aws-region:123456789012:registry/registryname-1",
                  "arn:aws:glue:aws-region:123456789012:schema/registryname-1/schemaname-1",
                  "arn:aws:glue:aws-region:123456789012:schema/registryname-1/schemaname-2"
                 ]
}
```

## IAM-Beispiele für Deserialisierer
<a name="schema-registry-gs1b"></a>

Für Deserialisierer (Verbraucherseite) sollten Sie eine ähnliche Richtlinie wie unten erstellen, damit der Deserializer das Schema aus der Schemaregistrierung zur Deserialisierung abrufen kann. Beachten Sie, dass Sie in der Lage sein sollten, die Registrierung zu überprüfen, um Schemata darin abzurufen.

Codebeispiel 15:

```
{
    "Sid" : "GetSchemaVersion",
    "Effect" : "Allow",
    "Action" :
	[
        "glue:GetSchemaVersion"
    ],
    "Resource" : ["*"]
}
```

## Private Konnektivität mit AWS PrivateLink
<a name="schema-registry-gs-private"></a>

Sie können AWS PrivateLink es verwenden, um die VPC Ihres Datenproduzenten zu verbinden, AWS Glue indem Sie einen VPC-Schnittstellen-Endpunkt für definieren. AWS Glue Wenn Sie einen VPC-Schnittstellenendpunkt verwenden, findet die Kommunikation zwischen Ihrer VPC und AWS Glue vollständig innerhalb des AWS -Netzwerks statt. Weitere Informationen finden Sie unter [Verwenden von AWS Glue mit VPC-Endpunkten](https://docs.aws.amazon.com/glue/latest/dg/vpc-endpoint.html).

# Zugreifen auf CloudWatch Amazon-Metriken
<a name="schema-registry-gs-monitoring"></a>

 CloudWatch Amazon-Metriken sind im Rahmen CloudWatch des kostenlosen Kontingents verfügbar. Sie können in der CloudWatch Konsole auf diese Messwerte zugreifen. Zu den Metriken auf API-Ebene gehören CreateSchema (Erfolg und Latenz) GetSchemaByDefinition, (Erfolg und Latenz), GetSchemaVersion (Erfolg und Latenz), RegisterSchemaVersion (Erfolg und Latenz), PutSchemaVersionMetadata (Erfolg und Latenz). Zu den Metriken auf Ressourcenebene gehört die Registrierung. ThrottledByLimit,. SchemaVersion ThrottledByLimit, SchemaVersion. Größe.

# CloudFormation Beispielvorlage für die Schemaregistrierung
<a name="schema-registry-integrations-cfn"></a>

Im Folgenden finden Sie eine Beispielvorlage für die Erstellung von Schemaregistrierungsressourcen in CloudFormation. Um diesen Stack in Ihrem Konto zu erstellen, kopieren Sie die obige Vorlage in eine Datei `SampleTemplate.yaml` und führen Sie dann den folgenden Befehl aus:

```
aws cloudformation create-stack --stack-name ABCSchemaRegistryStack --template-body "'cat SampleTemplate.yaml'"
```

In diesem Beispiel verwenden wir die `AWS::Glue::Registry`, um eine Registrierung zu erstellen, `AWS::Glue::Schema` um ein Schema zu erstellen, `AWS::Glue::SchemaVersion` um eine Schemaversion zu erstellen und `AWS::Glue::SchemaVersionMetadata` um die Schemaversion mit Metadaten zu füllen. 

```
Description: "A sample CloudFormation template for creating Schema Registry resources."
Resources:
  ABCRegistry:
    Type: "AWS::Glue::Registry"
    Properties:
      Name: "ABCSchemaRegistry"
      Description: "ABC Corp. Schema Registry"
      Tags:
        Project: "Foo"
  ABCSchema:
    Type: "AWS::Glue::Schema"
    Properties:
      Registry:
        Arn: !Ref ABCRegistry
      Name: "TestSchema"
      Compatibility: "NONE"
      DataFormat: "AVRO"
      SchemaDefinition: >
        {"namespace":"foo.avro","type":"record","name":"user","fields":[{"name":"name","type":"string"},{"name":"favorite_number","type":"int"}]}
      Tags:
        Project: "Foo"
  SecondSchemaVersion:
    Type: "AWS::Glue::SchemaVersion"
    Properties:
      Schema:
        SchemaArn: !Ref ABCSchema
      SchemaDefinition: >
        {"namespace":"foo.avro","type":"record","name":"user","fields":[{"name":"status","type":"string", "default":"ON"}, {"name":"name","type":"string"},{"name":"favorite_number","type":"int"}]}
  FirstSchemaVersionMetadata:
    Type: "AWS::Glue::SchemaVersionMetadata"
    Properties:
      SchemaVersionId: !GetAtt ABCSchema.InitialSchemaVersionId
      Key: "Application"
      Value: "Kinesis"
  SecondSchemaVersionMetadata:
    Type: "AWS::Glue::SchemaVersionMetadata"
    Properties:
      SchemaVersionId: !Ref SecondSchemaVersion
      Key: "Application"
      Value: "Kinesis"
```

# Integration mit AWS Glue Schema Registry
<a name="schema-registry-integrations"></a>

In diesen Abschnitten werden Integrationen mit der AWS Glue-Schemaregistrierung beschrieben. Die Beispiele in diesem Abschnitt zeigen ein Schema mit AVRO-Datenformat. Weitere Beispiele, einschließlich Schemas mit JSON-Datenformat, finden Sie in den Integrationstests und ReadMe Informationen im Open-Source-Repository [AWS GlueSchema Registry](https://github.com/awslabs/aws-glue-schema-registry).

**Topics**
+ [Anwendungsfall: Verbinden der Schema Registry mit Amazon MSK oder Apache Kafka](#schema-registry-integrations-amazon-msk)
+ [Anwendungsfall: Integrieren von Amazon Kinesis Data Streams mit AWS Glue Schema Registry](#schema-registry-integrations-kds)
+ [Amazon Managed Service für Apache Flink](#schema-registry-integrations-kinesis-data-analytics-apache-flink)
+ [Anwendungsfall: Integration mit AWS Lambda](#schema-registry-integrations-aws-lambda)
+ [Anwendungsfall: AWS Glue Data Catalog](#schema-registry-integrations-aws-glue-data-catalog)
+ [Anwendungsfall: AWS Glue Streaming](#schema-registry-integrations-aws-glue-streaming)
+ [Anwendungsfall: Apache Kafka Streams](#schema-registry-integrations-apache-kafka-streams)

## Anwendungsfall: Verbinden der Schema Registry mit Amazon MSK oder Apache Kafka
<a name="schema-registry-integrations-amazon-msk"></a>

Nehmen wir an, Sie schreiben Daten in ein Apache-Kafka-Thema, und Sie können diese Schritte ausführen, um loszulegen.

1. Erstellen Sie einen Amazon Managed Streaming für Apache Kafka (Amazon MSK) oder Apache Kafka-Cluster mit mindestens einem Thema. Wenn Sie einen Amazon-MSK-Cluster erstellen, können Sie die AWS-Managementkonsole verwenden. Folgen Sie den Anweisungen unter [Erste Schritte mit Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html) im *Entwicklerhandbuch für Amazon Managed Streaming for Apache Kafka*.

1. Folgen Sie dem Schritt [SerDe Bibliotheken installieren](schema-registry-gs-serde.md) oben.

1. Um Schemaregistrierungen, Schemata oder Schemaversionen zu erstellen, befolgen Sie die Anweisungen im Abschnitt [Erste Schritte mit der Schemaregistrierung](schema-registry-gs.md) dieses Dokuments.

1. Starten Sie Ihre Produzenten und Verbraucher, die Schema Registry zum Schreiben und Lesen von Datensätzen to/from zum Thema Amazon MSK oder Apache Kafka zu verwenden. Beispielcode für Produzenten und Verbraucher finden Sie in [der ReadMe Datei aus den](https://github.com/awslabs/aws-glue-schema-registry/blob/master/README.md) Serde-Bibliotheken. Die Schema-Registry-Bibliothek des Produzenten serialisiert den Datensatz automatisch und versieht den Datensatz mit einer Schemaversions-ID.

1. Wenn das Schema dieses Datensatzes eingegeben wurde oder die automatische Registrierung aktiviert ist, ist das Schema in der Schema Registry registriert.

1. Der Verbraucher, der mit der AWS Glue-Schema-Registry-Bibliothek aus dem Amazon-MSK- oder Apache-Kafka-Thema liest, sucht das Schema automatisch aus der Schema Registry.

## Anwendungsfall: Integrieren von Amazon Kinesis Data Streams mit AWS Glue Schema Registry
<a name="schema-registry-integrations-kds"></a>

Diese Integration erfordert, dass Sie einen vorhandenen Amazon Kinesis Data Stream haben. Weitere Informationen finden Sie unter [Erste Schritte mit Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/getting-started.html) im *Entwicklerhandbuch für Amazon Kinesis Data Streams*.

Es gibt zwei Möglichkeiten, mit Daten in einem Kinesis-Datenstrom zu interagieren.
+ Über die Bibliotheken Kinesis Producer Library (KPL) und Kinesis Client Library (KCL) in Java. Mehrsprachige Unterstützung wird nicht bereitgestellt.
+ Durch die`PutRecords`,`PutRecord`, und `GetRecords` Kinesis Data Streams, die in der APIs AWS SDK für Java verfügbar sind.

Wenn Sie die KPL/KCL Bibliotheken derzeit verwenden, empfehlen wir, diese Methode weiterhin zu verwenden. Es gibt aktualisierte KCL- und KPL-Versionen mit integrierter Schema Registry, wie in den Beispielen gezeigt. Andernfalls können Sie den Beispielcode verwenden, um die AWS Glue Schema Registry zu nutzen, wenn Sie das KDS APIs direkt verwenden.

Die Integration der Schema Registry ist mit KPL v0.14.2 oder höher und mit KCL v2.3 oder höher verfügbar. Die Integration der Schema Registry mit dem JSON-Datenformat ist mit KPL v0.14.8 oder höher und mit KCL v2.3.6 oder höher verfügbar.

### Interaktion mit Daten mit Kinesis SDK V2
<a name="schema-registry-integrations-kds-sdk-v2"></a>

In diesem Abschnitt wird die Interaktion mit Kinesis mithilfe des Kinesis SDK V2 beschrieben

```
// Example JSON Record, you can construct a AVRO record also
private static final JsonDataWithSchema record = JsonDataWithSchema.builder(schemaString, payloadString);
private static final DataFormat dataFormat = DataFormat.JSON;

//Configurations for Schema Registry
GlueSchemaRegistryConfiguration gsrConfig = new GlueSchemaRegistryConfiguration("us-east-1");

GlueSchemaRegistrySerializer glueSchemaRegistrySerializer =
        new GlueSchemaRegistrySerializerImpl(awsCredentialsProvider, gsrConfig);
GlueSchemaRegistryDataFormatSerializer dataFormatSerializer =
        new GlueSchemaRegistrySerializerFactory().getInstance(dataFormat, gsrConfig);

Schema gsrSchema =
        new Schema(dataFormatSerializer.getSchemaDefinition(record), dataFormat.name(), "MySchema");

byte[] serializedBytes = dataFormatSerializer.serialize(record);

byte[] gsrEncodedBytes = glueSchemaRegistrySerializer.encode(streamName, gsrSchema, serializedBytes);

PutRecordRequest putRecordRequest = PutRecordRequest.builder()
        .streamName(streamName)
        .partitionKey("partitionKey")
        .data(SdkBytes.fromByteArray(gsrEncodedBytes))
        .build();
shardId = kinesisClient.putRecord(putRecordRequest)
        .get()
        .shardId();

GlueSchemaRegistryDeserializer glueSchemaRegistryDeserializer = new GlueSchemaRegistryDeserializerImpl(awsCredentialsProvider, gsrConfig);

GlueSchemaRegistryDataFormatDeserializer gsrDataFormatDeserializer =
        glueSchemaRegistryDeserializerFactory.getInstance(dataFormat, gsrConfig);

GetShardIteratorRequest getShardIteratorRequest = GetShardIteratorRequest.builder()
        .streamName(streamName)
        .shardId(shardId)
        .shardIteratorType(ShardIteratorType.TRIM_HORIZON)
        .build();

String shardIterator = kinesisClient.getShardIterator(getShardIteratorRequest)
        .get()
        .shardIterator();

GetRecordsRequest getRecordRequest = GetRecordsRequest.builder()
        .shardIterator(shardIterator)
        .build();
GetRecordsResponse recordsResponse = kinesisClient.getRecords(getRecordRequest)
        .get();

List<Object> consumerRecords = new ArrayList<>();
List<Record> recordsFromKinesis = recordsResponse.records();

for (int i = 0; i < recordsFromKinesis.size(); i++) {
    byte[] consumedBytes = recordsFromKinesis.get(i)
            .data()
            .asByteArray();

    Schema gsrSchema = glueSchemaRegistryDeserializer.getSchema(consumedBytes);
    Object decodedRecord = gsrDataFormatDeserializer.deserialize(ByteBuffer.wrap(consumedBytes),
                                                                    gsrSchema.getSchemaDefinition());
    consumerRecords.add(decodedRecord);
}
```

### Interaktion mit Daten mithilfe der Bibliotheken KPL/KCL
<a name="schema-registry-integrations-kds-libraries"></a>

In diesem Abschnitt wird die Integration von Kinesis Data Streams mit Schema Registry mithilfe der KPL/KCL Bibliotheken beschrieben. Weitere Informationen zur Verwendung von KPL/KCL finden Sie unter [Entwickeln von Amazon Kinesis Datenstreams-Produzenten mit der Kinesis Producer Library](https://docs.aws.amazon.com/streams/latest/dev/developing-producers-with-kpl.html) im *Entwicklerhandbuch für Amazon Kinesis Data Streams*.

#### Einrichten der Schema Registry in KPL
<a name="schema-registry-integrations-kds-libraries-kpl"></a>

1. Definieren Sie die Schemadefinition für die Daten, das Datenformat und den Schemanamen, die in der AWS Glue Schema Registry erstellt wurden

1. Konfigurieren Sie optional das `GlueSchemaRegistryConfiguration`-Objekt.

1. Übergeben Sie das Schemaobjekt an die `addUserRecord API`.

   ```
   private static final String SCHEMA_DEFINITION = "{"namespace": "example.avro",\n"
   + " "type": "record",\n"
   + " "name": "User",\n"
   + " "fields": [\n"
   + " {"name": "name", "type": "string"},\n"
   + " {"name": "favorite_number", "type": ["int", "null"]},\n"
   + " {"name": "favorite_color", "type": ["string", "null"]}\n"
   + " ]\n"
   + "}";
   
   KinesisProducerConfiguration config = new KinesisProducerConfiguration();
   config.setRegion("us-west-1")
   
   //[Optional] configuration for Schema Registry.
   
   GlueSchemaRegistryConfiguration schemaRegistryConfig =
   new GlueSchemaRegistryConfiguration("us-west-1");
   
   schemaRegistryConfig.setCompression(true);
   
   config.setGlueSchemaRegistryConfiguration(schemaRegistryConfig);
   
   ///Optional configuration ends.
   
   final KinesisProducer producer =
         new KinesisProducer(config);
   
   final ByteBuffer data = getDataToSend();
   
   com.amazonaws.services.schemaregistry.common.Schema gsrSchema =
       new Schema(SCHEMA_DEFINITION, DataFormat.AVRO.toString(), "demoSchema");
   
   ListenableFuture<UserRecordResult> f = producer.addUserRecord(
   config.getStreamName(), TIMESTAMP, Utils.randomExplicitHashKey(), data, gsrSchema);
   
   private static ByteBuffer getDataToSend() {
         org.apache.avro.Schema avroSchema =
           new org.apache.avro.Schema.Parser().parse(SCHEMA_DEFINITION);
   
         GenericRecord user = new GenericData.Record(avroSchema);
         user.put("name", "Emily");
         user.put("favorite_number", 32);
         user.put("favorite_color", "green");
   
         ByteArrayOutputStream outBytes = new ByteArrayOutputStream();
         Encoder encoder = EncoderFactory.get().directBinaryEncoder(outBytes, null);
         new GenericDatumWriter<>(avroSchema).write(user, encoder);
         encoder.flush();
         return ByteBuffer.wrap(outBytes.toByteArray());
    }
   ```

#### Einrichten der Kinesis Client-Bibliothek
<a name="schema-registry-integrations-kds-libraries-kcl"></a>

Sie entwickeln Ihre Kinesis Client Library-Verbraucher in Java. Weitere Informationen finden Sie unter [Entwickeln eines Kinesis Client Library-Verbrauchers in Java](https://docs.aws.amazon.com/streams/latest/dev/kcl2-standard-consumer-java-example.html) im *Entwicklerhandbuch zu Amazon Kinesis Data Streams*.

1. Erstellen Sie eine Instance von `GlueSchemaRegistryDeserializer` durch Übergeben eines `GlueSchemaRegistryConfiguration`-Objekts.

1. Übergeben Sie den `GlueSchemaRegistryDeserializer` an `retrievalConfig.glueSchemaRegistryDeserializer`.

1. Greifen Sie auf das Schema eingehender Nachrichten zu, indem Sie `kinesisClientRecord.getSchema()` aufrufen.

   ```
   GlueSchemaRegistryConfiguration schemaRegistryConfig =
       new GlueSchemaRegistryConfiguration(this.region.toString());
   
    GlueSchemaRegistryDeserializer glueSchemaRegistryDeserializer =
       new GlueSchemaRegistryDeserializerImpl(DefaultCredentialsProvider.builder().build(), schemaRegistryConfig);
   
    RetrievalConfig retrievalConfig = configsBuilder.retrievalConfig().retrievalSpecificConfig(new PollingConfig(streamName, kinesisClient));
    retrievalConfig.glueSchemaRegistryDeserializer(glueSchemaRegistryDeserializer);
   
     Scheduler scheduler = new Scheduler(
               configsBuilder.checkpointConfig(),
               configsBuilder.coordinatorConfig(),
               configsBuilder.leaseManagementConfig(),
               configsBuilder.lifecycleConfig(),
               configsBuilder.metricsConfig(),
               configsBuilder.processorConfig(),
               retrievalConfig
           );
   
    public void processRecords(ProcessRecordsInput processRecordsInput) {
               MDC.put(SHARD_ID_MDC_KEY, shardId);
               try {
                   log.info("Processing {} record(s)",
                   processRecordsInput.records().size());
                   processRecordsInput.records()
                   .forEach(
                       r ->
                           log.info("Processed record pk: {} -- Seq: {} : data {} with schema: {}",
                           r.partitionKey(), r.sequenceNumber(), recordToAvroObj(r).toString(), r.getSchema()));
               } catch (Throwable t) {
                   log.error("Caught throwable while processing records. Aborting.");
                   Runtime.getRuntime().halt(1);
               } finally {
                   MDC.remove(SHARD_ID_MDC_KEY);
               }
    }
   
    private GenericRecord recordToAvroObj(KinesisClientRecord r) {
       byte[] data = new byte[r.data().remaining()];
       r.data().get(data, 0, data.length);
       org.apache.avro.Schema schema = new org.apache.avro.Schema.Parser().parse(r.schema().getSchemaDefinition());
       DatumReader datumReader = new GenericDatumReader<>(schema);
   
       BinaryDecoder binaryDecoder = DecoderFactory.get().binaryDecoder(data, 0, data.length, null);
       return (GenericRecord) datumReader.read(null, binaryDecoder);
    }
   ```

#### Interaktion mit Daten mithilfe der Kinesis Data Streams APIs
<a name="schema-registry-integrations-kds-apis"></a>

In diesem Abschnitt wird die Integration von Kinesis Data Streams mit Schema Registry mithilfe der Kinesis Data Streams beschrieben. APIs

1. Aktualisieren Sie diese Maven-Abhängigkeiten:

   ```
   <dependencyManagement>
           <dependencies>
               <dependency>
                   <groupId>com.amazonaws</groupId>
                   <artifactId>aws-java-sdk-bom</artifactId>
                   <version>1.11.884</version>
                   <type>pom</type>
                   <scope>import</scope>
               </dependency>
           </dependencies>
       </dependencyManagement>
   
       <dependencies>
           <dependency>
               <groupId>com.amazonaws</groupId>
               <artifactId>aws-java-sdk-kinesis</artifactId>
           </dependency>
   
           <dependency>
               <groupId>software.amazon.glue</groupId>
               <artifactId>schema-registry-serde</artifactId>
               <version>1.1.5</version>
           </dependency>
   
           <dependency>
               <groupId>com.fasterxml.jackson.dataformat</groupId>
               <artifactId>jackson-dataformat-cbor</artifactId>
               <version>2.11.3</version>
           </dependency>
       </dependencies>
   ```

1. Fügen Sie im Produzenten Schema-Header-Informationen mithilfe der `PutRecords`- oder `PutRecord`-API in Kinesis Data Streams hinzu.

   ```
   //The following lines add a Schema Header to the record
           com.amazonaws.services.schemaregistry.common.Schema awsSchema =
               new com.amazonaws.services.schemaregistry.common.Schema(schemaDefinition, DataFormat.AVRO.name(),
                   schemaName);
           GlueSchemaRegistrySerializerImpl glueSchemaRegistrySerializer =
               new GlueSchemaRegistrySerializerImpl(DefaultCredentialsProvider.builder().build(), new GlueSchemaRegistryConfiguration(getConfigs()));
           byte[] recordWithSchemaHeader =
               glueSchemaRegistrySerializer.encode(streamName, awsSchema, recordAsBytes);
   ```

1. Verwenden Sie im Produzenten die `PutRecords`- oder `PutRecord`-API, um den Datensatz in den Datenstrom einzufügen.

1. Entfernen Sie im Verbraucher den Schemadatensatz aus dem Header und serialisieren Sie einen Avro-Schemadatensatz.

   ```
   //The following lines remove Schema Header from record
           GlueSchemaRegistryDeserializerImpl glueSchemaRegistryDeserializer =
               new GlueSchemaRegistryDeserializerImpl(DefaultCredentialsProvider.builder().build(), getConfigs());
           byte[] recordWithSchemaHeaderBytes = new byte[recordWithSchemaHeader.remaining()];
           recordWithSchemaHeader.get(recordWithSchemaHeaderBytes, 0, recordWithSchemaHeaderBytes.length);
           com.amazonaws.services.schemaregistry.common.Schema awsSchema =
               glueSchemaRegistryDeserializer.getSchema(recordWithSchemaHeaderBytes);
           byte[] record = glueSchemaRegistryDeserializer.getData(recordWithSchemaHeaderBytes);
   
           //The following lines serialize an AVRO schema record
           if (DataFormat.AVRO.name().equals(awsSchema.getDataFormat())) {
               Schema avroSchema = new org.apache.avro.Schema.Parser().parse(awsSchema.getSchemaDefinition());
               Object genericRecord = convertBytesToRecord(avroSchema, record);
               System.out.println(genericRecord);
           }
   ```

#### Interaktion mit Daten mithilfe der Kinesis Data Streams APIs
<a name="schema-registry-integrations-kds-apis-reference"></a>

Im Folgenden finden Sie einen Beispielcode für die Verwendung von `PutRecords` und `GetRecords` APIs.

```
//Full sample code
import com.amazonaws.services.schemaregistry.deserializers.GlueSchemaRegistryDeserializerImpl;
import com.amazonaws.services.schemaregistry.serializers.GlueSchemaRegistrySerializerImpl;
import com.amazonaws.services.schemaregistry.utils.AVROUtils;
import com.amazonaws.services.schemaregistry.utils.AWSSchemaRegistryConstants;
import org.apache.avro.Schema;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericDatumReader;
import org.apache.avro.generic.GenericDatumWriter;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.io.Decoder;
import org.apache.avro.io.DecoderFactory;
import org.apache.avro.io.Encoder;
import org.apache.avro.io.EncoderFactory;
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.services.glue.model.DataFormat;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;


public class PutAndGetExampleWithEncodedData {
    static final String regionName = "us-east-2";
    static final String streamName = "testStream1";
    static final String schemaName = "User-Topic";
    static final String AVRO_USER_SCHEMA_FILE = "src/main/resources/user.avsc";
    KinesisApi kinesisApi = new KinesisApi();

    void runSampleForPutRecord() throws IOException {
        Object testRecord = getTestRecord();
        byte[] recordAsBytes = convertRecordToBytes(testRecord);
        String schemaDefinition = AVROUtils.getInstance().getSchemaDefinition(testRecord);

        //The following lines add a Schema Header to a record
        com.amazonaws.services.schemaregistry.common.Schema awsSchema =
            new com.amazonaws.services.schemaregistry.common.Schema(schemaDefinition, DataFormat.AVRO.name(),
                schemaName);
        GlueSchemaRegistrySerializerImpl glueSchemaRegistrySerializer =
            new GlueSchemaRegistrySerializerImpl(DefaultCredentialsProvider.builder().build(), new GlueSchemaRegistryConfiguration(regionName));
        byte[] recordWithSchemaHeader =
            glueSchemaRegistrySerializer.encode(streamName, awsSchema, recordAsBytes);

        //Use PutRecords api to pass a list of records
        kinesisApi.putRecords(Collections.singletonList(recordWithSchemaHeader), streamName, regionName);

        //OR
        //Use PutRecord api to pass single record
        //kinesisApi.putRecord(recordWithSchemaHeader, streamName, regionName);
    }

    byte[] runSampleForGetRecord() throws IOException {
        ByteBuffer recordWithSchemaHeader = kinesisApi.getRecords(streamName, regionName);

        //The following lines remove the schema registry header
        GlueSchemaRegistryDeserializerImpl glueSchemaRegistryDeserializer =
            new GlueSchemaRegistryDeserializerImpl(DefaultCredentialsProvider.builder().build(), new GlueSchemaRegistryConfiguration(regionName));
        byte[] recordWithSchemaHeaderBytes = new byte[recordWithSchemaHeader.remaining()];
        recordWithSchemaHeader.get(recordWithSchemaHeaderBytes, 0, recordWithSchemaHeaderBytes.length);

        com.amazonaws.services.schemaregistry.common.Schema awsSchema =
            glueSchemaRegistryDeserializer.getSchema(recordWithSchemaHeaderBytes);

        byte[] record = glueSchemaRegistryDeserializer.getData(recordWithSchemaHeaderBytes);

        //The following lines serialize an AVRO schema record
        if (DataFormat.AVRO.name().equals(awsSchema.getDataFormat())) {
            Schema avroSchema = new org.apache.avro.Schema.Parser().parse(awsSchema.getSchemaDefinition());
            Object genericRecord = convertBytesToRecord(avroSchema, record);
            System.out.println(genericRecord);
        }

        return record;
    }

    private byte[] convertRecordToBytes(final Object record) throws IOException {
        ByteArrayOutputStream recordAsBytes = new ByteArrayOutputStream();
        Encoder encoder = EncoderFactory.get().directBinaryEncoder(recordAsBytes, null);
        GenericDatumWriter datumWriter = new GenericDatumWriter<>(AVROUtils.getInstance().getSchema(record));
        datumWriter.write(record, encoder);
        encoder.flush();
        return recordAsBytes.toByteArray();
    }

    private GenericRecord convertBytesToRecord(Schema avroSchema, byte[] record) throws IOException {
        final GenericDatumReader<GenericRecord> datumReader = new GenericDatumReader<>(avroSchema);
        Decoder decoder = DecoderFactory.get().binaryDecoder(record, null);
        GenericRecord genericRecord = datumReader.read(null, decoder);
        return genericRecord;
    }

    private Map<String, String> getMetadata() {
        Map<String, String> metadata = new HashMap<>();
        metadata.put("event-source-1", "topic1");
        metadata.put("event-source-2", "topic2");
        metadata.put("event-source-3", "topic3");
        metadata.put("event-source-4", "topic4");
        metadata.put("event-source-5", "topic5");
        return metadata;
    }

    private GlueSchemaRegistryConfiguration getConfigs() {
        GlueSchemaRegistryConfiguration configs = new GlueSchemaRegistryConfiguration(regionName);
        configs.setSchemaName(schemaName);
        configs.setAutoRegistration(true);
        configs.setMetadata(getMetadata());
        return configs;
    }

    private Object getTestRecord() throws IOException {
        GenericRecord genericRecord;
        Schema.Parser parser = new Schema.Parser();
        Schema avroSchema = parser.parse(new File(AVRO_USER_SCHEMA_FILE));

        genericRecord = new GenericData.Record(avroSchema);
        genericRecord.put("name", "testName");
        genericRecord.put("favorite_number", 99);
        genericRecord.put("favorite_color", "red");

        return genericRecord;
    }
}
```

## Amazon Managed Service für Apache Flink
<a name="schema-registry-integrations-kinesis-data-analytics-apache-flink"></a>

Apache Flink ist ein beliebtes Open-Source-Framework und eine verteilte Verarbeitungs-Engine für statusbehaftete Berechnungen über unbegrenzte und begrenzte Datenströme. Amazon Managed Service für Apache Flink ist ein vollständig verwalteter AWS Service, mit dem Sie Apache Flink-Anwendungen zur Verarbeitung von Streaming-Daten erstellen und verwalten können.

Open Source Apache Flink bietet eine Reihe von Quellen und Senken. Vordefinierte Datenquellen umfassen beispielsweise das Lesen von Dateien, Verzeichnissen und Sockets sowie das Aufnehmen von Daten aus Sammlungen und Iteratoren. Apache Flink DataStream Connectors bieten Code für Apache Flink als Schnittstelle zu verschiedenen Systemen von Drittanbietern, wie Apache Kafka oder Kinesis als Quellsenken. and/or 

Weitere Informationen finden Sie im [Amazon Kinesis Data Analytics-Entwicklerhandbuch](https://docs.aws.amazon.com/kinesisanalytics/latest/java/what-is.html).

### Apache Flink Kafka Connector
<a name="schema-registry-integrations-kafka-connector"></a>

Apache Flink bietet einen Apache-Kafka-Datenstrom-Konnektor für das Lesen von Daten aus Kafka-Themen und das Schreiben von Daten in Kafka-Themen mit Genau-Einmal-Garantie. Der Kafka-Verbraucher von Fink, `FlinkKafkaConsumer`, bietet Zugriff auf das Lesen aus einem oder mehreren Kafka-Themen. Der Apache-Flink-Kafka-Produzent `FlinkKafkaProducer` ermöglicht das Schreiben eines Streams von Datensätzen zu einem oder mehreren Kafka-Themen. Weitere Informationen finden Sie unter [Kinesis Kafka Konnektor](https://ci.apache.org/projects/flink/flink-docs-stable/dev/connectors/kafka.html).

### Apache Flink Kinesis Streams Connector
<a name="schema-registry-integrations-kinesis-connector"></a>

Der Kinesis Data Stream Connector bietet Zugriff auf Amazon Kinesis Data Streams. Die `FlinkKinesisConsumer` ist eine exakt einmal parallel Streaming-Datenquelle, die mehrere Kinesis-Streams innerhalb derselben AWS Serviceregion abonniert und das Re-Sharding von Streams transparent handhaben kann, während der Job ausgeführt wird. Jede Unteraufgabe des Verbrauchers ist für das Abrufen von Datensätzen aus mehreren Kinesis-Shards verantwortlich. Die Anzahl der Shards, die von jeder Unteraufgabe abgerufen werden, ändert sich, wenn Shards geschlossen und von Kinesis erstellt werden. Der `FlinkKinesisProducer` verwendet die Kinesis Producer Library (KPL), um Daten aus einem Apache-Flink-Stream in einen Kinesis-Stream zu übertragen. Weitere Informationen finden Sie unter [Amazon Kinesis Streams Connector](https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/connectors/kinesis.html).

Weitere Informationen finden Sie unter [AWS Glue-Schema-Github-Repository](https://github.com/awslabs/aws-glue-schema-registry).

### Integration mit Apache Flink
<a name="schema-registry-integrations-apache-flink-integrate"></a>

Die mit Schema Registry bereitgestellte SerDes Bibliothek ist in Apache Flink integriert. Um mit Apache Flink zu arbeiten, müssen Sie die Schnittstellen [https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/util/serialization/SerializationSchema.java](https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/util/serialization/SerializationSchema.java) und [https://github.com/apache/flink/blob/8674b69964eae50cad024f2c5caf92a71bf21a09/flink-core/src/main/java/org/apache/flink/api/common/serialization/DeserializationSchema.java](https://github.com/apache/flink/blob/8674b69964eae50cad024f2c5caf92a71bf21a09/flink-core/src/main/java/org/apache/flink/api/common/serialization/DeserializationSchema.java) namens `GlueSchemaRegistryAvroSerializationSchema` und `GlueSchemaRegistryAvroDeserializationSchema` implementieren, die Sie in Apache-Flink-Konnektoren einbinden können.

### Hinzufügen einer AWS Glue Schema Registry Dependency zur Apache-Flink-Anwendung
<a name="schema-registry-integrations-kinesis-data-analytics-dependencies"></a>

Integrationsabhängigkeiten für AWS Glue Schema Registry in der Apache-Flink-Anwendung einrichten:

1. Fügen Sie die Abhängigkeit zur `pom.xml`-Datei hinzu.

   ```
   <dependency>
       <groupId>software.amazon.glue</groupId>
       <artifactId>schema-registry-flink-serde</artifactId>
       <version>1.0.0</version>
   </dependency>
   ```

#### Integration von Kafka oder Amazon MSK mit Apache Flink
<a name="schema-registry-integrations-kda-integrate-msk"></a>

Sie können Managed Service für Apache Flink für Apache Flink mit Kafka als Quelle oder Kafka als Senke verwenden.

**Kafka als Quelle**  
Das folgende Diagramm zeigt die Integration von Kinesis Data Streams mit Managed Service für Apache Flink für Apache Flink, mit Kafka als Quelle.

![\[Kafka als Quelle.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/gsr-kafka-source.png)


**Kafka als Senke**  
Das folgende Diagramm zeigt die Integration von Kinesis Data Streams mit Managed Service für Apache Flink für Apache Flink, mit Kafka als Senke.

![\[Kafka als Senke.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/gsr-kafka-sink.png)


Um Kafka (oder Amazon MSK) in Managed Service für Apache Flink für Apache Flink zu integrieren, mit Kafka als Quelle oder Kafka als Senke, nehmen Sie die folgenden Codeänderungen vor. Fügen Sie in den entsprechenden Abschnitten die fett formatierten Codeblöcke zu Ihrem jeweiligen Code hinzu.

Wenn Kafka die Quelle ist, verwenden Sie den Deserialisierer-Code (Block 2). Wenn Kafka die Senke ist, verwenden Sie den Serialisierer-Code (Block 3).

```
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

String topic = "topic";
Properties properties = new Properties();
properties.setProperty("bootstrap.servers", "localhost:9092");
properties.setProperty("group.id", "test");

// block 1
Map<String, Object> configs = new HashMap<>();
configs.put(AWSSchemaRegistryConstants.AWS_REGION, "aws-region");
configs.put(AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING, true);
configs.put(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, AvroRecordType.GENERIC_RECORD.getName());

FlinkKafkaConsumer<GenericRecord> consumer = new FlinkKafkaConsumer<>(
    topic,
    // block 2
    GlueSchemaRegistryAvroDeserializationSchema.forGeneric(schema, configs),
    properties);

FlinkKafkaProducer<GenericRecord> producer = new FlinkKafkaProducer<>(
    topic,
    // block 3
    GlueSchemaRegistryAvroSerializationSchema.forGeneric(schema, topic, configs),
    properties);

DataStream<GenericRecord> stream = env.addSource(consumer);
stream.addSink(producer);
env.execute();
```

#### Integrieren von Kinesis Data Streams in Apache Flink
<a name="schema-registry-integrations-integrate-kds"></a>

Sie können Managed Service für Apache Flink für Apache Flink mit Kinesis Data Streams als Quelle oder Senke verwenden.

**Kinesis Data Streams als Quelle**  
Das folgende Diagramm zeigt die Integration von Kinesis Data Streams mit Managed Service für Apache Flink für Apache Flink, mit Kinesis Data Streams als Quelle.

![\[Kinesis Data Streams als Quelle.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/gsr-kinesis-source.png)


**Kinesis Data Streams als Senke**  
Das folgende Diagramm zeigt die Integration von Kinesis Data Streams mit Managed Service für Apache Flink für Apache Flink, mit Kinesis Data Streams als Senke.

![\[Kinesis Data Streams als Senke.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/gsr-kinesis-sink.png)


Um Kinesis Data Streams mit Managed Service für Apache Flink für Apache Flink zu integrieren, mit Kinesis Data Streams als Quelle oder Kinesis Data Streams als Senke, nehmen Sie die folgenden Codeänderungen vor. Fügen Sie in den entsprechenden Abschnitten die fett formatierten Codeblöcke zu Ihrem jeweiligen Code hinzu.

Wenn Kinesis Data Streams die Quelle ist, verwenden Sie den Deserialisierer-Code (Block 2). Wenn Kinesis Data Streams die Senke ist, verwenden Sie den Serialisierer-Code (Block 3).

```
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

String streamName = "stream";
Properties consumerConfig = new Properties();
consumerConfig.put(AWSConfigConstants.AWS_REGION, "aws-region");
consumerConfig.put(AWSConfigConstants.AWS_ACCESS_KEY_ID, "aws_access_key_id");
consumerConfig.put(AWSConfigConstants.AWS_SECRET_ACCESS_KEY, "aws_secret_access_key");
consumerConfig.put(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST");

// block 1
Map<String, Object> configs = new HashMap<>();
configs.put(AWSSchemaRegistryConstants.AWS_REGION, "aws-region");
configs.put(AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING, true);
configs.put(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, AvroRecordType.GENERIC_RECORD.getName());

FlinkKinesisConsumer<GenericRecord> consumer = new FlinkKinesisConsumer<>(
    streamName,
    // block 2
    GlueSchemaRegistryAvroDeserializationSchema.forGeneric(schema, configs),
    properties);

FlinkKinesisProducer<GenericRecord> producer = new FlinkKinesisProducer<>(
    // block 3
    GlueSchemaRegistryAvroSerializationSchema.forGeneric(schema, topic, configs),
    properties);
producer.setDefaultStream(streamName);
producer.setDefaultPartition("0");

DataStream<GenericRecord> stream = env.addSource(consumer);
stream.addSink(producer);
env.execute();
```

## Anwendungsfall: Integration mit AWS Lambda
<a name="schema-registry-integrations-aws-lambda"></a>

[Um eine AWS Lambda Funktion als Apache Kafka/Amazon MSK-Consumer zu verwenden und AVRO-kodierte Nachrichten mithilfe von AWS Glue Schema Registry zu deserialisieren, besuchen Sie die MSK Labs-Seite.](https://amazonmsk-labs.workshop.aws/en/msklambda/gsrschemareg.html)

## Anwendungsfall: AWS Glue Data Catalog
<a name="schema-registry-integrations-aws-glue-data-catalog"></a>

AWS Glue-Tabellen unterstützen Schemata, die Sie manuell oder durch Verweis auf die AWS Glue Schema Registry angeben können. Die Schema Registry wird in den Data Catalog integriert, damit Sie optional Schemata verwenden können, die in der Schema Registry gespeichert sind, wenn Sie AWS Glue-Tabellen oder -Partitionen im Data Catalog erstellen oder aktualisieren. Um eine Schemadefinition in der Schema Registry zu identifizieren, müssen Sie mindestens den ARN des Schemas kennen, zu dem diese gehört. Eine Schemaversion eines Schemas, die eine Schemadefinition enthält, kann durch seine UUID oder Versionsnummer referenziert werden. Es gibt immer eine Schemaversion, die „neueste“ Version, die nachgeschlagen werden kann, ohne die Versionsnummer oder UUID zu kennen.

Bei Aufrufen der `CreateTable`- oder `UpdateTable`-Operationen übergeben Sie eine `TableInput`-Struktur mit einem `StorageDescriptor`, der unter Umständen eine `SchemaReference` auf ein vorhandenes Schema in der Schema Registry hat. In ähnlicher Weise kann die Antwort `GetPartition` APIs, wenn Sie `GetTable` oder aufrufen, das Schema und die enthalten`SchemaReference`. Wenn eine Tabelle oder Partition mit Schemareferenzen erstellt wurde, versucht der Data Catalog, das Schema für diese Schemareferenz abzurufen. Falls er das Schema in der Schema Registry nicht findet, wird ein leeres Schema in der `GetTable`-Antwort zurückgegeben. Andernfalls enthält die Antwort sowohl das Schema als auch die Schemareferenz.

Sie können die folgenden Aktionen auch in der AWS Glue-Konsole ausführen.

Um diese Vorgänge durchzuführen und die Schemainformationen zu erstellen, zu aktualisieren oder anzuzeigen, müssen Sie dem aufrufenden Benutzer eine IAM-Rolle zuweisen, die Berechtigungen für die `GetSchemaVersion`-API bereitstellt.

### Hinzufügen einer Tabelle oder Aktualisieren des Schemas für eine Tabelle
<a name="schema-registry-integrations-aws-glue-data-catalog-table"></a>

Das Hinzufügen einer neuen Tabelle aus einem vorhandenen Schema bindet die Tabelle an eine bestimmte Schemaversion. Sobald neue Schemaversionen registriert wurden, können Sie diese Tabellendefinition auf der Seite Tabelle anzeigen in der AWS Glue-Konsole oder mithilfe der [UpdateTable Aktion (Python: update\$1table)](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-UpdateTable)-API aktualisieren.

#### Hinzufügen einer Tabelle aus einem vorhandenen Schema
<a name="schema-registry-integrations-aws-glue-data-catalog-table-existing"></a>

Sie können eine AWS Glue-Tabelle aus einer Schemaversion in der Registrierung mithilfe der AWS Glue-Konsole oder der `CreateTable`-API erstellen.

**AWS Glue-API**  
Bei Aufrufen der `CreateTable`-API übergeben Sie eine `TableInput` mit einem `StorageDescriptor` und einer `SchemaReference` zu einem vorhandenen Schema in der Schema Registry.

**AWS Glue-Konsole**  
Eine Tabelle mithilfe der AWS Glue-Konsole erstellen:

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Wählen Sie im Navigationsbereich unter **Data Catalog** die Option **Tables (Tabellen)**.

1. Wählen Sie im Menü **Add Tables (Tabellen hinzufügen)** die Option **Add table from existing schema (Tabelle aus vorhandenem Schema hinzufügen)**.

1. Konfigurieren Sie die Tabelleneigenschaften und den Datenspeicher gemäß dem AWS Glue-Entwicklerhandbuch.

1. Wählen Sie auf der Seite **Choose a Glue schema (Glue-Schema wählen)** die **Registry**, in dem sich das Schema befindet.

1. Wählen Sie den **Schema name (Schemaname)** und wählen Sie die **Version** des anzuwendenden Schemas.

1. Überprüfen Sie die Schemavorschau und klicken Sie auf **Next (Weiter)**.

1. Überprüfen und erstellen Sie die Tabelle.

Das Schema und die Version, die auf die Tabelle angewendet werden, werden in der Spalte **Glue-Schema** in der Liste der Tabellen angezeigt. Sie können die Tabelle anzeigen, um weitere Details zu sehen.

#### Aktualisieren des Schemas für eine Tabelle
<a name="schema-registry-integrations-aws-glue-data-catalog-table-updating"></a>

Wenn eine neue Schemaversion verfügbar wird, können Sie das Schema einer Tabelle mit der [UpdateTable Aktion (Python: update\$1table)](aws-glue-api-catalog-tables.md#aws-glue-api-catalog-tables-UpdateTable)-API oder der AWS Glue-Konsole aktualisieren. 

**Wichtig**  
Beim Aktualisieren des Schemas für eine Tabelle, für die ein AWS Glue-Schema manuell angegeben wurde, ist das neue Schema, auf das in der Schema Registry verwiesen wird, möglicherweise inkompatibel. Dies kann dazu führen, dass Ihre Aufträge fehlschlagen.

**AWS Glue-API**  
Bei Aufrufen der `UpdateTable`-API übergeben Sie eine `TableInput` mit einem `StorageDescriptor` und einer `SchemaReference` zu einem vorhandenen Schema in der Schema Registry.

**AWS Glue-Konsole**  
Das Schema für eine Tabelle aus der AWS Glue-Konsole aktualisieren

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Glue Konsole unter [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue\).

1. Wählen Sie im Navigationsbereich unter **Data Catalog** die Option **Tables (Tabellen)**.

1. Zeigen Sie die Tabelle aus der Liste der Tabellen an.

1. Klicken Sie auf **Update schema (Schema aktualisieren)** in dem Feld, das Sie über die neue Version informiert.

1. Überprüfen Sie die Unterschiede zwischen dem aktuellen und dem neuen Schema.

1. Klicken Sie auf **Show all schema differences (Alle Schemaunterschiede anzeigen)**, um weitere Details zu sehen.

1. Klicken Sie auf **Save table (Tabelle speichern)**, um die neue Version zu akzeptieren.

## Anwendungsfall: AWS Glue Streaming
<a name="schema-registry-integrations-aws-glue-streaming"></a>

AWS Glue Streaming verbraucht Daten aus Streaming-Quellen und führt ETL-Operationen durch, bevor sie in eine Ausgabe-Sink geschrieben werden. Die Eingabe-Streaming-Quelle kann mit einer Datentabelle oder direkt durch Angabe der Quellkonfiguration angegeben werden.

AWS Glue Streaming unterstützt eine Datenkatalog-Tabelle für die Streaming-Quelle, die mit dem Schema imAWS Glue Schema Registry erstellt wurde. Sie können ein Schema im AWS Glue Schema Registry erstellen und eine AWS Glue-Tabelle mit einer Streaming-Quelle erstellen, die dieses Schema verwendet. Diese AWS Glue-Tabelle kann als Eingabe für einen AWS Glue-Streaming-Auftrag zum Deserialisieren von Daten im Eingabe-Stream verwendet werden.

Wenn sich das Schema im AWS Glue Schema Registry ändert, müssen Sie den AWS Glue-Streaming-Auftrag neu starten, damit die Änderungen im Schema berücksichtigt werden.

## Anwendungsfall: Apache Kafka Streams
<a name="schema-registry-integrations-apache-kafka-streams"></a>

Die Apache Kafka Streams API ist eine Client-Bibliothek zur Verarbeitung und Analyse von Daten, die in Apache Kafka gespeichert sind. Dieser Abschnitt beschreibt die Integration von Apache Kafka Streams mit der AWS Glue Schema Registry, mit der Sie Schemata in Ihren Datenstreaming-Anwendungen verwalten und durchsetzen können. Weitere Informationen zu Apache Kafka Streams finden Sie unter [Apache Kafka Streams](https://kafka.apache.org/documentation/streams/).

### Integration mit den SerDes Bibliotheken
<a name="schema-registry-integrations-apache-kafka-streams-integrate"></a>

Es gibt eine `GlueSchemaRegistryKafkaStreamsSerde`-Klasse, mit der Sie eine Streams-Anwendung konfigurieren können.

#### Beispielcode für die Kafka-Streams-Anwendung
<a name="schema-registry-integrations-apache-kafka-streams-application"></a>

So verwenden Sie die AWS Glue Schema Registry innerhalb einer Apache-Kafka-Streams-Anwendung:

1. Konfigurieren Sie die Kafka-Streams-Anwendung.

   ```
   final Properties props = new Properties();
       props.put(StreamsConfig.APPLICATION_ID_CONFIG, "avro-streams");
       props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
       props.put(StreamsConfig.CACHE_MAX_BYTES_BUFFERING_CONFIG, 0);
       props.put(StreamsConfig.DEFAULT_KEY_SERDE_CLASS_CONFIG, Serdes.String().getClass().getName());
       props.put(StreamsConfig.DEFAULT_VALUE_SERDE_CLASS_CONFIG, AWSKafkaAvroSerDe.class.getName());
       props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
   
       props.put(AWSSchemaRegistryConstants.AWS_REGION, "aws-region");
       props.put(AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING, true);
       props.put(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, AvroRecordType.GENERIC_RECORD.getName());
   	props.put(AWSSchemaRegistryConstants.DATA_FORMAT, DataFormat.AVRO.name());
   ```

1. Erstellen Sie einen Stream aus dem Thema avro-input.

   ```
   StreamsBuilder builder = new StreamsBuilder();
   final KStream<String, GenericRecord> source = builder.stream("avro-input");
   ```

1. Verarbeiten Sie die Datensätze (das Beispiel filtert die Datensätze heraus, deren Wert favorite\$1color pink ist oder bei denen der Wert von „amount“ 15 ist).

   ```
   final KStream<String, GenericRecord> result = source
       .filter((key, value) -> !"pink".equals(String.valueOf(value.get("favorite_color"))));
       .filter((key, value) -> !"15.0".equals(String.valueOf(value.get("amount"))));
   ```

1. Schreiben Sie die Ergebnisse zurück in das Thema avro-output.

   ```
   result.to("avro-output");
   ```

1. Starten Sie die Apache-Kafka-Streams-Anwendung.

   ```
   KafkaStreams streams = new KafkaStreams(builder.build(), props);
   streams.start();
   ```

#### Ergebnisse der Implementierung
<a name="schema-registry-integrations-apache-kafka-streams-results"></a>

Diese Ergebnisse zeigen den Filtervorgang von Datensätzen, die in Schritt 3 als favorite\$1color mit „pink“ oder „15.0“ herausgefiltert wurden.

Datensätze vor dem Filtern:

```
{"name": "Sansa", "favorite_number": 99, "favorite_color": "white"}
{"name": "Harry", "favorite_number": 10, "favorite_color": "black"}
{"name": "Hermione", "favorite_number": 1, "favorite_color": "red"}
{"name": "Ron", "favorite_number": 0, "favorite_color": "pink"}
{"name": "Jay", "favorite_number": 0, "favorite_color": "pink"}

{"id": "commute_1","amount": 3.5}
{"id": "grocery_1","amount": 25.5}
{"id": "entertainment_1","amount": 19.2}
{"id": "entertainment_2","amount": 105}
	{"id": "commute_1","amount": 15}
```

Datensätze nach dem Filtern:

```
{"name": "Sansa", "favorite_number": 99, "favorite_color": "white"}
{"name": "Harry", "favorite_number": 10, "favorite_color": "black"}
{"name": "Hermione", "favorite_number": 1, "favorite_color": "red"}
{"name": "Ron", "favorite_number": 0, "favorite_color": "pink"}

{"id": "commute_1","amount": 3.5}
{"id": "grocery_1","amount": 25.5}
{"id": "entertainment_1","amount": 19.2}
{"id": "entertainment_2","amount": 105}
```

### Anwendungsfall: Apache Kafka Connect
<a name="schema-registry-integrations-apache-kafka-connect"></a>

Durch die Integration von Apache Kafka Connect mit der AWS Glue Schema Registry können Sie Schemainformationen von Konnektoren abrufen. Die Apache-Kafka-Konverter geben das Format der Daten in Apache Kafka an, und wie diese in Apache-Kafka-Connect-Daten übersetzt werden. Jeder Apache-Kafka-Connect-Benutzer muss diese Konverter basierend auf dem Format konfigurieren, in dem seine Daten geladen oder in Apache Kafka gespeichert werden sollen. Auf diese Weise können Sie eigene Konverter definieren, um Apache-Kafka-Connect-Daten in den Typ zu übersetzen, der in AWS Glue Schema Registry verwendet wird (zum Beispiel: Avro), und unseren Serializer nutzen, um das Schema zu registrieren und die Serialisierung durchzuführen. Dann können Konverter auch unseren Deserializer verwenden, um die von Apache Kafka empfangenen Daten zu deserialisieren und wieder in Apache-Kafka-Connect-Daten zu konvertieren. Ein Beispiel für ein Workflow-Diagramm ist unten angegeben.

![\[Apache-Kafka-Connect-Workflow.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/schema_reg_int_kafka_connect.png)


1. Installieren Sie das `aws-glue-schema-registry`-Projekt durch Klonen des [Github-Repository für die AWS GlueSchema Registry](https://github.com/awslabs/aws-glue-schema-registry).

   ```
   git clone git@github.com:awslabs/aws-glue-schema-registry.git
   cd aws-glue-schema-registry
   mvn clean install
   mvn dependency:copy-dependencies
   ```

1. Wenn Sie planen, Apache Kafka Connect im *Standalone-Modus* zu verwenden, aktualisieren Sie die **connect-standalone.properties** mit der untenstehenden Anleitung für diesen Schritt. Wenn Sie Apache Kafka Connect im *verteilten* Modus verwenden möchten, aktualisieren Sie **connect-avro-distributed.properties** mit denselben Anweisungen.

   1. Fügen Sie diese Eigenschaften auch der Apache-Kafka-Connect-Properties-Datei hinzu:

      ```
      key.converter.region=aws-region
      value.converter.region=aws-region
      key.converter.schemaAutoRegistrationEnabled=true
      value.converter.schemaAutoRegistrationEnabled=true
      key.converter.avroRecordType=GENERIC_RECORD
      value.converter.avroRecordType=GENERIC_RECORD
      ```

   1. **Fügen Sie den folgenden Befehl zum Abschnitt **Startmodus** unter kafka-run-class .sh hinzu:**

      ```
      -cp $CLASSPATH:"<your AWS GlueSchema Registry base directory>/target/dependency/*"
      ```

1. **Fügen Sie den folgenden Befehl zum Abschnitt **Startmodus** unter kafka-run-class .sh hinzu**

   ```
   -cp $CLASSPATH:"<your AWS GlueSchema Registry base directory>/target/dependency/*" 
   ```

   Das sollte wie folgt aussehen:

   ```
   # Launch mode
   if [ "x$DAEMON_MODE" = "xtrue" ]; then
     nohup "$JAVA" $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH:"/Users/johndoe/aws-glue-schema-registry/target/dependency/*" $KAFKA_OPTS "$@" > "$CONSOLE_OUTPUT_FILE" 2>&1 < /dev/null &
   else
     exec "$JAVA" $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS -cp $CLASSPATH:"/Users/johndoe/aws-glue-schema-registry/target/dependency/*" $KAFKA_OPTS "$@"
   fi
   ```

1. Wenn Sie bash verwenden, führen Sie die folgenden Befehle aus, um Ihren CLASSPATH in Ihrem bash\$1profile einzurichten. Aktualisieren Sie die Umgebung für jede andere Shell entsprechend.

   ```
   echo 'export GSR_LIB_BASE_DIR=<>' >>~/.bash_profile
   echo 'export GSR_LIB_VERSION=1.0.0' >>~/.bash_profile
   echo 'export KAFKA_HOME=<your Apache Kafka installation directory>' >>~/.bash_profile
   echo 'export CLASSPATH=$CLASSPATH:$GSR_LIB_BASE_DIR/avro-kafkaconnect-converter/target/schema-registry-kafkaconnect-converter-$GSR_LIB_VERSION.jar:$GSR_LIB_BASE_DIR/common/target/schema-registry-common-$GSR_LIB_VERSION.jar:$GSR_LIB_BASE_DIR/avro-serializer-deserializer/target/schema-registry-serde-$GSR_LIB_VERSION.jar' >>~/.bash_profile
   source ~/.bash_profile
   ```

1. (Optional) Wenn Sie mit einer einfachen Dateiquelle testen möchten, klonen Sie den Dateiquellen-Konnektor.

   ```
   git clone https://github.com/mmolimar/kafka-connect-fs.git
   cd kafka-connect-fs/
   ```

   1. Ändern Sie unter der Konfiguration des Quellen-Konnektors das Datenformat auf Avro, den Datei-Reader auf`AvroFileReader` und aktualisieren Sie ein Beispiel-Avro-Objekt aus dem Dateipfad, aus dem Sie lesen. Zum Beispiel:

      ```
      vim config/kafka-connect-fs.properties
      ```

      ```
      fs.uris=<path to a sample avro object>
      policy.regexp=^.*\.avro$
      file_reader.class=com.github.mmolimar.kafka.connect.fs.file.reader.AvroFileReader
      ```

   1. Installieren Sie den Quellen-Konnektor.

      ```
      mvn clean package
      echo "export CLASSPATH=\$CLASSPATH:\"\$(find target/ -type f -name '*.jar'| grep '\-package' | tr '\n' ':')\"" >>~/.bash_profile
      source ~/.bash_profile
      ```

   1. Aktualisieren Sie die Senkeneigenschaften unter `<your Apache Kafka installation directory>/config/connect-file-sink.properties`, aktualisieren Sie den Namen des Themas und den Dateinamen.

      ```
      file=<output file full path>
      topics=<my topic>
      ```

1. Starten Sie den Quellen-Konnektor (in diesem Beispiel handelt es sich um einen Dateiquellen-Konnektor).

   ```
   $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties config/kafka-connect-fs.properties
   ```

1. Führen Sie den Quellen-Konnektor aus (in diesem Beispiel handelt es sich um einen Dateiquellen-Konnektor).

   ```
   $KAFKA_HOME/bin/connect-standalone.sh $KAFKA_HOME/config/connect-standalone.properties $KAFKA_HOME/config/connect-file-sink.properties
   ```

   Ein Beispiel für die Verwendung von Kafka Connect finden Sie im Skript run-local-tests .sh im Ordner integration-tests im [Github-Repository für die Schema Registry](https://github.com/awslabs/aws-glue-schema-registry/tree/master/integration-tests). AWS Glue

# Migration von einer Drittanbieter-Schemaregistrierung zu AWS Glue Schema Registry
<a name="schema-registry-integrations-migration"></a>

Bei der Migration von der Schemaregistrierung eines Drittanbieters zur AWS Glue Schema Registry gibt es eine Abhängigkeit von der vorhandenen, aktuellen Drittanbieter-Schemaregistrierung. Wenn in einem Apache-Kafka-Thema Datensätze vorhanden sind, die mithilfe einer Drittanbieter-Schemaregistrierung gesendet wurden, benötigen Verbraucher diese Schemaregistrierung, um die Datensätze zu deserialisieren. Der `AWSKafkaAvroDeserializer` bietet die Möglichkeit, eine sekundäre Deserializer-Klasse anzugeben, die auf den Drittanbieter-Deserializer verweist und zum Deserialisieren dieser Datensätze verwendet wird.

Es gibt zwei Kriterien für das Ausmustern eines Drittanbieter-Schemas. Erstens kann das Ausmustern nur erfolgen, wenn Datensätze in Apache-Kafka-Themen, die die Drittanbieter-Schemaregistrierung verwenden, nicht mehr von und für Verbraucher benötigt werden. Zweitens kann der Ruhestand durch Alterung der Apache-Kafka-Themen erfolgen, abhängig von der für diese Themen festgelegten Aufbewahrungsfrist. Beachten Sie, dass bei Themen mit unendlicher Aufbewahrung dennoch auf die AWS Glue Schema Registry migrieren können, aber die Schemaregistrierung des Drittanbieters nicht ausmustern können. Als Lösung können Sie eine Anwendung oder Mirror Maker 2 verwenden, um aus dem aktuellen Thema zu lesen und ein neues Thema mit der AWS Glue Schema Registry zu erstellen.

Von der Schemaregistrierung eines Drittanbieters zur AWS Glue Schema Registry migrieren:

1. Erstellen Sie eine Registrierung in der AWS Glue Schema Registry oder verwenden Sie die Standardregistrierung.

1. Stoppen Sie den Konsumenten. Ändern Sie diesen, um die AWS Glue Schema Registry als primären Deserialisierer zu verwenden und die Schemaregistrierung eines Drittanbieters als sekundären. 
   + Legen Sie die Verbrauchereigenschaften fest. In diesem Beispiel wird der secondary\$1deserializer auf einen anderen Deserializer gesetzt. Das Verhalten ist wie folgt: Der Verbraucher ruft Datensätze aus Amazon MSK ab und versucht zunächst den `AWSKafkaAvroDeserializer`. Wenn er nicht in der Lage ist, das magische Byte mit der Avro Schema-ID für das AWS Glue-Schema-Registry-Schema zu lesen, versucht `AWSKafkaAvroDeserializer`, die Deserializer-Klasse im secondary\$1deserializer zu verwenden. Die für den sekundären Deserializer spezifischen Eigenschaften müssen auch in den Verbrauchereigenschaften bereitgestellt werden, z. B. in den Eigenschaften schema\$1registry\$1url\$1config und specific\$1avro\$1reader\$1config, wie unten dargestellt.

     ```
     consumerProps.setProperty(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName());
     consumerProps.setProperty(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, AWSKafkaAvroDeserializer.class.getName());
     consumerProps.setProperty(AWSSchemaRegistryConstants.AWS_REGION, KafkaClickstreamConsumer.gsrRegion);
     consumerProps.setProperty(AWSSchemaRegistryConstants.SECONDARY_DESERIALIZER, KafkaAvroDeserializer.class.getName());
     consumerProps.setProperty(KafkaAvroDeserializerConfig.SCHEMA_REGISTRY_URL_CONFIG, "URL for third-party schema registry");
     consumerProps.setProperty(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, "true");
     ```

1. Starten Sie den Verbraucher neu.

1. Stoppen Sie den Produzenten und verweisen Sie den Produzenten auf die AWS Glue Schema Registry.

   1. Legen Sie die Produzenteneigenschaften fest. In diesem Beispiel verwendet der Produzent die Schemaversionen default-registry und auto register.

      ```
      producerProps.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
      producerProps.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, AWSKafkaAvroSerializer.class.getName());
      producerProps.setProperty(AWSSchemaRegistryConstants.AWS_REGION, "us-east-2");
      producerProps.setProperty(AWSSchemaRegistryConstants.AVRO_RECORD_TYPE, AvroRecordType.SPECIFIC_RECORD.getName());
      producerProps.setProperty(AWSSchemaRegistryConstants.SCHEMA_AUTO_REGISTRATION_SETTING, "true");
      ```

1. (Optional) Verschieben Sie vorhandene Schemata und Schemaversionen manuell aus der aktuellen Drittanbieter-Schemaregistrierung in die AWS Glue Schema Registry, entweder in die Standardregistrierung in AWS Glue Schema Registry oder in eine bestimmte nicht standardmäßige Registrierung in AWS Glue Schema Registry. Dies kann erreicht werden, indem Schemas aus den Schemaregistern von Drittanbietern im JSON-Format exportiert und neue Schemas in AWS Glue Schema Registry mithilfe von oder erstellt werden. AWS-Managementkonsole AWS CLI

    Dieser Schritt kann wichtig sein, wenn Sie Kompatibilitätsprüfungen mit früheren Schemaversionen für neu erstellte Schemaversionen mit AWS CLI und dem aktivieren müssen AWS-Managementkonsole, oder wenn Produzenten Nachrichten mit einem neuen Schema senden, bei dem die automatische Registrierung von Schemaversionen aktiviert ist.

1. Starten Sie den Produzenten.