

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.

# Arbeiten mit Aufträgen in AWS Glue
<a name="author-glue-job"></a>

Die folgenden Abschnitte enthalten Informationen über ETL- und Ray-Aufträge in AWS Glue.

**Topics**
+ [AWS Glue Versionen](release-notes.md)
+ [Arbeiten mit Spark-Jobs in AWS Glue](etl-jobs-section.md)
+ [Arbeiten mit Ray Jobs in AWS Glue](ray-jobs-section.md)
+ [Konfigurieren von Auftragseigenschaften für Python-Shell-Aufträge in AWS Glue](add-job-python.md)
+ [Überwachung AWS Glue](monitor-glue.md)

# AWS Glue Versionen
<a name="release-notes"></a>

Sie können den AWS Glue Versionsparameter konfigurieren, wenn Sie einen Job hinzufügen oder aktualisieren. Die AWS Glue Version bestimmt, welche Versionen von Apache Spark und Python AWS Glue unterstützt werden. Die Python-Version gibt die Version an, die für Aufträge des Typs Spark unterstützt wird. In der folgenden Tabelle sind die verfügbaren AWS Glue -Versionen, die entsprechenden Spark- und Python-Versionen sowie andere Änderungen der Funktionalität aufgeführt.

Sie können die [Generative AI-Upgrades für Apache Spark](upgrade-analysis.md) verwenden, um Ihre Glue-ETL-Jobs von älteren Glue-Versionen (≥ 2.0) auf die neueste Glue-Version zu aktualisieren.

## AWS Glue Versionen
<a name="release-notes-versions"></a>

<a name="table-glue-versions"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/release-notes.html)

**Anmerkung**  
Die folgenden Glue-Versionen unterstützen diese Versionen von PythonShell:  
PythonShell v3.6 wird in Glue Version 1.0 unterstützt.
PythonShell v3.9 wird in Glue Version 3.0 unterstützt.
Darüber hinaus werden Entwicklungsendpunkte nur in Glue Version 1.0 und 0.9 unterstützt.

# Richtlinien für die Unterstützung von AWS Glue-Versionen
<a name="glue-version-support-policy"></a>

AWS Glue ist ein Serverless-Datenintegrationsdienst, der es einfach macht, Daten für Analytik, Machine Learning und Anwendungsentwicklung zu erkennen, vorzubereiten und zu kombinieren. Ein *AWS Glue-Auftrag* enthält die Geschäftslogik, die die Datenintegrationsarbeit in AWS Glue. Es gibt drei Arten von Aufträgen in AWS Glue: *Spark (Batch und Streaming)*, *Ray* und *Python-Shell*. Beim Definieren Ihres Auftrags geben Sie die AWS Glue-Version an, die Versionen in der zugrunde liegenden Spark-, Ray- oder Python-Laufzeitumgebung konfiguriert. Beispiel: Ein Spark-Job der AWS Glue Version 5.0 unterstützt Spark 3.5.4 und Python 3.11.

## Support-Richtlinie
<a name="glue-version-support-policy-milestones"></a>

AWS Glue Versionen basieren auf einer Kombination aus Betriebssystem, Programmiersprache und Softwarebibliotheken, die Wartungs- und Sicherheitsupdates unterliegen. AWS Glue Die Richtlinie zur Versionsunterstützung sieht vor, dass der Support für eine Version eingestellt wird, wenn für eine wichtige Komponente der Version der Community Long-Term Support (LTS) ausläuft und keine Sicherheitsupdates mehr verfügbar sind. AWS Glue Die Richtlinien zur Versionsunterstützung umfassen die folgenden Status: 

**Ende des Support (EOS) —** Wenn eine AWS Glue Version EOS erreicht:
+ AWS Glue wendet keine Sicherheitspatches oder andere Updates mehr auf EOS-Versionen an.
+ AWS Glue Jobs mit EOS-Versionen haben keinen Anspruch auf technischen Support.
+ AWS Glue wird möglicherweise nicht berücksichtigt SLAs , wenn Jobs auf EOS-Versionen ausgeführt werden.

**Ende des Lebenszyklus (EOL) —** Wenn eine AWS Glue Version EOL erreicht:
+ Sie können keine neuen AWS Glue Jobs oder interaktiven Sitzungen mehr für EOL-Versionen erstellen.
+ In diesen AWS Glue Versionen können Sie keine Jobläufe mehr starten.
+ AWS Glue beendet bestehende Jobausführungen und interaktive Sitzungen für EOL-Versionen.
+ EOL-Versionen werden aus und entfernt AWS Glue SDKs . APIs

Die folgenden AWS Glue-Versionen haben das Ende des Supports erreicht und werden nach dem Ende der Lebensdauer nicht mehr verfügbar sein. Änderungen am Support-Status einer Version beginnen um Mitternacht (Pacific-Zeitzone) am angegebenen Datum.


| **Typ** | **Glue Version** | **Ende des Supports** | **Ende des Lebens** | 
| --- | --- | --- | --- | 
| **Typ** | **Python-Version** | **Ende des Supports** | **Ende des Lebens** | 
| --- | --- | --- | --- | 
| **Typ** | **Notebook-Version** | **Ende des Supports** | **Ende des Lebens** | 
| --- | --- | --- | --- | 
| Spark | Glue Version 0.9 (Spark 2.2, Scala 2, Python 2) | 01.06.2022 | 1.4.2026 | 
| Spark | Glue Version 1.0 (Spark 2.4, Python 2) | 1.6.2022 | 1.4.2026 | 
| Spark | Glue Version 1.0 (Spark 2.4, Scala 2, Python 3) | 30.9.2022 | 1.4.2026 | 
| Spark | Glue Version 2.0 (Spark 2.4, Python 3) | 31.1.2024 | 1.4.2026 | 
| Python-Shell | Python 2 (AWS Glue Version 1.0) | 01.06.2022 | 1.4.2026 | 
| Python-Shell | PythonShell 3.6 (Glue-Version 1.0) | 31.03.2026 | N/A | 
| Entwicklungsendpunkt | Zeppelin Notebook | 30.9.2022 | N/A | 

**Anmerkung**  
 Das Erstellen neuer AWS Glue Python Shell 3.6-Jobs ist nach dem Ende des Supports am 31. März 2026 nicht mehr zulässig. Sie können jedoch weiterhin bestehende Jobs aktualisieren und ausführen. Jobs, die auf eingestellten Versionen ausgeführt werden, kommen jedoch nicht für technischen Support in Frage. AWS Glue wendet keine Sicherheitspatches oder andere Updates auf eingestellte Versionen an. AWS Glue berücksichtigt auch nicht, SLAs wenn Jobs auf Versionen ausgeführt werden, die nicht mehr verfügbar sind. 

AWS empfiehlt dringend, Ihre Aufträge auf unterstützte Versionen zu migrieren.

Informationen zur Migration Ihrer Spark-Jobs auf die neueste AWS Glue Version finden Sie unter [AWS GlueJobs auf AWS Glue Version 5.1 migrieren](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-51.html). 

Migrieren Ihrer Python-Shell-Aufträge auf die neueste AWS Glue-Version:
+ Wählen Sie in der Konsole `Python 3 (Glue Version 4.0)` aus.
+ Setzen Sie in der [CreateJob](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateJob.html)/[UpdateJob](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateJob.html)API den `GlueVersion` Parameter auf `2.0` und den Wert `PythonVersion` to `3` unter dem `Command` Parameter. Die `GlueVersion`-Konfiguration hat keinen Einfluss auf das Verhalten von Python-Shell-Aufträgen, sodass das Inkrementieren von `GlueVersion` keinen Vorteil hat.
+ Sie müssen Ihr Auftragsskript mit Python 3 kompatibel machen.

# Migration AWS Glue für Spark-Jobs auf AWS Glue Version 5.1
<a name="migrating-version-51"></a>

In diesem Thema werden die Änderungen zwischen den AWS Glue Versionen 0.9, 1.0, 2.0, 3.0, 4.0 und 5.0 beschrieben, die es Ihnen ermöglichen, Ihre Spark-Anwendungen und ETL-Jobs auf AWS Glue 5.1 zu migrieren. Außerdem werden die Funktionen in AWS Glue 5.1 und die Vorteile seiner Verwendung beschrieben. 

Um diese Funktion mit Ihren AWS Glue ETL-Jobs zu verwenden, wählen Sie **5.1** `Glue version` bei der Erstellung Ihrer Jobs die Option.

**Topics**
+ [Neue Features](#migrating-version-51-features)
+ [Aktionen zur Migration auf AWS Glue 5.1](#migrating-version-51-actions)
+ [Checkliste für die Migration](#migrating-version-51-checklist)
+ [Migration von 5.0 auf 5.1 AWS Glue AWS Glue](#migrating-version-51-from-50)
+ [Migration von älteren AWS Glue Versionen auf 5.1 AWS Glue](#migrating-older-versions-to-51)
+ [Migration von Connector und JDBC-Treibern für 5.1 AWS Glue](#migrating-version-51-connector-driver-migration)

## Neue Features
<a name="migrating-version-51-features"></a>

In diesem Abschnitt werden die neuen Funktionen und Vorteile von AWS Glue Version 5.1 beschrieben.
+ Apache Spark-Update von 3.5.4 in AWS Glue 5.0 auf 3.5.6 in AWS Glue 5.1.
+ Open Table Formats (OTF) wurde auf Hudi 1.0.2, Iceberg 1.10.0 und Delta Lake 3.3.2 aktualisiert
+ **Iceberg Materialized Views - Erstellen und verwalten Sie Iceberg Materialized Views** (MV). [Weitere Informationen finden Sie im Blogbeitrag](https://aws.amazon.com/blogs/big-data/introducing-apache-iceberg-materialized-views-in-aws-glue-data-catalog/) 
+ **Iceberg-Format Version 3.0** — Erweitert Datentypen und bestehende Metadatenstrukturen um neue Funktionen. Weitere Informationen finden Sie in der [Iceberg-Tabellenspezifikation](https://iceberg.apache.org/spec/). 
+ **Hudi Full Table Access** — Steuerung des vollständigen Tabellenzugriffs (FTA) für Apache Hudi in Apache Spark auf der Grundlage Ihrer in definierten Richtlinien. AWS Lake Formation Diese Funktion ermöglicht Lese- und Schreiboperationen aus Ihren AWS Glue ETL-Jobs in AWS Lake Formation registrierten Tabellen, wenn die Jobrolle vollen Tabellenzugriff hat.
+ Die **native FGAC-Unterstützung (Fine-Grained Access Control) von Spark verwendet AWS Lake Formation** DDL/DML -Operationen (wie CREATE, ALTER, DELETE, DROP) mit detaillierter Zugriffskontrolle für Apache Hive-, Apache Iceberg- und Delta Lake-Tabellen, die in registriert sind. AWS Lake Formation
+ **Audit-Kontext für Spark-Jobs** — Der Audit-Kontext für AWS Glue ETL-Jobs wird für API-Aufrufe in den Protokollen verfügbar sein. AWS Glue AWS Lake Formation AWS CloudTrail 

**Bekannte Probleme und Einschränkungen**  
Beachten Sie die folgenden bekannten Probleme und Einschränkungen:
+ Eingeschränkte Unterstützung für View-SQL-Klausel für die Erstellung materialisierter Ansichten, das Umschreiben von Abfragen und die inkrementelle Aktualisierung. Weitere Einzelheiten finden Sie auf der Dokumentationsseite zur Funktion [Iceberg Materialized Views](https://docs.aws.amazon.com/lake-formation/latest/dg/materialized-views.html#materialized-views-considerations-limitations) 
+ **Hudi FTA-Schreibvorgänge** müssen HoodieCredentialedHadoopStorage für den Verkauf von Anmeldeinformationen während der Auftragsausführung verwendet werden. Stellen Sie die folgende Konfiguration ein, wenn Sie Hudi-Jobs ausführen:

  `hoodie.storage.class=org.apache.spark.sql.hudi.storage.HoodieCredentialedHadoopStorage` 
+ Die Hudi FTA-Schreibunterstützung funktioniert nur mit den Hudi-Standardkonfigurationen. Benutzerdefinierte oder nicht standardmäßige Hudi-Einstellungen werden möglicherweise nicht vollständig unterstützt und können zu unerwartetem Verhalten führen. Clustering für Hudi-Tabellen Merge-On-Read (MOR) wird im FTA-Schreibmodus ebenfalls nicht unterstützt.

**Abwärtskompatible Änderungen**  
Beachten Sie die folgenden grundlegenden Änderungen:
+  Das S3A-Dateisystem hat EMRFS als Standard-S3-Konnektor ersetzt. Informationen zur Migration finden Sie unter. [Migration von 5.0 auf 5.1 AWS Glue AWS Glue](#migrating-version-51-from-50) 

## Aktionen zur Migration auf AWS Glue 5.1
<a name="migrating-version-51-actions"></a>

Ändern Sie bei vorhandenen Aufträgen die `Glue version` von der vorherigen Version auf `Glue 5.1` in der Auftragskonfiguration.
+ Wählen Sie in AWS Glue Studio `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3` in`Glue version`.
+ Wählen Sie in der API **5.1** im `GlueVersion`-Parameter in der [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob)-API-Operation aus.

Wählen Sie für neue Aufträge `Glue 5.1` aus, wenn Sie Aufträge erstellen.
+ Wählen Sie in der Konsole `Spark 3.5.6, Python 3 (Glue Version 5.1) or Spark 3.5.6, Scala 2 (Glue Version 5.1)` in der `Glue version` aus.
+ Wählen Sie in AWS Glue Studio `Glue 5.1 - Supports Spark 3.5.6, Scala 2, Python 3` in`Glue version`.
+ Wählen Sie in der API **5.1** im `GlueVersion`-Parameter in der [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob)-API-Operation aus.

Um Spark-Ereignisprotokolle von AWS Glue 5.1 aus Version AWS Glue 2.0 oder früher anzuzeigen, [starten Sie einen aktualisierten Spark-Verlaufsserver für AWS Glue 5.1 mit CloudFormation oder Docker](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html).

## Checkliste für die Migration
<a name="migrating-version-51-checklist"></a>

Überprüfen Sie diese Checkliste für die Migration:
+ [Python] Aktualisieren Sie die Boto-Referenzen von 1.34 auf 1.40.

## Migration von 5.0 auf 5.1 AWS Glue AWS Glue
<a name="migrating-version-51-from-50"></a>

Alle vorhandenen Jobparameter und Hauptfunktionen, die in AWS Glue 5.0 vorhanden sind, werden auch in AWS Glue 5.1 vorhanden sein. Beachten Sie die folgenden Änderungen bei der Migration:
+ In AWS Glue 5.1 hat das S3A-Dateisystem EMRFS als Standard-S3-Konnektor ersetzt. Wenn beide `spark.hadoop.fs.s3a.endpoint` und nicht gesetzt `spark.hadoop.fs.s3a.endpoint.region` sind, ist die von S3A verwendete Standardregion. `us-east-2` Dies kann zu Problemen wie Timeout-Fehlern beim S3-Upload führen, insbesondere bei VPC-Aufträgen. Um die durch diese Änderung verursachten Probleme zu beheben, legen Sie die `spark.hadoop.fs.s3a.endpoint.region` Spark-Konfiguration fest, wenn Sie das S3A-Dateisystem in 5.1 verwenden. AWS Glue 
+ Um weiterhin EMRFS anstelle von S3A zu verwenden, legen Sie die folgenden Spark-Konfigurationen fest:

  ```
      --conf spark.hadoop.fs.s3.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem
      --conf spark.hadoop.fs.s3n.impl=com.amazon.ws.emr.hadoop.fs.EmrFileSystem
      --conf spark.hadoop.fs.AbstractFileSystem.s3.impl=org.apache.hadoop.fs.s3.EMRFSDelegate
  ```

Weitere Informationen finden Sie in der Dokumentation zur Spark-Migration:
+ [Migrationshandbuch: Spark Core](https://spark.apache.org/docs/3.5.6/core-migration-guide.html)
+ [Migrationshandbuch: SQL, Datensätze und DataFrame](https://spark.apache.org/docs/3.5.6/sql-migration-guide.html)
+ [Migrationshandbuch: Strukturiertes Streaming](https://spark.apache.org/docs/3.5.6/ss-migration-guide.html)
+ [Wird upgegradet PySpark](https://spark.apache.org/docs/3.5.6/api/python/migration_guide/pyspark_upgrade.html)

## Migration von älteren AWS Glue Versionen auf 5.1 AWS Glue
<a name="migrating-older-versions-to-51"></a>
+ Migrationsschritte im Zusammenhang mit AWS Glue 4.0 auf AWS Glue 5.0 finden Sie unter [Migration von AWS Glue 4.0 auf AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-40) 5.0.
+ Migrationsschritte im Zusammenhang mit AWS Glue 3.0 auf AWS Glue 5.0 finden Sie unter [Migration von AWS Glue 3.0 auf AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-30) 5.0.
+ Migrationsschritte im Zusammenhang mit AWS Glue 2.0 auf AWS Glue 5.0 und eine Liste der Migrationsunterschiede zwischen AWS Glue Version 2.0 und 4.0 finden Sie unter [Migration von AWS Glue 2.0 auf AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-50.html#migrating-version-50-from-20) 5.0. 

## Migration von Connector und JDBC-Treibern für 5.1 AWS Glue
<a name="migrating-version-51-connector-driver-migration"></a>

Die aktualisierten Versionen von JDBC- und Data-Lake-Konnektoren finden Sie unter:
+ [Anhang B: Aktualisierungen von JDBC-Treibern](#migrating-version-51-appendix-jdbc-driver)
+ [Anhang C: Konnektor-Upgrades](#migrating-version-51-appendix-connector)
+ [Anhang D: Verbesserungen des Open-Table-Formats](#migrating-version-51-appendix-open-table-formats)

Die folgenden Änderungen gelten für die OTF-Versionsupgrades, die in 5.1 beschrieben [Anhang D: Verbesserungen des Open-Table-Formats](#migrating-version-51-appendix-open-table-formats) wurden. AWS Glue 

**Apache Hudi**  
Beachten Sie folgende Änderungen:
+ Support den FTA-Lese- und Schreibzugriff auf bei Lake Formation registrierte Tabellen.

**Apache Iceberg**  
Beachten Sie folgende Änderungen:
+ Support Version 3 des Iceberg-Formats. Die folgenden Funktionen werden unterstützt:
  + Transformationen mit mehreren Argumenten für die Partitionierung und Sortierung.
  + Nachverfolgung der Zeilenabstammung.
  + Löschvektoren. Erfahren Sie mehr im [Blogbeitrag](https://aws.amazon.com/blogs/big-data/unlock-the-power-of-apache-iceberg-v3-deletion-vectors-on-amazon-emr/) 
  + Tabellen-Verschlüsselungsschlüssel.
  + Unterstützung von Standardwerten für Spalten.
+ Support Spark-native FGAC-Schreibvorgänge in registrierten Tabellen. AWS Lake Formation 
+ Athena SQL-Kompatibilität — Iceberg V3-Tabellen, die von EMR Spark erstellt wurden, können aufgrund eines Fehlers nicht gelesen werden: `GENERIC_INTERNAL_ERROR: Cannot read unsupported version 3`

**Delta Lake**  
Beachten Sie folgende Änderungen:
+ Support den FTA-Lese- und Schreibzugriff auf bei Lake Formation registrierte Tabellen.

### Anhang A: Nennenswerte Aktualisierungen von Abhängigkeiten
<a name="migrating-version-51-appendix-dependencies"></a>

Im Folgenden sind Abhängigkeits-Upgrades aufgeführt:


| -Abhängigkeit | Version in 5.1 AWS Glue  | Version in AWS Glue 5.0 | Version in AWS Glue 4.0 | Version in AWS Glue 3.0 | Version in AWS Glue 2.0 | Version in AWS Glue 1.0 | 
| --- | --- | --- | --- | --- | --- | --- | 
| Java | 17 | 17 | 8 | 8 | 8 | 8 | 
| Spark | 3.5.6 | 3.5.4 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 3.4.1 | 3.4.1 | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 | 
| Scala | 2.12,18 | 2.12,18 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Jackson | 2.15,2 | 2.15,2 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Hive | 2.3.9-amzn-4 | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 2,73,0 | 2,69,0 | 2,54,0 | 2,46,0 | 2.38.0 | 2.30.0 | 
| JSON4s | 3.7.0-M11 | 3.7.0-M11 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x | 
| Arrow | 12.0.1 | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS Glue Datenkatalog-Client | 4.9.0 | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | – | 
| AWS SDK for Java | 2.35.5 | 2,29,52 | 1.12 | 1.12 |  |  | 
| Python | 3,11 | 3,11 | 3,10 | 3.7 | 2.7 und 3.6 | 2.7 und 3.6 | 
| Boto | 1,40,61 | 1,34,131 | 1,26 | 1,18 | 1.12 | – | 
| EMR-DynamoDB-Connector | 5.7.0 | 5.6.0 | 4,16.0 |  |  |  | 

### Anhang B: Aktualisierungen von JDBC-Treibern
<a name="migrating-version-51-appendix-jdbc-driver"></a>

Die folgenden JDBC-Treiber-Upgrades sind:


| Treiber | JDBC-Treiberversion in 5.1 AWS Glue  | JDBC-Treiberversion in 5.0 AWS Glue  | JDBC-Treiberversion in 4.0 AWS Glue  | JDBC-Treiberversion in 3.0 AWS Glue  | JDBC-Treiberversion in früheren Versionen AWS Glue  | 
| --- | --- | --- | --- | --- | --- | 
| MySQL | 8.0.33 | 8,0,33 | 8.0.23 | 8.0.23 | 5.1 | 
| Microsoft SQL Server | 10.2,0 | 10.2.0 | 9.4,0 | 7.0.0 | 6.1.0 | 
| Oracle-Datenbanken | 23.3.0.23,09 | 23.3.0.23,09 | 21,7 | 21,1 | 11.2 | 
| PostgreSQL | 42,7,3 | 42,7,3 | 42,3,6 | 42,2,18 | 42,10 | 
| Amazon Redshift |  redshift-jdbc42-2.1.0.29  |  redshift-jdbc42-2.1.0.29  |  redshift-jdbc42-2.1.0.16  |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc41-1.2.12.1017   | 
| SAP HANA | 2,20,17 | 2,20,17 | 2.17,12 |  |  | 
| Teradata | 20,00,00,33 | 20.00.00.33 | 20.00.00.06 |  |  | 

### Anhang C: Konnektor-Upgrades
<a name="migrating-version-51-appendix-connector"></a>

Im Folgenden sind Konnektor-Upgrades aufgeführt:


| Treiber | Connector-Version in 5.1 AWS Glue  | Connector-Version in AWS Glue 5.0 | Connector-Version in AWS Glue 4.0 | Connector-Version in AWS Glue 3.0 | 
| --- | --- | --- | --- | --- | 
| EMR-DynamoDB-Connector | 5.7.0 | 5.6.0 | 4.16.0 |  | 
| Amazon Redshift | 6.4.2 | 6.4.0 | 6.1.3 |  | 
| OpenSearch | 1.2.0 | 1.2.0 | 1.0.1 |  | 
| MongoDB | 10.3.0 | 10.3.0 | 10.0.4 | 3.0.0 | 
| Snowflake | 3.1.1 | 3.0.0 | 2.12.0 |  | 
| Google BigQuery | 0,32,2 | 0,32,2 | 0,32,2 |  | 
| AzureCosmos | 4,33,0 | 4,33,0 | 4,22,0 |  | 
| AzureSQL | 1.3.0 | 1.3.0 | 1.3.0 |  | 
| Vertica | 3.3.5 | 3.3.5 | 3.3.5 |  | 

### Anhang D: Verbesserungen des Open-Table-Formats
<a name="migrating-version-51-appendix-open-table-formats"></a>

Im Folgenden finden Sie die Verbesserungen des Open-Table-Formats:


| OTF | Connector-Version in 5.1 AWS Glue  | Connector-Version in AWS Glue 5.0 | Connector-Version in AWS Glue 4.0 | Connector-Version in AWS Glue 3.0 | 
| --- | --- | --- | --- | --- | 
| Hudi | 1.0.2 | 0.15.0 | 0.12.1 | 0.10.1 | 
| Delta Lake | 3.3.2 | 3.3.0 | 2.1.0 | 1.0.0 | 
| Iceberg | 1.10.0 | 1.7.1 | 1.0.0 | 0.13.1 | 

# Migration AWS Glue für Spark-Jobs auf AWS Glue Version 5.0
<a name="migrating-version-50"></a>

In diesem Thema werden die Änderungen zwischen den AWS Glue Versionen 0.9, 1.0, 2.0, 3.0 und 4.0 beschrieben, die es Ihnen ermöglichen, Ihre Spark-Anwendungen und ETL-Jobs auf AWS Glue 5.0 zu migrieren. Außerdem werden die Funktionen in AWS Glue 5.0 und die Vorteile seiner Verwendung beschrieben. 

Um diese Funktion mit Ihren AWS Glue ETL-Jobs zu verwenden, wählen Sie **5.0** `Glue version` bei der Erstellung Ihrer Jobs die Option.

**Topics**
+ [Neue Features](#migrating-version-50-features)
+ [Aktionen zur Migration auf 5.0 AWS Glue](#migrating-version-50-actions)
+ [Checkliste für die Migration](#migrating-version-50-checklist)
+ [AWS Glue 5.0-Funktionen](#migrating-version-50-features)
+ [Migration von AWS Glue 4.0 auf 5.0 AWS Glue](#migrating-version-50-from-40)
+ [Migration von AWS Glue 3.0 auf 5.0 AWS Glue](#migrating-version-50-from-30)
+ [Migration von AWS Glue 2.0 auf 5.0 AWS Glue](#migrating-version-50-from-20)
+ [Verhaltensänderungen in 5.0 protokollieren AWS Glue](#enable-continous-logging-changes-glue-50)
+ [Migration von Konnektoren und JDBC-Treibern für 5.0 AWS Glue](#migrating-version-50-connector-driver-migration)

## Neue Features
<a name="migrating-version-50-features"></a>

In diesem Abschnitt werden die neuen Funktionen und Vorteile von AWS Glue Version 5.0 beschrieben.
+ Apache Spark-Update von 3.3.0 in AWS Glue 4.0 auf 3.5.4 in AWS Glue 5.0. Siehe [Wesentliche Verbesserungen von Spark 3.3.0 zu Spark 3.5.4](#migrating-version-50-features-spark). 
+ Native differenzierte Zugriffskontrolle (FGAC) von Spark mit Lake Formation. Dazu gehört FGAC für Iceberg-, Delta- und Hudi-Tabellen. Weitere Informationen finden Sie unter [Verwenden von AWS Glue with AWS Lake Formation für eine differenzierte](https://docs.aws.amazon.com/glue/latest/dg/security-lf-enable.html) Zugriffskontrolle. 

  Beachten Sie die folgenden Überlegungen oder Einschränkungen für Spark-natives FGAC:
  + Derzeit werden Datenschreibvorgänge nicht unterstützt.
  + Das Schreiben in Iceberg über `GlueContext` mit Lake Formation erfordert stattdessen die Verwendung der IAM-Zugriffskontrolle.

  Eine vollständige Liste der Einschränkungen und Überlegungen bei der Verwendung von Spark-nativem FGAC finden Sie unter [Überlegungen und Einschränkungen](security-lf-enable-considerations.md).
+ Support für Amazon S3 Access Grants als skalierbare Zugriffskontrolllösung für Ihre Amazon S3 S3-Daten von AWS Glue. Weitere Informationen finden Sie unter [Verwenden von Amazon S3 Access Grants mit AWS Glue](security-s3-access-grants.md).
+ Open Table Formats (OTF) wurden auf Hudi 0.15.0, Iceberg 1.7.1 und Delta Lake 3.3.0 aktualisiert.
+ Unterstützung für Amazon SageMaker Unified Studio.
+ Amazon SageMaker Lakehouse und Integration der Datenabstraktion. Weitere Informationen finden Sie unter [Abfragen von Metastore-Datenkatalogen über ETL AWS Glue](#migrating-version-50-features-metastore).
+ Unterstützung für die Installation zusätzlicher Python-Bibliotheken mithilfe von `requirements.txt`. Weitere Informationen finden Sie unter [Installation zusätzlicher Python-Bibliotheken in AWS Glue 5.0 oder höher mit requirements.txt](aws-glue-programming-python-libraries.md#addl-python-modules-requirements-txt).
+ AWS Glue 5.0 unterstützt Data Lineage in Amazon DataZone. Sie können so konfigurieren AWS Glue , dass während der Ausführung von Spark-Jobs automatisch Herkunftsinformationen erfasst und die Herkunftsereignisse zur Visualisierung in Amazon gesendet werden. DataZone Weitere Informationen finden Sie unter [Data Lineage in Amazon DataZone](https://docs.aws.amazon.com/datazone/latest/userguide/datazone-data-lineage.html).

  Um dies in der AWS Glue Konsole zu konfigurieren, aktivieren Sie **Generate Lineage Events** und geben Sie Ihre DataZone Amazon-Domain-ID auf der Registerkarte **Jobdetails** ein.  
![\[Der Screenshot zeigt das Einschalten von Amazon DataZone Date Lineage für AWS Glue.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/glue-50-data-lineage.png)

  Alternativ können Sie den folgenden Job-Parameter angeben (geben Sie Ihre DataZone Domain-ID an):
  + Schlüssel: `--conf`
  + Wert:

    ```
    extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener
    —conf spark.openlineage.transport.type=amazon_datazone_api
    -conf spark.openlineage.transport.domainId=<your-domain-ID>
    ```
+ Connector- und JDBC-Treiber-Updates. Weitere Informationen erhalten Sie unter [Anhang B: Aktualisierungen von JDBC-Treibern](#migrating-version-50-appendix-jdbc-driver) und [Anhang C: Konnektor-Upgrades](#migrating-version-50-appendix-connector).
+ Java-Update von 8 auf 17.
+ Erhöhung des Speicherplatzes für `G.2X` Mitarbeiter AWS Glue `G.1X` und Erhöhung des Festplattenspeichers auf 94 GB bzw. 138 GB Darüber hinaus sind neue Worker-Typen und speicheroptimierte `G.12X``G.16X`,`R.1X`, `R.2X``R.4X`, in AWS Glue Version 4.0 und `R.8X` späteren Versionen verfügbar. Weitere Informationen finden Sie unter [Jobs](aws-glue-api-jobs-job.md). 
+ Jobs, **die AWS SDK for Java, Version AWS Glue 2-5.0 Support**, können die Java-Versionen [1.12.569](https://github.com/aws/aws-sdk-java/tree/1.12.569) oder [2.28.8](https://github.com/aws/aws-sdk-java-v2/tree/2.28.8) verwenden, wenn der Job v2 unterstützt. Das AWS SDK for Java 2.x ist eine umfassende Neufassung der Codebasis von Version 1.x. Sie basiert auf Java 8\$1 und fügt mehrere häufig angeforderte Funktionen hinzu. Dies umfasst die Unterstützung von blockierungsfreiem E/A und die Möglichkeit, zur Laufzeit eine andere HTTP-Implementierung einzubinden. Weitere Informationen, einschließlich eines Migrationshandbuchs von SDK für Java v1 zu v2, finden Sie im Handbuch [AWS SDK für Java, Version 2](https://docs.aws.amazon.com/sdk-for-java).

**Abwärtskompatible Änderungen**  
Beachten Sie die folgenden grundlegenden Änderungen:
+  Wenn in AWS Glue 5.0 das S3A-Dateisystem verwendet wird und sowohl `fs.s3a.endpoint` als auch `fs.s3a.endpoint.region` nicht gesetzt sind, ist die von S3A verwendete Standardregion `us-east-2`. Dies kann zu Problemen wie Timeout-Fehlern beim S3-Upload führen, insbesondere bei VPC-Aufträgen. Um die durch diese Änderung verursachten Probleme zu beheben, legen Sie die Spark-Konfiguration `fs.s3a.endpoint.region` fest, wenn Sie das AWS Glue S3A-Dateisystem in 5.0 verwenden. 
+ Differenzierte Zugriffskontrolle von Lake Formation (FGAC)
  + AWS Glue 5.0 unterstützt nur das neue DataFrames Spark-native FGAC, das Spark verwendet. Die Verwendung von FGAC wird nicht unterstützt. AWS Glue DynamicFrames
    + Die Verwendung von FGAC in 5.0 erfordert eine Migration von zu Spark AWS Glue DynamicFrames DataFrames
    + Wenn Sie FGAC nicht benötigen, ist es nicht notwendig, zu Spark zu migrieren, DataFrame und GlueContext Funktionen wie Job-Lesezeichen und Push-Down-Prädikate funktionieren weiterhin.
  + Aufträge mit Spark-nativem FGAC erfordern mindestens 4 Worker: einen Benutzertreiber, einen Systemtreiber, einen System-Executor und einen Standby-Benutzer-Executor.
  + Weitere Informationen finden Sie unter [Verwenden von AWS Glue with AWS Lake Formation für](https://docs.aws.amazon.com/glue/latest/dg/security-lf-enable.html) eine detaillierte Zugriffskontrolle. 
+ Lake Formation – vollständiger Tabellenzugriff (FTA)
  + AWS Glue 5.0 unterstützt FTA mit Spark-nativen DataFrames (neu) und GlueContext DynamicFrames (älteren Versionen, mit Einschränkungen)
  + Spark-native FTA
    + Wenn das 4.0-Skript verwendet wird GlueContext, wechseln Sie zur Verwendung von nativem Spark. 
    + Dieses Feature ist auf Hive- und Iceberg-Tabellen beschränkt.
    + Weitere Informationen zur Konfiguration eines 5.0-Auftrags für Spark-native FTA finden Sie unter 
  + GlueContext DynamicFrame FTA
    + Keine Codeänderung erforderlich
    + Dieses Feature ist auf Nicht-OTF-Tabellen beschränkt – es funktioniert nicht mit Iceberg, Delta Lake und Hudi.
+ Der [vektorisierte SIMD-CSV-Reader](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-format-csv-home.html#aws-glue-programming-etl-format-simd-csv-reader) wird nicht unterstützt.
+ Die [kontinuierliche Protokollierung](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging-enable.html) in der Ausgabeprotokollgruppe wird nicht unterstützt. Verwenden Sie stattdessen die Protokollgruppe `error`.
+ Der AWS Glue Job Run Insights `job-insights-rule-driver` ist veraltet. Der Protokollstream `job-insights-rca-driver` befindet sich jetzt in der Fehlerprotokollgruppe.
+ Athena-basierte custom/marketplace Konnektoren werden nicht unterstützt.
+ Adobe Marketo Engage, Facebook Ads, Google Ads, Google Analytics 4, Google Sheets, Hubspot, Instagram Ads, Intercom, Jira Cloud, Oracle, Salesforce, Salesforce Marketing Cloud NetSuite, Salesforce Marketing Cloud Account Engagement, SAP,, Slack, Snapchat Ads, Stripe OData ServiceNow, Zendesk und Zoho CRM Connectors werden nicht unterstützt.
+ Benutzerdefinierte log4j-Eigenschaften werden in 5.0 nicht unterstützt. AWS Glue 

### Wesentliche Verbesserungen von Spark 3.3.0 zu Spark 3.5.4
<a name="migrating-version-50-features-spark"></a>

Berücksichtigen Sie die folgenden Verbesserungen:
+ Python-Client für Spark Connect ([SPARK-39375](https://issues.apache.org/jira/browse/SPARK-39375)).
+ Implementierung der Unterstützung von STANDARD-Werten für Spalten in Tabellen ([SPARK-38334](https://issues.apache.org/jira/browse/SPARK-38334)).
+ Unterstützung von „lateralen Alias-Referenz in Spalten“ ([SPARK-27561](https://issues.apache.org/jira/browse/SPARK-27561)).
+ Hardening der SQLSTATE-Nutzung für Fehlerklassen ([SPARK-41994](https://issues.apache.org/jira/browse/SPARK-41994)).
+ Standardmäßige Aktivierung von Bloom-Filter-Joins ([SPARK-38841](https://issues.apache.org/jira/browse/SPARK-38841)).
+ Verbesserte Skalierbarkeit der Spark-Benutzeroberfläche und Treiberstabilität für große Anwendungen ([SPARK-41053](https://issues.apache.org/jira/browse/SPARK-41053)).
+ Asynchrone Fortschrittsverfolgung beim strukturierten Streaming ([SPARK-39591](https://issues.apache.org/jira/browse/SPARK-39591)).
+ Beliebige zustandsbehaftete Python-Verarbeitung beim strukturierten Streaming ([SPARK-40434](https://issues.apache.org/jira/browse/SPARK-40434)).
+ [Verbesserungen der Pandas-API-Abdeckung ([SPARK-42882) und NumPy Eingabeunterstützung in (SPARK-39405](https://issues.apache.org/jira/browse/SPARK-42882)). PySpark ](https://issues.apache.org/jira/browse/SPARK-39405)
+ [Stellen Sie einen Speicherprofiler für benutzerdefinierte Funktionen bereit (SPARK-40281). PySpark ](https://issues.apache.org/jira/browse/SPARK-40281)
+ [Implementieren Sie PyTorch den Verteiler (SPARK-41589).](https://issues.apache.org/jira/browse/SPARK-41589)
+ Veröffentlichung von SBOM-Artefakten ([SPARK-41893](https://issues.apache.org/jira/browse/SPARK-41893)).
+  IPv6Nur-Unterstützungsumgebung ([SPARK-39457](https://issues.apache.org/jira/browse/SPARK-39457)).
+ [Kundenspezifischer K8s-Scheduler (Apache YuniKorn und Volcano) GA (SPARK-42802).](https://issues.apache.org/jira/browse/SPARK-42802)
+ Scala- und Go-Client-Unterstützung in Spark Connect ([SPARK-42554](https://issues.apache.org/jira/browse/SPARK-42554)) und ([SPARK-43351](https://issues.apache.org/jira/browse/SPARK-43351)).
+ PyTorchbasierte verteilte ML-Unterstützung für Spark Connect ([SPARK-42471](https://issues.apache.org/jira/browse/SPARK-42471)).
+ Strukturierte Streaming-Unterstützung für Spark Connect in Python und Scala ([SPARK-42938](https://issues.apache.org/jira/browse/SPARK-42938)).
+ Pandas-API-Unterstützung für den Python Spark Connect Client ([SPARK-42497](https://issues.apache.org/jira/browse/SPARK-42497)).
+ Stellen Sie Arrow Python UDFs ([SPARK-40307](https://issues.apache.org/jira/browse/SPARK-40307)) vor.
+ Unterstützung benutzerdefinierter Python-Tabellenfunktionen ([SPARK-43798](https://issues.apache.org/jira/browse/SPARK-43798)).
+ [Migrieren Sie PySpark Fehler auf Fehlerklassen (SPARK-42986).](https://issues.apache.org/jira/browse/SPARK-42986)
+ PySpark [Testframework (SPARK-44042).](https://issues.apache.org/jira/browse/SPARK-44042)
+ [Unterstützung für HllSketch Datasketches hinzugefügt (SPARK-16484).](https://issues.apache.org/jira/browse/SPARK-16484)
+ Verbesserung der integrierten SQL-Funktion ([SPARK-41231](https://issues.apache.org/jira/browse/SPARK-41231)).
+ IDENTIFIER-Klausel ([SPARK-43205](https://issues.apache.org/jira/browse/SPARK-43205)).
+ Integration von SQL-Funktionen in Scala, Python und R API ([SPARK-43907](https://issues.apache.org/jira/browse/SPARK-43907)).
+ Unterstützung für benannte Argumente für SQL-Funktionen hinzugefügt ([SPARK-43922](https://issues.apache.org/jira/browse/SPARK-43922)).
+ Vermeidung unnötiger Aufgabenwiederholungen auf stillgelegten Executors, die bei der Migration von Shuffle-Daten verloren gehen ([SPARK-41469](https://issues.apache.org/jira/browse/SPARK-41469)).
+ Verteiltes ML <> Spark Connect ([SPARK-42471](https://issues.apache.org/jira/browse/SPARK-42471)).
+ DeepSpeed [Verteiler](https://issues.apache.org/jira/browse/SPARK-44264) (SPARK-44264).
+ Implementierung von Changelog-Checkpoints für den RocksDB-State-Store ([SPARK-43421](https://issues.apache.org/jira/browse/SPARK-43421)).
+ Einführung der Wasserzeichen-Weitergabe zwischen Operatoren ([SPARK-42376](https://issues.apache.org/jira/browse/SPARK-42376)).
+ [Führen Sie dropDuplicatesWithin Watermark (SPARK-42931) ein.](https://issues.apache.org/jira/browse/SPARK-42931)
+ Verbesserungen der Speicherverwaltung des Providers für RocksDB-State-Store ([SPARK-43311](https://issues.apache.org/jira/browse/SPARK-43311)).

## Aktionen zur Migration auf 5.0 AWS Glue
<a name="migrating-version-50-actions"></a>

Ändern Sie bei vorhandenen Aufträgen die `Glue version` von der vorherigen Version auf `Glue 5.0` in der Auftragskonfiguration.
+ Wählen Sie in AWS Glue Studio `Glue 5.0 - Supports Spark 3.5.4, Scala 2, Python 3` in`Glue version`.
+ Wählen Sie in der API **5.0** im `GlueVersion`-Parameter in der [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob)-API-Operation aus.

Wählen Sie für neue Aufträge `Glue 5.0` aus, wenn Sie Aufträge erstellen.
+ Wählen Sie in der Konsole `Spark 3.5.4, Python 3 (Glue Version 5.0) or Spark 3.5.4, Scala 2 (Glue Version 5.0)` in der `Glue version` aus.
+ Wählen Sie in AWS Glue Studio die Option `Glue 5.0 - Supports Spark 3.5.4, Scala 2, Python 3` In`Glue version`.
+ Wählen Sie in der API **5.0** im `GlueVersion`-Parameter in der [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob)-API-Operation aus.

Um Spark-Ereignisprotokolle von AWS Glue 5.0 aus Version AWS Glue 2.0 oder früher anzuzeigen, [starten Sie einen aktualisierten Spark-Verlaufsserver für AWS Glue 5.0 mit CloudFormation oder Docker](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html).

## Checkliste für die Migration
<a name="migrating-version-50-checklist"></a>

Überprüfen Sie diese Checkliste für die Migration:
+ Java-17-Aktualisierungen
+ [Scala] Führen Sie ein Upgrade von AWS SDK-Aufrufen von Version 1 auf Version 2 durch
+ Migration von Python 3.10 auf 3.11
+ [Python] Aktualisierung der Boto-Referenzen von 1.26 auf 1.34

## AWS Glue 5.0-Funktionen
<a name="migrating-version-50-features"></a>

In diesem Abschnitt werden die AWS Glue Funktionen ausführlicher beschrieben.

### Abfragen von Metastore-Datenkatalogen über ETL AWS Glue
<a name="migrating-version-50-features-metastore"></a>

Sie können Ihren AWS Glue Job registrieren, um auf die zuzugreifen AWS Glue Data Catalog, wodurch Tabellen und andere Metastore-Ressourcen unterschiedlichen Benutzern zur Verfügung stehen. Der Datenkatalog unterstützt eine Hierarchie mit mehreren Katalogen, die alle Ihre Daten in Data Lakes von Amazon S3 vereinheitlicht. Er bietet außerdem eine Hive-Metastore-API und eine Open-Source-API von Apache Iceberg für den Datenzugriff. Diese Funktionen sind für AWS Glue und andere datenorientierte Dienste wie Amazon EMR, Amazon Athena und Amazon Redshift verfügbar.

Wenn Sie Ressourcen im Datenkatalog erstellen, können Sie von jeder SQL-Engine aus darauf zugreifen, die die Apache Iceberg REST-API unterstützt. AWS Lake Formation verwaltet Berechtigungen. Nach der Konfiguration können Sie die Funktionen nutzen AWS Glue, um unterschiedliche Daten abzufragen, indem Sie diese Metastore-Ressourcen mit vertrauten Anwendungen abfragen. Dazu gehören Apache Spark und Trino.

#### So werden Metadatenressourcen organisiert
<a name="migrating-version-50-features-metastore-organized"></a>

Die Daten werden in einer logischen Hierarchie von Katalogen, Datenbanken und Tabellen organisiert, wobei Folgendes verwendet wird: AWS Glue Data Catalog
+ Katalog: Ein logischer Container, der Objekte aus einem Datenspeicher wie Schemata oder Tabellen enthält.
+ Datenbank: Organisiert Datenobjekte wie Tabellen und Ansichten in einem Katalog.
+ Tabellen und Ansichten: Datenobjekte in einer Datenbank, die eine Abstraktionsschicht mit einem verständlichen Schema bereitstellen. Sie erleichtern den Zugriff auf zugrunde liegende Daten, die in verschiedenen Formaten und an verschiedenen Orten vorliegen können.

## Migration von AWS Glue 4.0 auf 5.0 AWS Glue
<a name="migrating-version-50-from-40"></a>

Alle bestehenden Jobparameter und wichtigen Funktionen, die in AWS Glue 4.0 vorhanden sind, werden in AWS Glue 5.0 verfügbar sein, mit Ausnahme von Transformationen für maschinelles Lernen.

Folgende neue Parameter wurden hinzugefügt:
+ `--enable-lakeformation-fine-grained-access`: Aktiviert die FGAC-Funktion (Fine-Grained Access Control) in AWS Lake Formation-Tabellen.

Weitere Informationen finden Sie in der Dokumentation zur Spark-Migration:
+ [Migrationshandbuch: Spark Core](https://spark.apache.org/docs/3.5.6/core-migration-guide.html)
+ [Migrationshandbuch: SQL, Datensätze und DataFrame](https://spark.apache.org/docs/3.5.6/sql-migration-guide.html)
+ [Migrationshandbuch: Strukturiertes Streaming](https://spark.apache.org/docs/3.5.6/ss-migration-guide.html)
+ [Wird upgegradet PySpark](https://spark.apache.org/docs/3.5.6/api/python/migration_guide/pyspark_upgrade.html)

## Migration von AWS Glue 3.0 auf 5.0 AWS Glue
<a name="migrating-version-50-from-30"></a>

**Anmerkung**  
Informationen zu Migrationsschritten im Zusammenhang mit AWS Glue 4.0 finden Sie unter[Migration von AWS Glue 3.0 auf 4.0 AWS Glue](migrating-version-40.md#migrating-version-40-from-30).

Alle bestehenden Jobparameter und Hauptfunktionen, die in AWS Glue 3.0 vorhanden sind, werden auch in AWS Glue 5.0 verfügbar sein, mit Ausnahme von Transformationen für maschinelles Lernen.

## Migration von AWS Glue 2.0 auf 5.0 AWS Glue
<a name="migrating-version-50-from-20"></a>

**Anmerkung**  
Migrationsschritte im Zusammenhang mit AWS Glue 4.0 und eine Liste der Migrationsunterschiede zwischen AWS Glue Version 3.0 und 4.0 finden Sie unter[Migration von AWS Glue 3.0 auf 4.0 AWS Glue](migrating-version-40.md#migrating-version-40-from-30).

Beachten Sie auch die folgenden Migrationsunterschiede zwischen den AWS Glue Versionen 3.0 und 2.0:
+ Alle bestehenden Jobparameter und Hauptfunktionen, die in AWS Glue 2.0 vorhanden sind, werden auch in AWS Glue 5.0 verfügbar sein, mit Ausnahme von Transformationen für maschinelles Lernen.
+ Einige Spark-Änderungen allein erfordern möglicherweise eine Überarbeitung Ihrer Skripte, um sicherzustellen, dass entfernte Features nicht referenziert werden. Zum Beispiel aktiviert Spark 3.1.1 und höher Scala-untyped nicht, UDFs aber Spark 2.4 erlaubt sie.
+ Python 2.7 wird nicht unterstützt.
+ Alle zusätzlichen Jar-Dateien, die in bestehenden AWS Glue 2.0-Jobs bereitgestellt wurden, können zu widersprüchlichen Abhängigkeiten führen, da es Upgrades in mehreren Abhängigkeiten gab. Sie können Klassenpfadkonflikte mit dem `--user-jars-first`-Auftragsparameter vermeiden.
+ Änderungen am Verhalten loading/saving von Parquet-Dateien mit Zeitstempel from/to . Weitere Informationen finden Sie unter Upgrade von Spark SQL 3.0 auf 3.1.
+ Unterschiedliche Parallelität der Spark-Tasks für die Konfiguration. driver/executor Sie können die Parallelität von Aufgaben anpassen, indem Sie das Auftragsargument `--executor-cores` übergeben.

## Verhaltensänderungen in 5.0 protokollieren AWS Glue
<a name="enable-continous-logging-changes-glue-50"></a>

 Im Folgenden sind die Änderungen des Protokollierungsverhaltens in AWS Glue 5.0 aufgeführt. Weitere Informationen finden Sie unter [Protokollierung von AWS Glue Aufträgen](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html). 
+  Alle Protokolle (Systemprotokolle, Spark-Daemon-Protokolle, Benutzerprotokolle und Glue-Logger-Protokolle) werden nun standardmäßig in die `/aws-glue/jobs/error`-Protokollgruppe geschrieben. 
+  Die in früheren Versionen für die kontinuierliche Protokollierung verwendete `/aws-glue/jobs/logs-v2`-Protokollgruppe wird nicht mehr verwendet. 
+  Sie können die Namen der Protokollgruppen oder Protokollstreams nicht mehr mit den entfernten Argumenten für die kontinuierliche Protokollierung umbenennen oder anpassen. Sehen Sie sich stattdessen die neuen Job-Argumente in AWS Glue 5.0 an. 

### In AWS Glue 5.0 wurden zwei neue Job-Argumente eingeführt
<a name="enable-continous-logging-new-arguments-glue-50"></a>
+  `––custom-logGroup-prefix`: Ermöglicht es Ihnen, ein benutzerdefiniertes Präfix für die Protokollgruppen `/aws-glue/jobs/error` und `/aws-glue/jobs/output` anzugeben. 
+  `––custom-logStream-prefix`: Ermöglicht es Ihnen, ein benutzerdefiniertes Präfix für die Namen der Protokollstreams innerhalb der Protokollgruppen anzugeben. 

   Zu den Validierungsregeln und Einschränkungen für benutzerdefinierte Präfixe gehört Folgendes: 
  +  Der Name des Protokollstreams muss insgesamt zwischen 1 und 512 Zeichen lang sein. 
  +  Das benutzerdefinierte Präfix für Namen für Protokollstreams ist auf 400 Zeichen begrenzt. 
  +  Zu den zulässigen Zeichen in Präfixen gehören alphanumerische Zeichen, Unterstriche (\$1), Bindestriche (-) und Schrägstriche (/). 

### In 5.0 wurden Argumente für die kontinuierliche Protokollierung nicht mehr unterstützt AWS Glue
<a name="enabling-continuous-logging-deprecated-arguments"></a>

 Die folgenden Job-Argumente für die kontinuierliche Protokollierung sind in 5.0 veraltet AWS Glue 
+  `––enable-continuous-cloudwatch-log` 
+  `––continuous-log-logGroup` 
+  `––continuous-log-logStreamPrefix` 
+  `––continuous-log-conversionPattern` 
+  `––enable-continuous-log-filter` 

## Migration von Konnektoren und JDBC-Treibern für 5.0 AWS Glue
<a name="migrating-version-50-connector-driver-migration"></a>

Die aktualisierten Versionen von JDBC- und Data-Lake-Konnektoren finden Sie unter:
+ [Anhang B: Aktualisierungen von JDBC-Treibern](#migrating-version-50-appendix-jdbc-driver)
+ [Anhang C: Konnektor-Upgrades](#migrating-version-50-appendix-connector)
+ [Anhang D: Verbesserungen des Open-Table-Formats](#migrating-version-50-appendix-open-table-formats)

Die folgenden Änderungen gelten für die Connector- oder Treiberversionen, die in den Anhängen für Glue 5.0 aufgeführt sind.

**Amazon Redshift**  
Beachten Sie folgende Änderungen:
+ Integriert die Unterstützung für dreiteilige Tabellennamen, damit der Connector Redshift-Datenfreigabetabellen abfragen kann.
+ Korrigiert die Zuordnung von Spark `ShortType`, um Redshift `SMALLINT` anstelle von `INTEGER` zu verwenden, um die erwartete Datengröße besser anzupassen.
+ Unterstützung für benutzerdefinierte Clusternamen (CNAME) für Amazon Redshift Serverless hinzugefügt.

**Apache Hudi**  
Beachten Sie folgende Änderungen:
+ Unterstützung für Indexierung auf Datensatzebene.
+ Unterstützung für die automatische Generierung von Datensatzschlüsseln. Sie müssen das Datensatzschlüsselfeld jetzt nicht mehr angeben.

**Apache Iceberg**  
Beachten Sie folgende Änderungen:
+ Support Sie eine feinkörnige Zugriffskontrolle mit. AWS Lake Formation
+ Unterstützt Verzweigen und Markieren, d. h. benannte Verweise auf Snapshots mit eigenen, unabhängigen Lebenszyklen.
+ Ein neues Verfahren zur Änderungsprotokollansicht generiert eine Ansicht, die die Änderungen an einer Tabelle über einen bestimmten Zeitraum oder zwischen bestimmten Snapshots enthält.

**Delta Lake**  
Beachten Sie folgende Änderungen:
+ Support Delta Universal Format (UniForm), das einen nahtlosen Zugriff über Apache Iceberg und Apache Hudi ermöglicht.
+ Support Löschvektoren, die ein Merge-on-Read Paradigma implementieren.

**AzureCosmos**  
Beachten Sie folgende Änderungen:
+ Unterstützung für hierarchische Partitionsschlüssel hinzugefügt.
+ Option hinzugefügt, um ein benutzerdefiniertes Schema mit StringType (rohes JSON) für eine verschachtelte Eigenschaft zu verwenden.
+ Es wurde eine Konfigurationsoption hinzugefügt`spark.cosmos.auth.aad.clientCertPemBase64`, um die Verwendung der SPN-Authentifizierung (ServicePrincipal Name) mit Zertifikat anstelle des geheimen Client-Schlüssels zu ermöglichen.

Weitere Informationen finden Sie im [Änderungsprotokoll des Spark-Connectors von Azure Cosmos DB.](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/cosmos/azure-cosmos-spark_3-2_2-12/CHANGELOG.md)

**Microsoft SQL Server**  
Beachten Sie folgende Änderungen:
+ Die TLS-Verschlüsselung ist standardmäßig aktiviert.
+ Wenn encrypt = false ist, der Server aber Verschlüsselung erfordert, wird das Zertifikat basierend auf der `trustServerCertificate`-Verbindungseinstellung validiert.
+ `aadSecurePrincipalId` und `aadSecurePrincipalSecret` sind veraltet.
+ Die `getAADSecretPrincipalId`-API wurde entfernt.
+ CNAME-Auflösung hinzugefügt, wenn Realm angegeben ist.

**MongoDB**  
Beachten Sie folgende Änderungen:
+ Unterstützung für Micro-Batch-Modus mit strukturiertem Spark-Streaming.
+ Unterstützung für BSON-Datentypen.
+ Unterstützung für das Lesen mehrerer Sammlungen im Micro-Batch- oder kontinuierlichen Streaming-Modus hinzugefügt.
  + Wenn der Name einer in Ihrer `collection`-Konfigurationsoption verwendeten Sammlung ein Komma enthält, behandelt der Spark-Connector diese als zwei verschiedene Sammlungen. Um dies zu vermeiden, müssen Sie dem Komma einen Backslash (\$1) voranstellen.
  + Wenn der Name einer in Ihrer `collection`-Konfigurationsoption verwendeten Sammlung „\$1“ ist, interpretiert der Spark-Connector dies als Anweisung zum Scannen aller Sammlungen. Um dies zu vermeiden, müssen Sie dem Sternchen einen Backslash (\$1) voranstellen.
  + Wenn der Name einer in Ihrer `collection`-Konfigurationsoption verwendeten Sammlung einen Backslash (\$1) enthält, behandelt der Spark-Connector diesen als Escape-Zeichen. Dies kann die Interpretation des Werts ändern. Um dies zu vermeiden, müssen Sie dem Backslash einen weiteren Backslash voranstellen.

Weitere Informationen finden Sie in den [Versionshinweisen zum MongoDB-Connector für Spark](https://www.mongodb.com/docs/spark-connector/current/release-notes/).

**Snowflake**  
Beachten Sie folgende Änderungen:
+ Ein neuer `trim_space`-Parameter wurde eingeführt, mit dem Sie Werte von `StringType`-Spalten beim Speichern in einer Snowflake-Tabelle automatisch kürzen können. Standard: `false`.
+ Der `abort_detached_query`-Parameter wurde standardmäßig auf Sitzungsebene deaktiviert.
+ Die Anforderung des `SFUSER`-Parameters bei Verwendung von OAUTH wurde entfernt.
+ Das Feature „Erweiterter Abfrage-Pushdown“ wurde entfernt. Es sind Alternativen zu diesem Feature verfügbar. Anstatt Daten aus Snowflake-Tabellen zu laden, können Benutzer beispielsweise Daten direkt aus Snowflake-SQL-Abfragen laden.

Weitere Informationen finden Sie in den [Versionshinweisen zum Snowflake-Connector für Spark](https://docs.snowflake.com/en/release-notes/clients-drivers/spark-connector-2024).

### Anhang A: Nennenswerte Aktualisierungen von Abhängigkeiten
<a name="migrating-version-50-appendix-dependencies"></a>

Im Folgenden sind Abhängigkeits-Upgrades aufgeführt:


| -Abhängigkeit | Version in 5.0 AWS Glue  | Version in AWS Glue 4.0 | Version in AWS Glue 3.0 | Version in AWS Glue 2.0 | Version in AWS Glue 1.0 | 
| --- | --- | --- | --- | --- | --- | 
| Java | 17 | 8 | 8 | 8 | 8 | 
| Spark | 3.5.4 | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 3.4.1 | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 | 
| Scala | 2.12,18 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Jackson | 2.15,2 | 2.12 | 2.12 | 2.11 | 2.11 | 
| Hive | 2.3.9-amzn-4 | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 2,69,0 | 2,54,0 | 2,46,0 | 2.38.0 | 2.30.0 | 
| JSON4s | 3.7.0-M11 | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x | 
| Arrow | 12.0.1 | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS Glue Datenkatalog-Client | 4.5.0 | 3.7.0 | 3.0.0 | 1.10.0 | – | 
| AWS SDK for Java | 2.29.52 | 1.12 | 1.12 |  |  | 
| Python | 3,11 | 3,10 | 3.7 | 2.7 und 3.6 | 2.7 und 3.6 | 
| Boto | 1,34,131 | 1,26 | 1,18 | 1.12 | – | 
| EMR-DynamoDB-Connector | 5.6.0 | 4,16.0 |  |  |  | 

### Anhang B: Aktualisierungen von JDBC-Treibern
<a name="migrating-version-50-appendix-jdbc-driver"></a>

Die folgenden JDBC-Treiber-Upgrades sind:


| Treiber | JDBC-Treiberversion in 5.0 AWS Glue  | JDBC-Treiberversion in 4.0 AWS Glue  | JDBC-Treiberversion in 3.0 AWS Glue  | JDBC-Treiberversion in früheren Versionen AWS Glue  | 
| --- | --- | --- | --- | --- | 
| MySQL | 8.0.33 | 8.0.23 | 8.0.23 | 5.1 | 
| Microsoft SQL Server | 10.2,0 | 9.4,0 | 7.0.0 | 6.1.0 | 
| Oracle-Datenbanken | 23.3.0.23,09 | 21,7 | 21,1 | 11.2 | 
| PostgreSQL | 42,7,3 | 42,3,6 | 42,2,18 | 42,10 | 
| Amazon Redshift |  redshift-jdbc42-2.1.0.29  |  redshift-jdbc42-2.1.0.16  |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc41-1.2.12.1017   | 
| SAP HANA | 2,20,17 | 2.17,12 |  |  | 
| Teradata | 20,00,00,33 | 20.00.00.06 |  |  | 

### Anhang C: Konnektor-Upgrades
<a name="migrating-version-50-appendix-connector"></a>

Im Folgenden sind Konnektor-Upgrades aufgeführt:


| Treiber | Connector-Version in 5.0 AWS Glue  | Connector-Version in AWS Glue 4.0 | Connector-Version in AWS Glue 3.0 | 
| --- | --- | --- | --- | 
| EMR-DynamoDB-Connector | 5.6.0 | 4.16.0 |  | 
| Amazon Redshift | 6.4.0 | 6.1.3 |  | 
| OpenSearch | 1.2.0 | 1.0.1 |  | 
| MongoDB | 10.3.0 | 10.0.4 | 3.0.0 | 
| Snowflake | 3.0.0 | 2.12.0 |  | 
| Google BigQuery | 0,32,2 | 0,32,2 |  | 
| AzureCosmos | 4,33,0 | 4,22,0 |  | 
| AzureSQL | 1.3.0 | 1.3.0 |  | 
| Vertica | 3.3.5 | 3.3.5 |  | 

### Anhang D: Verbesserungen des Open-Table-Formats
<a name="migrating-version-50-appendix-open-table-formats"></a>

Im Folgenden finden Sie die Verbesserungen des Open-Table-Formats:


| OTF | Connector-Version in 5.0 AWS Glue  | Connector-Version in AWS Glue 4.0 | Connector-Version in AWS Glue 3.0 | 
| --- | --- | --- | --- | 
| Hudi | 0.15.0 | 0.12.1 | 0.10.1 | 
| Delta Lake | 3.3.0 | 2.1.0 | 1.0.0 | 
| Iceberg | 1.7.1 | 1.0.0 | 0.13.1 | 

# Migration AWS Glue für Spark-Jobs auf AWS Glue Version 4.0
<a name="migrating-version-40"></a>

In diesem Thema werden die Änderungen zwischen den AWS Glue Versionen 0.9, 1.0, 2.0 und 3.0 beschrieben, die es Ihnen ermöglichen, Ihre Spark-Anwendungen und ETL-Jobs auf AWS Glue 4.0 zu migrieren. Außerdem werden die Funktionen von AWS Glue 4.0 und die Vorteile ihrer Verwendung beschrieben. 

Um diese Funktion mit Ihren AWS Glue ETL-Jobs zu verwenden, wählen Sie **4.0** `Glue version` bei der Erstellung Ihrer Jobs die Option.

**Topics**
+ [Neue unterstützte Features](#migrating-version-40-features)
+ [Aktionen zur Migration auf 4.0 AWS Glue](#migrating-version-40-actions)
+ [Checkliste für die Migration](#migrating-version-40-checklist)
+ [Migration von AWS Glue 3.0 auf 4.0 AWS Glue](#migrating-version-40-from-30)
+ [Migration von 2.0 auf 4.0 AWS Glue AWS Glue](#migrating-version-40-from-20)
+ [Migration von AWS Glue 1.0 auf 4.0 AWS Glue](#migrating-version-40-from-10)
+ [Migration von AWS Glue 0.9 auf 4.0 AWS Glue](#migrating-version-40-from-09)
+ [Migration von Connector und JDBC-Treibern für 4.0 AWS Glue](#migrating-version-40-connector-driver-migration)
+ [Anhang A: Nennenswerte Aktualisierungen von Abhängigkeiten](#migrating-version-40-appendix-dependencies)
+ [Anhang B: Aktualisierungen von JDBC-Treibern](#migrating-version-40-appendix-jdbc-driver)
+ [Anhang C: Konnektor-Upgrades](#migrating-version-40-appendix-connector)

## Neue unterstützte Features
<a name="migrating-version-40-features"></a>

In diesem Abschnitt werden die neuen Funktionen und Vorteile von AWS Glue Version 4.0 beschrieben.
+ Es basiert auf Apache Spark 3.3.0, enthält jedoch Optimierungen in AWS Glue und Amazon EMR, wie z. B. adaptive Abfrageläufe, vektorisierte Lesegeräte und optimierte Shuffles und Partitionszusammenführung. 
+ Aktualisierte JDBC-Treiber für alle AWS Glue nativen Quellen, einschließlich MySQL, Microsoft SQL Server, Oracle, PostgreSQL, MongoDB, und aktualisierte Spark-Bibliotheken und -Abhängigkeiten, die mit Spark 3.3.0 eingeführt wurden.
+ Aktualisiert mit einem neuen Amazon-Redshift-Konnektor und JDBC-Treiber.
+ Optimierter Amazon-S3-Zugriff mit aktualisiertem EMR File System (EMRFS, EMR-Dateisystem) und standardmäßig aktivierten Amazon-S3-optimierten Ausgabe-Committern.
+ Optimierter Data-Catalog-Zugriff mit Partitionsindizes, Pushdown-Prädikaten, Partitionsauflistung und einem aktualisierten Hive-Metastore-Client.
+ Integration mit Lake Formation für kontrollierte Katalogtabellen mit Filterung auf Zellenebene und Data-Lake-Transaktionen.
+ Verringerte Startlatenz zur Verbesserung der Gesamtzeiten für die Auftragserfüllung und Interaktivität.
+ Spark-Aufträge werden in 1-Sekunden-Schritten mit einer zehnmal geringeren Mindestabrechnungsdauer abgerechnet – von mindestens 10 Minuten bis zu mindestens 1 Minute.
+ Native Unterstützung für Open-Data-Lake-Frameworks mit Apache Hudi, Delta Lake und Apache Iceberg.
+ Native Unterstützung für das Amazon-S3-basierte Cloud-Shuffle-Speicher-Plugin (ein Apache-Spark-Plugin) zur Verwendung von Amazon S3 für Shuffling und elastische Speicherkapazität.

**Wesentliche Verbesserungen von Spark 3.1.1 zu Spark 3.3.0**  
Berücksichtigen Sie die folgenden Verbesserungen:
+ Laufzeitfilterung auf Zeilenebene ([SPARK-32268](https://issues.apache.org/jira/browse/SPARK-32268)).
+ ANSI-Verbesserungen ([SPARK-38860](https://issues.apache.org/jira/browse/SPARK-38860)).
+ Verbesserungen der Fehlermeldungen ([SPARK-38781](https://issues.apache.org/jira/browse/SPARK-38781)).
+ Unterstützung komplexer Typen für den vektorisierten Parquet-Reader ([SPARK-34863](https://issues.apache.org/jira/browse/SPARK-34863)).
+ Unterstützung für versteckte Dateimetadaten für Spark SQL ([SPARK-37273](https://issues.apache.org/jira/browse/SPARK-37273)).
+ [Stellen Sie einen Profiler für (SPARK-37443) bereit. Python/Pandas UDFs ](https://issues.apache.org/jira/browse/SPARK-37443)
+ Führen Sie den Trigger ein. AvailableNow [zum Ausführen von Streaming-Abfragen wie Trigger.Once in mehreren Batches (SPARK-36533).](https://issues.apache.org/jira/browse/SPARK-36533)
+ Umfassendere Datasource-V2-Pushdown-Funktionen ([SPARK-38788](https://issues.apache.org/jira/browse/SPARK-38788)).
+ Migration von log4j1 zu log4j2 ([SPARK-37814](https://issues.apache.org/jira/browse/SPARK-37814)).

**Weitere nennenswerte Änderungen**  
Beachten Sie folgende Änderungen:
+ Abwärtskompatible Änderungen
  + Löschen Sie Verweise auf die Unterstützung von Python 3.6 in den Dokumenten und Python/docs ([SPARK-36977](https://issues.apache.org/jira/browse/SPARK-36977)).
  + Entfernen Sie den benannten Tuple-Hack, indem Sie das integrierte Pickle durch Cloudpickle ersetzen ([SPARK-32079](https://issues.apache.org/jira/browse/SPARK-32079)).
  + Erhöhen Sie die Mindestversion von Pandas auf 1.0.5 ([SPARK-37465](https://issues.apache.org/jira/browse/SPARK-37465)).

## Aktionen zur Migration auf 4.0 AWS Glue
<a name="migrating-version-40-actions"></a>

Ändern Sie bei vorhandenen Aufträgen die `Glue version` von der vorherigen Version auf `Glue 4.0` in der Auftragskonfiguration.
+ Wählen Sie in AWS Glue Studio `Glue 4.0 - Supports Spark 3.3, Scala 2, Python 3` in`Glue version`.
+ Wählen Sie in der API **4.0** im `GlueVersion`-Parameter in der [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-UpdateJob)-API-Operation aus.

Wählen Sie für neue Aufträge `Glue 4.0` aus, wenn Sie Aufträge erstellen.
+ Wählen Sie in der Konsole `Spark 3.3, Python 3 (Glue Version 4.0) or Spark 3.3, Scala 2 (Glue Version 3.0)` in der `Glue version` aus.
+ Wählen Sie in AWS Glue Studio `Glue 4.0 - Supports Spark 3.3, Scala 2, Python 3` in`Glue version`.
+ Wählen Sie in der API **4.0** im `GlueVersion`-Parameter in der [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-job.html#aws-glue-api-jobs-job-CreateJob)-API-Operation aus.

Um Spark-Ereignisprotokolle von AWS Glue 4.0 aus Version AWS Glue 2.0 oder früher anzuzeigen, [starten Sie einen aktualisierten Spark-Verlaufsserver für AWS Glue 4.0 mithilfe von CloudFormation oder Docker](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui-history.html).

## Checkliste für die Migration
<a name="migrating-version-40-checklist"></a>
+ Sind die externen Python-Bibliotheken Ihres Auftrags von Python 2.7/3.6 abhängig?
  + Aktualisieren Sie die abhängigen Bibliotheken von Python 2.7/3.6 auf Python 3.10, da Spark 3.3.0 die Unterstützung für Python 2.7 und 3.6 vollständig entfernt hat.

## Migration von AWS Glue 3.0 auf 4.0 AWS Glue
<a name="migrating-version-40-from-30"></a>

Beachten Sie die folgenden Änderungen bei der Migration:
+ Alle bestehenden Jobparameter und Hauptfunktionen, die in AWS Glue 3.0 vorhanden sind, werden auch in AWS Glue 4.0 verfügbar sein.
+ AWS Glue 3.0 verwendet Amazon EMR-optimiertes Spark 3.1.1 und AWS Glue 4.0 verwendet Amazon EMR-optimiertes Spark 3.3.0.

  Einige Spark-Änderungen allein erfordern möglicherweise eine Überarbeitung Ihrer Skripts, um sicherzustellen, dass auf entfernte Features nicht verwiesen wird.
+ AWS Glue 4.0 beinhaltet auch ein Update für EMRFS und Hadoop. Informationen über die jeweilige Version finden Sie unter [Anhang A: Nennenswerte Aktualisierungen von Abhängigkeiten](#migrating-version-40-appendix-dependencies).
+ Das in ETL-Jobs bereitgestellte AWS SDK wurde jetzt von 1.11 auf 1.12 aktualisiert.
+ Alle Python-Aufträge werden Python-Version 3.10 verwenden. Zuvor wurde Python 3.7 in AWS Glue 3.0 verwendet.

  Infolgedessen wurden einige mitgelieferte AWS Glue Pymodule out-of-the-box aktualisiert.
+ Log4j wurde auf Log4j2 aktualisiert.
  + Informationen zum Log4j2-Migrationspfad finden Sie in der [Log4j-Dokumentation](https://logging.apache.org/log4j/2.x/manual/migration.html#Log4j2API).
  + Sie müssen stattdessen jede benutzerdefinierte log4j.properties-Datei in eine log4j2.properties-Datei mit den entsprechenden log4j2-Eigenschaften umbenennen.
+ Informationen zur Migration bestimmter Konnektoren finden Sie unter [Migration von Connector und JDBC-Treibern für 4.0 AWS Glue](#migrating-version-40-connector-driver-migration).
+ Das AWS Encryption SDK wurde von 1.x auf 2.x aktualisiert. AWS Glue Jobs, die AWS Glue Sicherheitskonfigurationen verwenden, und Jobs, die von der in Runtime bereitgestellten AWS Encryption SDK-Abhängigkeit abhängig sind, sind betroffen. Weitere Informationen finden Sie in den Anweisungen zur AWS Glue Jobmigration.

  Sie können einen AWS Glue 2.0/3.0-Job problemlos auf einen AWS Glue 4.0-Job aktualisieren, da AWS Glue 2.0/3.0 bereits die Bridge-Version des AWS Encryption SDK enthält.

Weitere Informationen finden Sie in der Dokumentation zur Spark-Migration:
+ [Upgrade von Spark SQL 3.1 auf 3.2](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-31-to-32)
+ [Upgrade von Spark SQL 3.2 auf 3.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-32-to-33)

## Migration von 2.0 auf 4.0 AWS Glue AWS Glue
<a name="migrating-version-40-from-20"></a>

Beachten Sie die folgenden Änderungen bei der Migration:

**Anmerkung**  
Informationen zu Migrationsschritten im Zusammenhang mit AWS Glue 3.0 finden Sie unter[Migration von AWS Glue 3.0 auf 4.0 AWS Glue](#migrating-version-40-from-30).
+ Alle bestehenden Jobparameter und Hauptfunktionen, die es in AWS Glue 2.0 gibt, werden auch in AWS Glue 4.0 verfügbar sein.
+ Der EMRFS S3-optimierte Committer zum Schreiben von Parquet-Daten in Amazon S3 ist seit 3.0 standardmäßig aktiviert. AWS Glue Sie können ihn jedoch nach wie vor deaktivieren, indem Sie `--enable-s3-parquet-optimized-committer` auf `false` einstellen.
+ AWS Glue 2.0 verwendet Open-Source-Spark 2.4 und AWS Glue 4.0 verwendet Amazon EMR-optimiertes Spark 3.3.0.
  + Einige Spark-Änderungen allein erfordern möglicherweise eine Überarbeitung Ihrer Skripts, um sicherzustellen, dass auf entfernte Features nicht verwiesen wird.
  + Zum Beispiel aktiviert Spark 3.3.0 UDFs Scala-untyped nicht, aber Spark 2.4 erlaubt sie.
+ Das in ETL-Jobs bereitgestellte AWS SDK wurde jetzt von 1.11 auf 1.12 aktualisiert.
+ AWS Glue 4.0 beinhaltet außerdem ein Update für EMRFS, aktualisierte JDBC-Treiber und zusätzliche Optimierungen für Spark selbst, bereitgestellt von. AWS Glue
+ Scala wurde von 2.11 auf 2.12 aktualisiert und Scala 2.12 ist nicht abwärtskompatibel mit Scala 2.11.
+ Python 3.10 ist die Standardversion, die für Python-Skripte verwendet wird, da AWS Glue  2.0 nur Python 3.7 und 2.7 verwendet hat.
  + Python 2.7 wird mit Spark 3.3.0 nicht unterstützt. Jeder Job, der Python 2 in der Jobkonfiguration anfordert, schlägt mit einem fehl IllegalArgumentException.
  + Ein neuer Mechanismus zur Installation zusätzlicher Python-Module ist seit AWS Glue 2.0 verfügbar.
+ Mehrere Abhängigkeitsaktualisierungen, hervorgehoben in [Anhang A: Nennenswerte Aktualisierungen von Abhängigkeiten](#migrating-version-40-appendix-dependencies).
+ Alle zusätzlichen JAR-Dateien, die in bestehenden AWS Glue 2.0-Jobs bereitgestellt werden, können zu widersprüchlichen Abhängigkeiten führen, da es in 4.0 von 2.0 Upgrades in mehreren Abhängigkeiten gab. Mit dem Job-Parameter können Sie Klassenpfadkonflikte in AWS Glue 4.0 vermeiden. `--user-jars-first` AWS Glue 
+ AWS Glue 4.0 verwendet Spark 3.3. Ab Spark 3.1 gab es eine Änderung im Verhalten loading/saving von Parquet-Dateien mit from/to Zeitstempeln. Weitere Informationen finden Sie unter [Upgrade von Spark SQL 3.0 auf 3.1](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-30-to-31).

  Wir empfehlen, die folgenden Parameter festzulegen, wenn reading/writing Sie Daten speichern, die Zeitstempelspalten enthalten. Durch die Einstellung dieser Parameter kann das Problem mit der Kalenderinkompatibilität behoben werden, das beim Upgrade von Spark 2 auf Spark 3 sowohl für den AWS Glue Dynamic Frame als auch für den Spark Data Frame auftritt. Verwenden Sie die Option CORRECTED, um den Datetime-Wert so zu lesen, wie er ist, und die LEGACY-Option, um die Datetime-Werte im Hinblick auf die Kalenderdifferenz während des Lesens neu zu basieren.

  ```
  - Key: --conf
  - Value: spark.sql.legacy.parquet.int96RebaseModeInRead=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.int96RebaseModeInWrite=[CORRECTED|LEGACY] --conf spark.sql.legacy.parquet.datetimeRebaseModeInRead=[CORRECTED|LEGACY]
  ```
+ Informationen zur Migration bestimmter Konnektoren finden Sie unter [Migration von Connector und JDBC-Treibern für 4.0 AWS Glue](#migrating-version-40-connector-driver-migration).
+ Das AWS Encryption SDK wurde von 1.x auf 2.x aktualisiert. AWS Glue Jobs, die AWS Glue Sicherheitskonfigurationen verwenden, und Jobs, die von der in Runtime bereitgestellten AWS Encryption SDK-Abhängigkeit abhängig sind, sind betroffen. Sehen Sie sich diese Anweisungen für die AWS Glue Job-Migration an:
  + Sie können einen AWS Glue 2.0-Job problemlos auf einen AWS Glue 4.0-Job aktualisieren, da AWS Glue 2.0 bereits die Bridge-Version des AWS Encryption SDK enthält.

Weitere Informationen finden Sie in der Dokumentation zur Spark-Migration:
+ [Upgrade von Spark SQL 2.4 auf 3.0](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-24-to-30)
+ [Upgrade von Spark SQL 3.1 auf 3.2](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-31-to-32)
+ [Upgrade von Spark SQL 3.2 auf 3.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-32-to-33)
+ [Änderungen im Datetime-Verhalten sind ab Spark 3.0 zu erwarten.](https://issues.apache.org/jira/browse/SPARK-31408)

## Migration von AWS Glue 1.0 auf 4.0 AWS Glue
<a name="migrating-version-40-from-10"></a>

Beachten Sie die folgenden Änderungen bei der Migration:
+ AWS Glue 1.0 verwendet Open-Source-Spark 2.4 und AWS Glue 4.0 verwendet Amazon EMR-optimiertes Spark 3.3.0.
  + Einige Spark-Änderungen allein erfordern möglicherweise eine Überarbeitung Ihrer Skripts, um sicherzustellen, dass auf entfernte Features nicht verwiesen wird.
  + Zum Beispiel aktiviert Spark 3.3.0 UDFs Scala-untyped nicht, aber Spark 2.4 erlaubt sie.
+ Alle Jobs in AWS Glue 4.0 werden mit deutlich verbesserten Startzeiten ausgeführt. Spark-Aufträge werden in 1-Sekunden-Schritten mit einer 10-fach niedrigeren Mindestabrechnungsdauer in Rechnung gestellt, da die Startlatenz von maximal 10 Minuten zu maximal 1 Minute reicht.
+ Das Protokollierungsverhalten hat sich in AWS Glue Version 4.0 erheblich geändert. Für Spark 3.3.0 ist die Mindestanforderung Log4j2 erforderlich.
+ Mehrere Abhängigkeitsaktualisierungen, hervorgehoben im Anhang.
+ Scala wurde von 2.11 auf 2.12 aktualisiert und Scala 2.12 ist nicht abwärtskompatibel mit Scala 2.11.
+ Python 3.10 ist auch die Standardversion für Python-Skripte, da AWS Glue  0.9 nur Python 2 verwendet hat.

  Python 2.7 wird mit Spark 3.3.0 nicht unterstützt. Jeder Job, der Python 2 in der Jobkonfiguration anfordert, schlägt mit einem fehl IllegalArgumentException.
+ Ein neuer Mechanismus zur Installation zusätzlicher Python-Module über Pip ist seit AWS Glue 2.0 verfügbar. Weitere Informationen finden Sie unter [Installieren zusätzlicher Python-Module mit Pip in AWS Glue  2.0\$1](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-libraries.html#addl-python-modules-support).
+ AWS Glue 4.0 läuft nicht auf Apache YARN, daher gelten die YARN-Einstellungen nicht.
+ AWS Glue 4.0 hat kein Hadoop Distributed File System (HDFS).
+ Alle zusätzlichen JAR-Dateien, die in bestehenden AWS Glue 1.0-Jobs bereitgestellt werden, können zu widersprüchlichen Abhängigkeiten führen, da es in 4.0 Upgrades von 1.0 in mehreren Abhängigkeiten gab. Wir aktivieren AWS Glue 4.0 standardmäßig mit dem `--user-jars-first` AWS Glue Job-Parameter, um dieses Problem zu vermeiden.
+ AWS Glue 4.0 unterstützt Auto Scaling. Daher ist die ExecutorAllocationManager Metrik verfügbar, wenn Auto Scaling aktiviert ist.
+ In Jobs der AWS Glue Version 4.0 geben Sie die Anzahl der Worker und den Workertyp an, aber keinen`maxCapacity`.
+ AWS Glue 4.0 unterstützt noch keine Transformationen für maschinelles Lernen.
+ Informationen zur Migration bestimmter Konnektoren finden Sie unter [Migration von Connector und JDBC-Treibern für 4.0 AWS Glue](#migrating-version-40-connector-driver-migration).
+ Das AWS Encryption SDK wurde von 1.x auf 2.x aktualisiert. AWS Glue Jobs, die AWS Glue Sicherheitskonfigurationen verwenden, und Jobs, die von der in Runtime bereitgestellten AWS Encryption SDK-Abhängigkeit abhängig sind, sind betroffen. Informationen zur AWS Glue Job-Migration finden Sie in diesen Anweisungen.
  + Sie können einen AWS Glue 0.9/1.0-Job nicht direkt auf einen AWS Glue 4.0-Job migrieren. Dies liegt daran, dass das Encryption SDK bei einem direkten Upgrade auf Version 2.x oder höher und bei sofortiger Aktivierung aller neuen Funktionen nicht in der Lage sein wird, den in früheren Versionen des AWS Encryption SDK verschlüsselten Chiffretext zu entschlüsseln. AWS 
  + Für ein sicheres Upgrade empfehlen wir zunächst, zu einem AWS Glue 2.0/3.0-Job zu migrieren, der die Bridge-Version des Encryption SDK enthält. AWS Führen Sie den Job einmal aus, um die AWS Encryption SDK Bridge-Version zu verwenden.
  + Nach Abschluss können Sie den AWS Glue 2.0/3.0-Job sicher auf AWS Glue 4.0 migrieren.

Weitere Informationen finden Sie in der Dokumentation zur Spark-Migration:
+ [Upgrade von Spark SQL 2.4 auf 3.0](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-24-to-30)
+ [Upgrade von Spark SQL 3.0 auf 3.1](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-30-to-31)
+ [Upgrade von Spark SQL 3.1 auf 3.2](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-31-to-32)
+ [Upgrade von Spark SQL 3.2 auf 3.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-32-to-33)
+ [Änderungen im Datetime-Verhalten sind ab Spark 3.0 zu erwarten.](https://issues.apache.org/jira/browse/SPARK-31408)

## Migration von AWS Glue 0.9 auf 4.0 AWS Glue
<a name="migrating-version-40-from-09"></a>

Beachten Sie die folgenden Änderungen bei der Migration:
+ AWS Glue 0.9 verwendet Open-Source-Spark 2.2.1 und AWS Glue 4.0 verwendet Amazon EMR-optimiertes Spark 3.3.0.
  + Einige Spark-Änderungen allein erfordern möglicherweise eine Überarbeitung Ihrer Skripts, um sicherzustellen, dass auf entfernte Features nicht verwiesen wird.
  + Zum Beispiel aktiviert Spark 3.3.0 UDFs Scala-untyped nicht, aber Spark 2.2 erlaubt sie.
+ Alle Jobs in AWS Glue 4.0 werden mit deutlich verbesserten Startzeiten ausgeführt. Spark-Aufträge werden in 1-Sekunden-Schritten mit einer 10-mal geringeren Mindestabrechnungsdauer abgerechnet, da die Startlatenz von maximal 10 Minuten auf maximal 1 Minute sinkt.
+ Das Protokollierungsverhalten hat sich seit AWS Glue 4.0 erheblich geändert. Für Spark 3.3.0 ist, wie hier erwähnt, eine Mindestanforderung von Log4j2 erforderlich (https://spark.apache.org/docs/latest/core-migration-guide.html\$1 -32-to-33). upgrading-from-core
+ Mehrere Abhängigkeitsaktualisierungen, hervorgehoben im Anhang.
+ Scala wurde von 2.11 auf 2.12 aktualisiert und Scala 2.12 ist nicht abwärtskompatibel mit Scala 2.11.
+ Python 3.10 ist auch die Standardversion für Python-Skripte, da AWS Glue  0.9 nur Python 2 verwendet hat.
  + Python 2.7 wird mit Spark 3.3.0 nicht unterstützt. Jeder Job, der Python 2 in der Jobkonfiguration anfordert, schlägt mit einem fehl IllegalArgumentException.
  + Ein neuer Mechanismus zum Installieren zusätzlicher Python-Module über Pip ist verfügbar.
+ AWS Glue 4.0 läuft nicht auf Apache YARN, daher gelten die YARN-Einstellungen nicht.
+ AWS Glue 4.0 hat kein Hadoop Distributed File System (HDFS).
+ Alle zusätzlichen JAR-Dateien, die in bestehenden AWS Glue 0.9-Aufträgen bereitgestellt werden, können zu widersprüchlichen Abhängigkeiten führen, da es in 3.0 Upgrades von 0.9 in mehreren Abhängigkeiten gab. Mit dem Job-Parameter können Sie Klassenpfadkonflikte in AWS Glue 3.0 vermeiden. `--user-jars-first` AWS Glue 
+ AWS Glue 4.0 unterstützt Auto Scaling. Daher ist die ExecutorAllocationManager Metrik verfügbar, wenn Auto Scaling aktiviert ist.
+ In Jobs der AWS Glue Version 4.0 geben Sie die Anzahl der Worker und den Workertyp an, aber keinen`maxCapacity`.
+ AWS Glue 4.0 unterstützt noch keine Transformationen für maschinelles Lernen.
+ Informationen zur Migration bestimmter Konnektoren finden Sie unter [Migration von Connector und JDBC-Treibern für 4.0 AWS Glue](#migrating-version-40-connector-driver-migration).
+ Das AWS Encryption SDK wurde von 1.x auf 2.x aktualisiert. AWS Glue Jobs, die AWS Glue Sicherheitskonfigurationen verwenden, und Jobs, die von der in Runtime bereitgestellten AWS Encryption SDK-Abhängigkeit abhängig sind, sind betroffen. Informationen zur AWS Glue Job-Migration finden Sie in diesen Anweisungen.
  + Sie können einen AWS Glue 0.9/1.0-Job nicht direkt auf einen AWS Glue 4.0-Job migrieren. Dies liegt daran, dass das Encryption SDK bei einem direkten Upgrade auf Version 2.x oder höher und bei sofortiger Aktivierung aller neuen Funktionen nicht in der Lage sein wird, den in früheren Versionen des AWS Encryption SDK verschlüsselten Chiffretext zu entschlüsseln. AWS 
  + Für ein sicheres Upgrade empfehlen wir zunächst, zu einem AWS Glue 2.0/3.0-Job zu migrieren, der die Bridge-Version des Encryption SDK enthält. AWS Führen Sie den Job einmal aus, um die AWS Encryption SDK Bridge-Version zu verwenden.
  + Nach Abschluss können Sie den AWS Glue 2.0/3.0-Job sicher auf AWS Glue 4.0 migrieren.

Weitere Informationen finden Sie in der Dokumentation zur Spark-Migration:
+ [Upgrade von Spark SQL 2.2 auf 2.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-22-to-23)
+ [Upgrade von Spark SQL 2.3 auf 2.4](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-23-to-24)
+ [Upgrade von Spark SQL 2.4 auf 3.0](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-24-to-30)
+ [Upgrade von Spark SQL 3.0 auf 3.1](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-30-to-31)
+ [Upgrade von Spark SQL 3.1 auf 3.2](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-31-to-32)
+ [Upgrade von Spark SQL 3.2 auf 3.3](https://spark.apache.org/docs/latest/sql-migration-guide.html#upgrading-from-spark-sql-32-to-33)
+ [Änderungen im Datetime-Verhalten sind ab Spark 3.0 zu erwarten.](https://issues.apache.org/jira/browse/SPARK-31408)

## Migration von Connector und JDBC-Treibern für 4.0 AWS Glue
<a name="migrating-version-40-connector-driver-migration"></a>

Die aktualisierten Versionen von JDBC- und Data-Lake-Konnektoren finden Sie unter:
+ [Anhang B: Aktualisierungen von JDBC-Treibern](#migrating-version-40-appendix-jdbc-driver)
+ [Anhang C: Konnektor-Upgrades](#migrating-version-40-appendix-connector)

### Hudi
<a name="migrating-version-40-connector-driver-migration-hudi"></a>
+ Verbesserungen der Spark-SQL-Unterstützung:
  + Durch den `Call Procedure`-Befehl wird Unterstützung für Upgrade, Downgrade, Bootstrap, Bereinigung und Reparatur hinzugefügt. Die `Create/Drop/Show/Refresh Index`-Syntax ist in Spark SQL möglich.
  + Eine Leistungslücke zwischen der Nutzung über Spark und über DataSource Spark-SQL wurde geschlossen. Datenquellenschreibvorgänge waren in der Vergangenheit schneller als SQL.
  + Alle integrierten Schlüsselgeneratoren implementieren leistungsfähigere Spark-spezifische API-Operationen.
  + Die UDF-Transformation im `insert` Massenvorgang wurde durch RDD-Transformationen ersetzt, um die Nutzungskosten zu senken. SerDe
  + Spark SQL mit Hudi erfordert die Angabe eines `primaryKey` durch `tblproperites` oder Optionen in der SQL-Anweisung. Für Aktualisierungs- und Löschvorgänge ist das `preCombineField` ebenfalls erforderlich.
+ Jede Hudi-Tabelle, die vor Version 0.10.0 ohne ein `primaryKey` erstellt wurde, muss seit Version 0.10.0 mit einem `primaryKey`-Feld neu erstellt werden.

### PostgreSQL
<a name="migrating-version-40-connector-driver-migration-postgresql"></a>
+ Es wurden mehrere Sicherheitslücken (CVEs) behoben.
+ Java 8 wird nativ unterstützt.
+ Wenn der Auftrag mit Ausnahme von Byte-Arrays Arrays von Arrays verwendet, kann dieses Szenario als mehrdimensionale Arrays behandelt werden.

### MongoDB
<a name="migrating-version-40-connector-driver-migration-mongodb"></a>
+ Der aktuelle MongoDB-Konnektor unterstützt Spark-Version 3.1 oder höher und MongoDB-Version 4.0 oder höher.
+ Aufgrund des Konnektor-Upgrades haben sich einige Eigenschaftsnamen geändert. Beispielsweise wurde der URI-Eigenschaftsname in `connection.uri` geändert. Weitere Informationen zu den aktuellen Optionen finden Sie im [Blog zu MongoDB-Spark-Konnektor](https://www.mongodb.com/docs/spark-connector/current/configuration/).
+ Die Verwendung von MongoDB 4.0, das von Amazon DocumentDB gehostet wird, weist einige funktionale Unterschiede auf. Weitere Informationen enthalten die folgenden Themen:
  + [Funktionale Unterschiede: Amazon DocumentDB und MongoDB](https://docs.aws.amazon.com/documentdb/latest/developerguide/functional-differences.html)
  +  [Unterstützte MongoDB APIs, Operationen und Datentypen](https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html).
+ Die Option „Partitionierer“ ist auf `ShardedPartitioner`, `PaginateIntoPartitionsPartitioner`, und `SinglePartitionPartitioner` beschränkt. Es kann die Standardwerte `SamplePartitioner` und `PaginateBySizePartitioner` für Amazon DocumentDB nicht verwenden, da der Stage-Operator die MongoDB-API nicht unterstützt. Weitere Informationen finden Sie unter [Unterstützte MongoDB APIs, Operationen und Datentypen](https://docs.aws.amazon.com/documentdb/latest/developerguide/mongo-apis.html).

### Delta Lake
<a name="migrating-version-40-connector-driver-migration-delta"></a>
+ Delta Lake unterstützt jetzt [Zeitreisen in SQL](https://docs.delta.io/2.1.0/delta-batch.html#query-an-older-snapshot-of-a-table-time-travel) zum einfachen Abfragen älterer Daten. Mit diesem Update sind Zeitreisen jetzt sowohl in Spark SQL als auch über die DataFrame API verfügbar. Für die aktuelle Version von TIMESTAMP in SQL wurde Unterstützung hinzugefügt.
+ Spark 3.3 führt [Trigger ein. AvailableNow](https://issues.apache.org/jira/browse/SPARK-36533)zum Ausführen von Streaming-Abfragen als Äquivalent `Trigger.Once` zu Batch-Abfragen. Diese Unterstützung ist auch bei Verwendung von Delta-Tabellen als Streaming-Quelle verfügbar.
+ Unterstützung für SHOW COLUMNS, um die Liste der Spalten in einer Tabelle zurückzugeben.
+ Support für [DESCRIBE DETAIL](https://docs.delta.io/2.1.0/delta-utility.html#retrieve-delta-table-details) in der Scala- und DeltaTable Python-API. Es ruft mithilfe der DeltaTable API oder Spark SQL detaillierte Informationen über eine Delta-Tabelle ab.
+ Unterstützung für die Rückgabe von Vorgangsmetriken aus SQL-Befehlen zum [Löschen](https://github.com/delta-io/delta/pull/1328), [Zusammenführen](https://github.com/delta-io/delta/pull/1327) und [Aktualisieren](https://github.com/delta-io/delta/pull/1331). Bisher gaben diese SQL-Befehle einen leeren Wert zurück DataFrame, jetzt geben sie ein DataFrame mit nützlichen Metriken über den ausgeführten Vorgang zurück.
+ Leistungsverbesserungen optimieren:
  + Legen Sie die Konfigurationsoption `spark.databricks.delta.optimize.repartition.enabled=true` so fest, dass im Befehl Optimieren `repartition(1)` anstelle von `coalesce(1)` verwendet wird, um eine bessere Leistung beim Komprimieren vieler kleiner Dateien zu erzielen.
  + [Verbesserte Leistung](https://github.com/delta-io/delta/pull/1315) durch Verwendung eines warteschlangenbasierten Ansatzes zur Parallelisierung von Verdichtungsaufträgen.
+ Weitere nennenswerte Änderungen:
  + [Unterstützung für die Verwendung von Variablen](https://github.com/delta-io/delta/issues/1267) in den VACUUM- und OPTIMIZE-SQL-Befehlen.
  + Verbesserungen für CONVERT TO DELTA mit Katalogtabellen, einschließlich:
    + [Füllen Sie das Partitionsschema automatisch](https://github.com/delta-io/delta/commit/18d4d12ed06f973006501f6c39c8785db51e2b1f) aus dem Katalog aus, wenn es nicht bereitgestellt wird.
    + [Verwenden Sie die Partitionsinformationen](https://github.com/delta-io/delta/commit/ebff29904f3ababb889897343f8f8f7a010a1f71) aus dem Katalog, um die festzuschreibenden Datendateien zu finden, anstatt einen vollständigen Verzeichnisscan durchzuführen. Anstatt alle Datendateien im Tabellenverzeichnis festzuschreiben, werden nur Datendateien in den Verzeichnissen der aktiven Partitionen festgeschrieben.
  + [Unterstützung für CDF-Batchlesevorgänge (Change Data Feed)](https://github.com/delta-io/delta/issues/1349) in Tabellen mit aktivierter Spaltenzuordnung, wenn DROP COLUMN und RENAME COLUMN nicht verwendet wurden. Weitere Informationen finden Sie in der [Delta-Lake-Dokumentation](https://docs.delta.io/2.1.0/delta-change-data-feed.html#known-limitations).
  + [Verbessern Sie die Leistung des Aktualisierungs-Befehls](https://github.com/delta-io/delta/pull/1202), indem Sie die Schemabereinigung im ersten Durchgang aktivieren.

### Apache Iceberg
<a name="migrating-version-40-connector-driver-migration-iceberg"></a>
+ Es wurden mehrere [Leistungsverbesserungen](https://iceberg.apache.org/releases/#performance-improvements) für die Scan-Planung und Spark-Abfragen hinzugefügt.
+ Es wurde ein allgemeiner REST-Katalog-Client hinzugefügt, der änderungsbasierte Commits verwendet, um Commit-Konflikte innerhalb des Services zu lösen.
+ `AS OF`-Syntax für SQL-Zeitreiseabfragen wird unterstützt.
+  merge-on-readUnterstützung für MERGE- und UPDATE-Abfragen hinzugefügt.
+ Es wurde Unterstützung zum Neuschreiben von Partitionen mit Z-Reihenfolge hinzugefügt.
+ Es wurde eine Spezifikation und Implementierung für Puffin hinzugefügt, ein Format für große Statistik- und Index-Blobs, wie [Theta-Skizzen](https://datasketches.apache.org/docs/Theta/InverseEstimate.html) oder Bloom-Filter.
+ Es wurden neue Schnittstellen für die inkrementelle Nutzung von Daten hinzugefügt (sowohl Append- als auch Changelog-Scans).
+ Es wurde Unterstützung für Massenvorgänge und Bereichslesevorgänge für FileIO-Schnittstellen hinzugefügt.
+ Es wurden weitere Metadaten-Tabellen hinzugefügt, um gelöschte Dateien in der Metadaten-Struktur anzuzeigen.
+ Das Verhalten der Ablagetabelle hat sich geändert. In Iceberg 0.13.1 entfernt das Ausführen von `DROP TABLE` die Tabelle aus dem Katalog und löscht auch den Tabelleninhalt. In Iceberg 1.0.0 entfernt `DROP TABLE` nur die Tabelle aus dem Katalog. Um den Tabelleninhalt zu löschen, verwenden Sie `DROP TABLE PURGE`.
+ In Iceberg 1.0.0 sind vektorisierte Parquet-Lesevorgänge standardmäßig aktiviert. Wenn Sie vektorisierte Lesevorgänge deaktivieren möchten, setzen Sie `read.parquet.vectorization.enabled` auf `false`.

### Oracle
<a name="migrating-version-40-connector-driver-migration-oracle"></a>

Die Änderungen sind gering.

### MySQL
<a name="migrating-version-40-connector-driver-migration-mysql"></a>

Die Änderungen sind gering.

### Amazon Redshift
<a name="migrating-version-40-connector-driver-migration-redshift"></a>

AWS Glue 4.0 bietet einen neuen Amazon Redshift Redshift-Connector mit einem neuen JDBC-Treiber. Informationen zu den Verbesserungen und zur Migration von früheren AWS Glue Versionen finden Sie unter. [Redshift-Verbindungen](aws-glue-programming-etl-connect-redshift-home.md)

## Anhang A: Nennenswerte Aktualisierungen von Abhängigkeiten
<a name="migrating-version-40-appendix-dependencies"></a>

Im Folgenden sind Abhängigkeits-Upgrades aufgeführt:


| -Abhängigkeit | Version in AWS Glue 4.0 | Version in AWS Glue 3.0 | Version in AWS Glue 2.0 | Version in AWS Glue 1.0 | 
| --- | --- | --- | --- | --- | 
| Spark | 3.3.0-amzn-1 | 3.1.1-amzn-0 | 2.4.3 | 2.4.3 | 
| Hadoop | 3.3.3-amzn-0 | 3.2.1-amzn-3 | 2.8.5-amzn-5 | 2.8.5-amzn-1 | 
| Scala | 2.12 | 2.12 | 2.11 | 2.11 | 
| Jackson | 2.13.3 | 2.10.x | 2.7.x | 2.7.x | 
| Hive | 2.3.9-amzn-2 | 2.3.7-amzn-4 | 1.2 | 1.2 | 
| EMRFS | 2,54,0 | 2,46,0 | 2.38.0 | 2.30.0 | 
| JSON4s | 3.7.0-M11 | 3.6.6 | 3.5.x | 3.5.x | 
| Arrow | 7.0.0 | 2.0.0 | 0.10.0 | 0.10.0 | 
| AWS Glue Datenkatalog-Client | 3.7.0 | 3.0.0 | 1.10.0 | – | 
| Python | 3.10 | 3.7 | 2.7 und 3.6 | 2.7 und 3.6 | 
| Boto | 1,26 | 1,18 | 1.12 | – | 

## Anhang B: Aktualisierungen von JDBC-Treibern
<a name="migrating-version-40-appendix-jdbc-driver"></a>

Die folgenden JDBC-Treiber-Upgrades sind:


| Treiber | JDBC-Treiberversion in früheren Versionen AWS Glue  | JDBC-Treiberversion in 3.0 AWS Glue  | JDBC-Treiberversion in 4.0 AWS Glue  | 
| --- | --- | --- | --- | 
| MySQL | 5.1 | 8.0.23 | 8.0.23 | 
| Microsoft SQL Server | 6.1.0 | 7.0.0 | 9.4,0 | 
| Oracle-Datenbanken | 11.2 | 21,1 | 21,7 | 
| PostgreSQL | 42,10 | 42,2,18 | 42,3,6 | 
| MongoDB | 2.0.0 | 4.0.0 | 4.7.2 | 
| Amazon Redshift |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc41-1.2.12.1017   |  redshift-jdbc42-2.1.0.16  | 

## Anhang C: Konnektor-Upgrades
<a name="migrating-version-40-appendix-connector"></a>

Im Folgenden sind Konnektor-Upgrades aufgeführt:


| Treiber | Connector-Version in 3.0 AWS Glue  | Connector-Version in AWS Glue 4.0 | 
| --- | --- | --- | 
| MongoDB | 3.0.0 | 10.0.4 | 
| Hudi | 0.10.1 | 0.12.1 | 
| Delta Lake | 1.0.0 | 2.1.0 | 
| Iceberg | 0.13.1 | 1.0.0 | 
| DynamoDB | 1.11 | 1.12 | 

# Generative KI-Upgrades für Apache Spark in AWS Glue
<a name="upgrade-analysis"></a>

 Spark Upgrades in AWS Glue ermöglicht es Dateningenieuren und Entwicklern, ihre bestehenden AWS Glue Spark-Jobs mithilfe generativer KI zu aktualisieren und auf die neuesten Spark-Versionen zu migrieren. Dateningenieure können damit ihre AWS Glue Spark-Jobs scannen, Upgrade-Pläne erstellen, Pläne ausführen und Ergebnisse validieren. Dies reduziert den Zeit- und Kostenaufwand für Spark-Upgrades, indem die undifferenzierte Arbeit der Identifizierung und Aktualisierung von Spark-Skripten, Konfigurationen, Abhängigkeiten, Methoden und Features automatisiert wird. 

![\[Das GIF zeigt eine vollständige Implementierung eines Beispiel-Workflows zur Upgrade-Analyse.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/demo_lumos.gif)


## Funktionsweise
<a name="upgrade-analysis-how-it-works"></a>

 Wenn Sie die Upgrade-Analyse verwenden, identifiziert AWS Glue Unterschiede zwischen Versionen und Konfigurationen im Code Ihres Jobs, um einen Upgrade-Plan zu generieren. Der Upgrade-Plan beschreibt alle Codeänderungen und die erforderlichen Migrationsschritte. Als Nächstes erstellt AWS Glue die aktualisierte Anwendung und führt sie in einer Umgebung aus, um Änderungen zu validieren, und generiert eine Liste mit Codeänderungen, damit Sie Ihren Job migrieren können. Sie können sich das aktualisierte Skript zusammen mit der Zusammenfassung ansehen, in der die vorgeschlagenen Änderungen detailliert beschrieben werden. Nachdem Sie Ihre eigenen Tests ausgeführt haben, akzeptieren Sie die Änderungen und der AWS Glue-Job wird automatisch mit dem neuen Skript auf die neueste Version aktualisiert. 

 Der Upgrade-Analyseprozess kann, abhängig von der Komplexität des Auftrags und dem Workload, einige Zeit in Anspruch nehmen. Die Ergebnisse der Upgrade-Analyse werden im angegebenen Amazon-S3-Pfad gespeichert und können dort eingesehen werden, um das Upgrade und mögliche Kompatibilitätsprobleme zu verstehen. Nachdem Sie die Ergebnisse der Upgrade-Analyse überprüft haben, können Sie entscheiden, ob Sie mit dem eigentlichen Upgrade fortfahren oder vor dem Upgrade noch erforderliche Änderungen am Auftrag vornehmen möchten. 

## Voraussetzungen
<a name="upgrade-analysis-prerequisites"></a>

 Die folgenden Voraussetzungen sind erforderlich, um generative KI zum Upgrade von Jobs in AWS Glue zu verwenden: 
+  AWS Glue 2 PySpark Jobs — Nur AWS Glue 2-Jobs können auf AWS Glue 5 aktualisiert werden. 
+  IAM-Berechtigungen sind erforderlich, um die Analyse zu starten, die Ergebnisse zu überprüfen und den Auftrag zu aktualisieren. Weitere Informationen finden Sie in den Beispielen im [Berechtigungen](#auto-upgrade-permissions)-Abschnitt unten. 
+  Bei Verwendung AWS KMS zur Verschlüsselung von Analyseartefakten sind zusätzliche AWS AWS KMS Berechtigungen erforderlich. Weitere Informationen finden Sie in den Beispielen im [AWS KMS Richtlinie](#auto-upgrade-kms-policy)-Abschnitt unten. 

### Berechtigungen
<a name="auto-upgrade-permissions"></a>

#### Um eine neue Upgrade-Analyse zu starten, benötigen Sie die folgenden Berechtigungen:
<a name="collapsible-section-1"></a>

1.  Aktualisieren Sie die IAM-Richtlinie des Aufrufers mit der folgenden Berechtigung: 

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "glue:StartJobUpgradeAnalysis",
                   "glue:StartJobRun",
                   "glue:GetJobRun",
                   "glue:GetJob",
                   "glue:BatchStopJobRun"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:111122223333:job/jobName"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObject"
               ],
               "Resource": [
              		 "arn:aws:s3:::amzn-s3-demo-bucket/script-location/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject",
                   "s3:GetObject"
               ],
               "Resource": [
               		"arn:aws:s3:::amzn-s3-demo-bucket/results/*"
               ]
           },
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "kms:GenerateDataKey"
               ],
               "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
           }
       ]
   }
   ```

------

1.  Aktualisieren Sie die Ausführungsrolle des Auftrags, den Sie aktualisieren, sodass sie die folgende Inline-Richtlinie enthält: 

   ```
       {
         "Effect": "Allow",
         "Action": ["s3:GetObject"],    
         "Resource": [
           "ARN of the Amazon S3 path provided on API",
           "ARN of the Amazon S3 path provided on API/*"
         ]
       }
   ```

    Wenn Sie beispielsweise den Amazon-S3-Pfad `s3://amzn-s3-demo-bucket/upgraded-result` verwenden, lautet die Richtlinie wie folgt: 

   ```
   {
         "Effect": "Allow",
         "Action": ["s3:GetObject"],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/upgraded-result/",
           "arn:aws:s3:::amzn-s3-demo-bucket/upgraded-result/*"
         ]
       }
   ```

#### Um die Details einer Analyse abzurufen, benötigen Sie die folgenden Berechtigungen:
<a name="collapsible-section-2"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:GetJobUpgradeAnalysis"
      ],
      "Resource": [
        "arn:aws:glue:us-east-1:111122223333:job/jobName"
      ]
    }
  ]
}
```

------

#### Zum Beenden einer laufenden Analyse benötigen Sie die folgenden Berechtigungen:
<a name="collapsible-section-3"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StopJobUpgradeAnalysis",
        "glue:BatchStopJobRun"
      ],
      "Resource": [
        "arn:aws:glue:us-east-1:111122223333:job/jobName"
      ]
    }
  ]
}
```

------

#### Um alle Analysen aufzulisten, die für einen bestimmten Auftrag eingereicht wurden, benötigen Sie die folgenden Berechtigungen:
<a name="collapsible-section-4"></a>

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListJobUpgradeAnalyses"
      ],
      "Resource": [
        "arn:aws:glue:us-east-1:111122223333:job/jobName"
      ]
    }
  ]
}
```

------

#### Um die Änderungen aus einer Analyse zu akzeptieren und einen Auftrag zu aktualisieren, benötigen Sie die folgenden Berechtigungen:
<a name="collapsible-section-5"></a>

### AWS KMS Richtlinie
<a name="auto-upgrade-kms-policy"></a>

 Um beim Starten einer Analyse Ihren eigenen benutzerdefinierten AWS KMS Schlüssel zu übergeben, lesen Sie bitte den folgenden Abschnitt, um die entsprechenden Berechtigungen für die AWS KMS Schlüssel zu konfigurieren. 

#### Konfiguration der Verschlüsselung der Ergebnisartefakte mithilfe eines AWS KMS Schlüssels:
<a name="w2aac37b7c20c13c13b5b5"></a>

 Diese Richtlinie stellt sicher, dass Sie sowohl über die Verschlüsselungs- als auch über die Entschlüsselungsberechtigungen für den AWS KMS Schlüssel verfügen. 

```
{
    "Effect": "Allow",
    "Principal":{
        "AWS": "<IAM Customer caller ARN>"
    },
    "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey",
    ],
    "Resource": "<key-arn-passed-on-start-api>"
}
```

## Ausführen einer Upgrade-Analyse und Anwenden des Upgrade-Skripts
<a name="auto-upgrade-procedure"></a>

 Sie können eine Upgrade-Analyse ausführen, die einen Upgrade-Plan für einen Auftrag generiert, den Sie in der Ansicht **Aufträge** auswählen. 

1.  Wählen Sie unter **Jobs** einen AWS Glue 2.0-Job aus und wählen Sie dann im Menü **Aktionen** die Option **Upgrade-Analyse ausführen** aus.   
![\[Der Screenshot zeigt die Upgrade-Analyse mit KI aus dem Aktionsmenü.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/upgrade-analysis-run-action-menu.png)

1.  Wählen Sie im Modal einen Pfad zum Speichern Ihres generierten Upgrade-Plans im **Ergebnispfad** aus. Es muss sich um einen Amazon-S3-Bucket handeln, auf den Sie zugreifen und in den Sie schreiben können.   
![\[Der Screenshot zeigt die abgeschlossene Upgrade-Analyse. Die Schaltfläche zum Anwenden des aktualisierten Skripts ist sichtbar.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/upgrade-analysis-configuration-options.png)

1.  Konfigurieren Sie bei Bedarf die folgenden zusätzlichen Optionen: 
   +  **Run-Konfiguration** – optional: Die Run-Konfiguration ist eine optionale Einstellung, mit der Sie verschiedene Aspekte der während der Upgrade-Analyse durchgeführten Validierungsläufe anpassen können. Diese Konfiguration wird zur Ausführung des aktualisierten Skripts verwendet und ermöglicht Ihnen die Auswahl der Eigenschaften der Rechenumgebung (Workertyp, Anzahl der Worker usw.). Beachten Sie, dass Sie Ihre Entwicklerkonten, die nicht für die Produktion bestimmt sind, verwenden sollten, um die Validierungen an Beispieldatensätzen durchzuführen, bevor Sie die Änderungen überprüfen, akzeptieren und auf Produktionsumgebungen anwenden. Die Run-Konfiguration umfasst die folgenden anpassbaren Parameter: 
     + Workertyp: Sie können den Workertyp angeben, der für die Validierungsläufe verwendet werden soll, sodass Sie je nach Ihren Anforderungen die geeigneten Rechenressourcen auswählen können.
     + Anzahl der Worker: Sie können die Anzahl der Worker definieren, die für die Validierungsläufe bereitgestellt werden sollen, sodass Sie die Ressourcen entsprechend Ihren Workload-Anforderungen skalieren können.
     + Auftrags-Timeout (in Minuten): Mit diesem Parameter können Sie ein Zeitlimit für die Validierungsläufe festlegen und so sicherstellen, dass die Aufträge nach einer bestimmten Dauer beendet werden, um einen übermäßigen Ressourcenverbrauch zu vermeiden.
     + Sicherheitskonfiguration: Sie können Sicherheitseinstellungen wie Verschlüsselung und Zugriffskontrolle konfigurieren, um den Schutz Ihrer Daten und Ressourcen während der Validierungsläufe zu gewährleisten.
     + Zusätzliche Auftragsparameter: Bei Bedarf können Sie neue Auftragsparameter hinzufügen, um die Ausführungsumgebung für die Validierungsläufe weiter anzupassen.

      Durch die Nutzung der Run-Konfiguration können Sie die Validierungsläufe an Ihre spezifischen Anforderungen anpassen. Sie können die Validierungsläufe beispielsweise so konfigurieren, dass ein kleinerer Datensatz verwendet wird, wodurch die Analyse schneller abgeschlossen wird und die Kosten optimiert werden. Dieser Ansatz stellt sicher, dass die Upgrade-Analyse effizient durchgeführt wird und gleichzeitig die Ressourcenauslastung und die damit verbundenen Kosten während der Validierungsphase minimiert werden. 
   +  **Verschlüsselungskonfiguration** – optional: 
     + **Verschlüsselung von Upgrade-Artefakten aktivieren**: Aktiviert die Verschlüsselung im Ruhezustand, wenn Daten in den Ergebnispfad geschrieben werden. Wenn Sie keine Verschlüsselung Ihrer Upgrade-Artefakte wünschen, aktivieren Sie diese Option nicht.

1.  Wählen Sie **Ausführen**, um die Upgrade-Analyse zu starten. Während die Analyse ausgeführt wird, können Sie die Ergebnisse auf der Registerkarte **Upgrade-Analyse** anzeigen. Im Fenster mit den Analysedetails werden Informationen zur Analyse sowie Links zu den Upgrade-Artefakten angezeigt. 
   +  **Ergebnispfad** – hier werden die Zusammenfassung der Ergebnisse und das Upgrade-Skript gespeichert. 
   +  **Aktualisiertes Skript in Amazon S3** – der Speicherort des Upgrade-Skripts in Amazon S3. Sie können sich das Skript anzeigen lassen, bevor Sie das Upgrade anwenden. 
   +  **Upgrade-Zusammenfassung in Amazon S3** – der Speicherort der Upgrade-Zusammenfassung in Amazon S3. Sie können sich die Upgrade-Zusammenfassung anzeigen lassen, bevor Sie das Upgrade anwenden. 

1.  Wenn die Upgrade-Analyse erfolgreich abgeschlossen wurde, können Sie das Upgrade-Skript anwenden, um Ihren Auftrag automatisch zu aktualisieren, indem Sie **Aktualisiertes Skript anwenden** wählen. 

    Nach der Anwendung wird die AWS Glue-Version auf 4.0 aktualisiert. Sie finden das neue Skript auf der Registerkarte **Skript**.   
![\[Der Screenshot zeigt die abgeschlossene Upgrade-Analyse. Die Schaltfläche zum Anwenden des aktualisierten Skripts ist sichtbar.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/upgrade-analysis-analysis-details-preview.png)

## Grundlegendes zu Ihrer Upgrade-Zusammenfassung
<a name="auto-upgrade-analysis-summary"></a>

 Dieses Beispiel zeigt, wie ein AWS Glue-Job von Version 2.0 auf Version 4.0 aktualisiert wird. Der Beispielauftrag liest Produktdaten aus einem Amazon-S3-Bucket, wendet mithilfe von Spark SQL mehrere Transformationen auf die Daten an und speichert dann die transformierten Ergebnisse wieder in einem Amazon-S3-Bucket. 

### Originalcode (AWS Glue 2.0) - vor dem Upgrade
<a name="w2aac37b7c20c21b5b1"></a>

```
from awsglue.transforms import *
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from pyspark.sql.types import *
from pyspark.sql.functions import *
from awsglue.job import Job
import json
from pyspark.sql.types import StructType

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)

gdc_database = "s3://aws-glue-scripts-us-east-1-gamma/demo-database/"
schema_location = (
    "s3://aws-glue-scripts-us-east-1-gamma/DataFiles/"
)

products_schema_string = spark.read.text(
    f"{schema_location}schemas/products_schema"
).first()[0]

product_schema = StructType.fromJson(json.loads(products_schema_string))

products_source_df = (
    spark.read.option("header", "true")
    .schema(product_schema)
    .option(
        "path",
        f"{gdc_database}products/",
    )
    .csv(f"{gdc_database}products/")
)

products_source_df.show()
products_temp_view_name = "spark_upgrade_demo_product_view"
products_source_df.createOrReplaceTempView(products_temp_view_name)

query = f"select {products_temp_view_name}.*, format_string('%0$s-%0$s', category, subcategory) as unique_category from {products_temp_view_name}"
products_with_combination_df = spark.sql(query)
products_with_combination_df.show()

products_with_combination_df.createOrReplaceTempView(products_temp_view_name)
product_df_attribution = spark.sql(
    f"""
SELECT *,
unbase64(split(product_name, ' ')[0]) as product_name_decoded,
unbase64(split(unique_category, '-')[1]) as subcategory_decoded
FROM {products_temp_view_name}
"""
)
product_df_attribution.show()


product_df_attribution.write.mode("overwrite").option("header", "true").option(
    "path", f"{gdc_database}spark_upgrade_demo_product_agg/"
).saveAsTable("spark_upgrade_demo_product_agg", external=True)

spark_upgrade_demo_product_agg_table_df = spark.sql(
    f"SHOW TABLE EXTENDED in default like 'spark_upgrade_demo_product_agg'"
)
spark_upgrade_demo_product_agg_table_df.show()
job.commit()
```

### Neuer Code (Glue 4.0) – nach dem Upgrade
<a name="upgrade-analysis-example-new-code-glue-4"></a>

```
from awsglue.transforms import *
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from pyspark.sql.types import *
from pyspark.sql.functions import *
from awsglue.job import Job
import json
from pyspark.sql.types import StructType

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
# change 1
spark.conf.set("spark.sql.adaptive.enabled", "false")
# change 2
spark.conf.set("spark.sql.legacy.pathOptionBehavior.enabled", "true")
job = Job(glueContext)

gdc_database = "s3://aws-glue-scripts-us-east-1-gamma/demo-database/"
schema_location = (
    "s3://aws-glue-scripts-us-east-1-gamma/DataFiles/"
)

products_schema_string = spark.read.text(
    f"{schema_location}schemas/products_schema"
).first()[0]

product_schema = StructType.fromJson(json.loads(products_schema_string))

products_source_df = (
    spark.read.option("header", "true")
    .schema(product_schema)
    .option(
        "path",
        f"{gdc_database}products/",
    )
    .csv(f"{gdc_database}products/")
)

products_source_df.show()
products_temp_view_name = "spark_upgrade_demo_product_view"
products_source_df.createOrReplaceTempView(products_temp_view_name)

# change 3
query = f"select {products_temp_view_name}.*, format_string('%1$s-%1$s', category, subcategory) as unique_category from {products_temp_view_name}"
products_with_combination_df = spark.sql(query)
products_with_combination_df.show()

products_with_combination_df.createOrReplaceTempView(products_temp_view_name)
# change 4
product_df_attribution = spark.sql(
    f"""
SELECT *,
try_to_binary(split(product_name, ' ')[0], 'base64') as product_name_decoded,
try_to_binary(split(unique_category, '-')[1], 'base64') as subcategory_decoded
FROM {products_temp_view_name}
"""
)
product_df_attribution.show()


product_df_attribution.write.mode("overwrite").option("header", "true").option(
    "path", f"{gdc_database}spark_upgrade_demo_product_agg/"
).saveAsTable("spark_upgrade_demo_product_agg", external=True)

spark_upgrade_demo_product_agg_table_df = spark.sql(
    f"SHOW TABLE EXTENDED in default like 'spark_upgrade_demo_product_agg'"
)
spark_upgrade_demo_product_agg_table_df.show()
job.commit()
```

### Erläuterung der Analysezusammenfassung
<a name="upgrade-analysis-explanation-summary"></a>

![\[Der Screenshot zeigt die Zusammenfassung der Upgrade-Analyse.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/upgrade-analysis-explanation-summary.png)


 Basierend auf der Zusammenfassung werden von AWS Glue vier Änderungen vorgeschlagen, um das Skript erfolgreich von AWS Glue 2.0 auf Glue 4.0 zu AWS aktualisieren: 

1.  **Spark-SQL-Konfiguration (spark.sql.adaptive.enabled)**: Diese Änderung dient dazu, das Anwendungsverhalten wiederherzustellen, da mit Spark 3.2 ein neues Feature für die adaptive Abfrageausführung von Spark SQL eingeführt wurde. Sie können diese Konfigurationsänderung überprüfen und sie je nach Wunsch weiter aktivieren oder deaktivieren. 

1.  **DataFrame API-Änderung**: Die Pfadoption kann nicht zusammen mit anderen DataFrameReader Vorgängen wie `load()` existieren. Um das vorherige Verhalten beizubehalten, hat AWS Glue das Skript aktualisiert und eine neue SQL-Konfiguration hinzugefügt **(spark.sql.legacy). pathOptionBehavior**.aktiviert). 

1.  **Änderung der Spark-SQL-API**: Das Verhalten von `strfmt` in `format_string(strfmt, obj, ...)` wurde aktualisiert, sodass `0$` nicht mehr als erstes Argument zulässig ist. Um die Kompatibilität zu gewährleisten, hat AWS Glue das Skript so geändert, dass es stattdessen `1$` als erstes Argument verwendet wird. 

1.  **Änderung der Spark-SQL-API**: Die `unbase64`-Funktion erlaubt keine fehlerhaften Zeichenketteneingaben. Um das vorherige Verhalten beizubehalten, hat AWS Glue das Skript aktualisiert, um die `try_to_binary` Funktion zu verwenden. 

## Beenden einer laufenden Upgrade-Analyse
<a name="auto-upgrade-stopping-analysis"></a>

 Sie können eine laufende Upgrade-Analyse abbrechen oder die Analyse einfach beenden. 

1.  Wählen Sie die Registerkarte **Upgrade-Analyse** aus. 

1.  Wählen Sie den Auftrag aus, der gerade ausgeführt wird, und klicken Sie dann auf **Beenden**. Dadurch wird die Analyse beendet. Anschließend können Sie eine weitere Upgrade-Analyse für denselben Auftrag ausführen.   
![\[Der Screenshot zeigt die Registerkarte der Upgrade-Analyse mit einem ausgewählten Auftrag. Der Auftrag wird noch ausgeführt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/upgrade-analysis-tab.png)

## Überlegungen
<a name="upgrade-analysis-considerations"></a>

 Wenn Sie mit der Nutzung von Spark Upgrades beginnen, müssen Sie mehrere wichtige Aspekte berücksichtigen, um den Service optimal nutzen zu können. 
+  **Serviceumfang und Einschränkungen**: Die aktuelle Version konzentriert sich auf PySpark Code-Upgrades von AWS Glue-Versionen 2.0 auf Version 5.0. Derzeit verarbeitet der Service PySpark Code, der nicht auf zusätzlichen Bibliotheksabhängigkeiten angewiesen ist. Sie können automatisierte Upgrades für bis zu 10 Jobs gleichzeitig in einem AWS Konto ausführen, sodass Sie mehrere Jobs effizient aktualisieren und gleichzeitig die Systemstabilität aufrechterhalten können. 
  +  Es werden nur PySpark Jobs unterstützt. 
  +  Für die Upgrade-Analyse tritt nach 24 Stunden ein Timeout auf. 
  +  Für einen Auftrag kann jeweils nur eine aktive Upgrade-Analyse ausgeführt werden. Auf Kontoebene können bis zu 10 aktive Upgrade-Analysen gleichzeitig ausgeführt werden. 
+  **Optimierung der Kosten während des Upgrade-Prozesses**: Da Spark-Upgrades generative KI verwenden, um den Upgrade-Plan über mehrere Iterationen hinweg zu validieren, wobei jede Iteration als AWS Glue-Job in Ihrem Konto ausgeführt wird, ist es wichtig, die Konfigurationen der Validierungsjob-Ausführung aus Kostengründen zu optimieren. Um dies zu erreichen, empfehlen wir, beim Start einer Upgrade-Analyse eine Run-Konfiguration wie folgt anzugeben: 
  +  Verwenden Sie Entwicklerkonten, die nicht zur Produktion bestimmt sind, und wählen Sie für die Validierung mit Spark-Upgrades Beispieldatensätze aus, die Ihre Produktionsdaten repräsentieren, aber kleiner sind. 
  +  Verwenden Sie Rechenressourcen in der richtigen Größe, wie z. B. G.1X-Worker, und wählen Sie eine geeignete Anzahl von Workern für die Verarbeitung Ihrer Beispieldaten aus. 
  +  Aktivieren AWS Sie gegebenenfalls die auto-scaling von Glue-Jobs, um Ressourcen automatisch an die Arbeitslast anzupassen. 

   Wenn Ihr Produktionsauftrag beispielsweise Terabytes an Daten mit 20 G.2X-Workern verarbeitet, können Sie den Upgrade-Auftrag so konfigurieren, dass er einige Gigabytes repräsentativer Daten mit 2 G.2X-Workern und aktiviertem Auto Scaling zur Validierung verarbeitet. 
+  **Bewährte Methoden**: Wir empfehlen dringend, Ihr Upgrade mit Aufträgen zu beginnen, die nicht zur Produktion gehören. Dieser Ansatz ermöglicht es Ihnen, sich mit dem Upgrade-Workflow vertraut zu machen und zu verstehen, wie der Dienst mit verschiedenen Arten von Spark-Codemustern umgeht. 
+  **Alarme und Benachrichtigungen**: Wenn Sie die Generative AI-Upgrade-Funktion alarms/notifications für einen Job verwenden, stellen Sie sicher, dass die Ausführung bei fehlgeschlagenen Jobs ausgeschaltet ist. Während des Upgrade-Vorgangs können in Ihrem Konto bis zu 10 fehlgeschlagene Auftragsausführungen auftreten, bevor die aktualisierten Artefakte bereitgestellt werden. 
+  **Regeln zur Erkennung von Anomalien**: Deaktivieren Sie alle Regeln zur Erkennung von Anomalien für den Auftrag, der ebenfalls aktualisiert wird, da die während der Zwischenausführung des Auftrags in die Ausgabeordner geschriebenen Daten möglicherweise nicht das erwartete Format haben, während die Aktualisierungsvalidierung durchgeführt wird. 
+  **Verwenden Sie die Upgrade-Analyse für idempotente Aufträge**: Verwenden Sie die Upgrade-Analyse für idempotente Aufträge, um sicherzustellen, dass jeder nachfolgende Ausführungsversuch eines Validierungsauftrags dem vorherigen ähnelt und keine Probleme auftreten. Bei idempotenten Aufträgen handelt es sich um Aufträge, die mehrfach mit denselben Eingabedaten ausgeführt werden können und jedes Mal dieselbe Ausgabe erzeugen. Wenn Sie die Generative AI-Upgrades für Apache Spark in AWS Glue verwenden, führt der Service im Rahmen des Validierungsprozesses mehrere Iterationen Ihres Jobs aus. Bei jeder Iteration werden Änderungen an Ihrem Spark-Code und Ihren Konfigurationen vorgenommen, um den Upgrade-Plan zu validieren. Wenn Ihr Spark-Auftrag nicht idempotent ist, können Probleme auftreten, wenn Sie ihn mehrmals mit denselben Eingabedaten ausführen. 

## Unterstützte -Regionen
<a name="upgrade-analysis-supported-regions"></a>

Generative KI-Upgrades für Apache Spark sind in den folgenden Regionen verfügbar:
+ **Asien-Pazifik**: Tokio (ap-northeast-1), Seoul (ap-northeast-2), Mumbai (ap-south-1), Singapur (ap-southeast-1) und Sydney (ap-southeast-2)
+ **Nordamerika**: Kanada (ca-central-1)
+ **Europa**: Frankfurt (eu-central-1), Stockholm (eu-nord-1), Irland (eu-west-1), London (eu-west-2) und Paris (eu-west-3)
+ **Südamerika**: São Paulo (sa-east-1)
+ **Vereinigte Staaten**: Nord-Virginia (us-east-1), Ohio (us-east-2) und Oregon (US-West-2)

## Regionsübergreifende Inferenz bei Spark-Upgrades
<a name="w2aac37b7c20c37"></a>

 Spark Upgrades basiert auf regionsübergreifender Inferenz (CRIS) Amazon Bedrock und nutzt diese. Mit CRIS werden von Spark-Upgrades automatisch die optimale Region innerhalb Ihrer geografischen Umgebung ausgewählt (wie [hier](https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html) näher beschrieben), um Ihre Inferenzanforderung zu verarbeiten, die verfügbaren Rechenressourcen und die Modellverfügbarkeit zu maximieren und das beste Kundenerlebnis zu bieten. Für die Nutzung von regionsübergreifender Inferenz fallen keine zusätzlichen Kosten an. 

 Regionsübergreifende Inferenzanfragen werden in den AWS Regionen gespeichert, die Teil der Geografie sind, in der sich die Daten ursprünglich befinden. Beispielsweise wird eine in den USA gestellte Anfrage innerhalb der AWS Regionen in den USA aufbewahrt. Obwohl die Daten nur in der Hauptregion gespeichert bleiben, können sich Ihre Prompts und Ausgabeergebnisse bei Verwendung der regionsübergreifenden Inferenz möglicherweise außerhalb Ihrer Hauptregion bewegen. Alle Daten werden bei der Übertragung über das sichere Netzwerk von Amazon verschlüsselt. 

# Arbeiten mit Spark-Jobs in AWS Glue
<a name="etl-jobs-section"></a>

Enthält Informationen AWS Glue zu Spark-ETL-Jobs.

**Topics**
+ [Verwenden von Auftragsparametern in AWS Glue-Jobs](aws-glue-programming-etl-glue-arguments.md)
+ [AWS Glue Spark und PySpark Jobs](spark_and_pyspark.md)
+ [AWS Glue Typen von Arbeitern](worker-types.md)
+ [Streaming-ETL-Aufträge in AWS Glue](add-job-streaming.md)
+ [Datensatzabgleich mit AWS Lake Formation FindMatches](machine-learning.md)
+ [Migrieren Sie Apache Spark-Programme zu AWS Glue](glue-author-migrate-apache-spark.md)

# Verwenden von Auftragsparametern in AWS Glue-Jobs
<a name="aws-glue-programming-etl-glue-arguments"></a>

Beim Erstellen eines AWS Glue-Jobs legen Sie einige Standardfelder fest, z. B. `Role` und`WorkerType`. Über die `Argument`-Felder (**Auftragsparameter in der Konsole**) können Sie zusätzliche Konfigurationsinformationen bereitstellen. In diesen Feldern können Sie AWS Glue-Jobs mit den in diesem Thema aufgeführten Argumenten (Parametern) versehen. 

 Weitere Informationen zur AWS Glue Job API finden Sie unter[Jobs](aws-glue-api-jobs-job.md). 

**Anmerkung**  
 Auftragsargumente haben eine maximale Größenbeschränkung von 260 KB. Eine Validierungsprüfung führt zu einem Fehler, wenn die Argumentgröße größer als 260 KB ist. 



## Festlegen der Auftragsparameter
<a name="w2aac37c11b8c11"></a>

Sie können einen Auftrag über die Konsole auf der Registerkarte **Job details** (Details zur Auftragsausführung) unter der Kopfzeile **Job Parameters** (Auftragsparameter) konfigurieren. Sie können einen Job auch über die Einstellung AWS CLI by `DefaultArguments` oder `NonOverridableArguments` on a job oder setting `Arguments` on a job run konfigurieren. Für den Auftrag festgelegte Argumente werden bei jeder Ausführung des Auftrags übergeben, während bei der Auftragsausführung festgelegte Argumente nur für diese einzelne Ausführung übergeben werden. 

Im Folgenden finden Sie beispielsweise die Syntax zum Ausführen eines Auftrags mit `--arguments` zum Festlegen eines Auftragsparameters.

```
$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py"'
```

## Zugreifen auf Auftragsparameter
<a name="w2aac37c11b8c13"></a>

Beim Schreiben von AWS Glue-Skripten möchten Sie möglicherweise auf Job-Parameterwerte zugreifen, um das Verhalten Ihres eigenen Codes zu ändern. In unseren Bibliotheken stellen wir hierfür Hilfsmethoden zur Verfügung. Diese Methoden lösen Parameterwerte der Auftragsausführung auf, die die Parameterwerte des Auftrags überschreiben. Bei der Auflösung von Parametern, die an mehreren Stellen festgelegt wurden, überschreibt Auftrag `NonOverridableArguments` die Auftragsausführung `Arguments`, die wiederum Auftrag `DefaultArguments` überschreibt.

**In Python:**

In Python-Aufträgen stellen wir eine Funktion mit dem Namen `getResolvedParameters` bereit. Weitere Informationen finden Sie unter [Zugriff auf Parameter mit `getResolvedOptions`](aws-glue-api-crawler-pyspark-extensions-get-resolved-options.md). Die Auftragsparameter sind in der Variablen `sys.argv` verfügbar.

**In Scala:**

In Scala-Aufträgen stellen wir ein Objekt mit dem Namen `GlueArgParser` bereit. Weitere Informationen finden Sie unter [AWS GlueScala GlueArgParser APIs](glue-etl-scala-apis-glue-util-glueargparser.md). Die Auftragsparameter sind in der Variablen `sysArgs` verfügbar.

## Referenz der Auftragsparameter
<a name="job-parameter-reference"></a>

**AWS Glue erkennt die folgenden Argumentnamen, mit denen Sie die Skriptumgebung für Ihre Jobs und Jobausführungen einrichten können:**

**`--additional-python-modules`**  
 Eine durch Kommas getrennte Liste, die eine Reihe von Python-Paketen darstellt, die installiert werden sollen. Sie können Pakete von PyPI installieren oder eine benutzerdefinierte Verteilung bereitstellen. Ein PyPI-Paketeintrag liegt im Format `package==version` vor und enthält den PyPI-Namen und die Version Ihres Zielpakets. Ein benutzerdefinierter Verteilungseintrag ist der S3-Pfad zur Verteilung.  
Einträge verwenden einen Python-Versionsabgleich, um Paket und Version abzugleichen. Dies bedeutet, dass Sie zwei Gleichheitszeichen verwenden müssen, z. B. `==`. Es gibt andere Operatoren für den Versionsabgleich. Weitere Informationen dazu finden Sie unter [PEP 440](https://peps.python.org/pep-0440/#version-matching).   
Um Optionen für die Modulinstallation an `pip3` zu übergeben, verwenden Sie den [--python-modules-installer-option](#python-modules-installer-option)-Parameter.

**`--auto-scale-within-microbatch`**  
Der Standardwert ist "True". Dieser Parameter kann nur für AWS Glue-Streaming-Jobs verwendet werden, bei denen die Streaming-Daten in einer Reihe von Mikrobatches verarbeitet werden. Auto Scaling muss aktiviert sein. Wenn dieser Wert auf falsch gesetzt ist, wird der exponentielle gleitende Durchschnitt der Batch-Dauer für abgeschlossene Micro-Batches berechnet. Dieser Wert wird mit der Fenstergröße verglichen, um festzulegen, ob die Anzahl der Ausführer hoch- oder herunterskaliert werden soll. Die Skalierung erfolgt erst, wenn ein Mikro-Batch abgeschlossen ist. Wenn dieser Wert während eines Mikro-Batches auf wahr gesetzt ist, wird er hochskaliert, wenn die Anzahl der Spark-Aufgaben 30 Sekunden lang gleich bleibt oder die aktuelle Batch-Verarbeitung größer als die Fenstergröße ist. Die Anzahl der Ausführer sinkt, wenn ein Ausführer länger als 60 Sekunden im Leerlauf war oder der exponentielle gleitende Durchschnitt der Batch-Dauer niedrig ist. 

**`--class`**  
Die Scala-Klasse, die als Einstiegspunkt für Ihr Scala-Skript dient. Dies gilt nur, wenn die `--job-language` auf `scala` eingestellt ist.

**`--continuous-log-conversionPattern`**  
Gibt ein benutzerdefiniertes Konvertierungsprotokollmuster für einen Auftrag an, der für die kontinuierliche Protokollierung aktiviert ist. Das Konvertierungsmuster gilt nur für Treiberprotokolle und Executor-Protokolle. Es hat keinen Einfluss auf den AWS Glue-Fortschrittsbalken.

**`--continuous-log-logGroup`**  
Gibt einen benutzerdefinierten CloudWatch Amazon-Protokollgruppennamen für einen Job an, der für die kontinuierliche Protokollierung aktiviert ist.

**`--continuous-log-logStreamPrefix`**  
 Gibt ein benutzerdefiniertes CloudWatch Logstream-Präfix für einen Job an, der für die kontinuierliche Protokollierung aktiviert ist.

**`--customer-driver-env-vars` und `--customer-executor-env-vars`**  
Diese Parameter legen Umgebungsvariablen im Betriebssystem für jeden Worker (Treiber oder Executor) fest. Sie können diese Parameter verwenden, wenn Sie Plattformen und benutzerdefinierte Frameworks auf AWS Glue aufbauen, damit Ihre Benutzer Jobs darauf schreiben können. Wenn Sie diese beiden Flags aktivieren, können Sie unterschiedliche Umgebungsvariablen für den Treiber und den Executor festlegen, ohne dieselbe Logik in das Auftragsskript selbst einfügen zu müssen.   
**Beispielverwendung**  
Die folgende Abbildung zeigt ein Beispiel für die Verwendung dieser Parameter:

```
"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"",
"—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"
```
Diese Werte im Auftragsausführungsargument festzulegen, entspricht der Ausführung der folgenden Befehle:  
Im Treiber:  
+ exportiere CUSTOMER\$1 = KEY1 VAL1
+ exportiere CUSTOMER\$1 KEY2 ="val2, val2 val2"
Im Executor:  
+ exportiere CUSTOMER\$1 KEY3 = VAL3
Anschließend können Sie im Auftragsskript selbst die Umgebungsvariablen mit `os.environ.get("CUSTOMER_KEY1")` oder `System.getenv("CUSTOMER_KEY1")` abrufen.   
**Erzwungene Syntax**  
Beachten Sie beim Definieren von Umgebungsvariablen die folgenden Standards:
+ Jeder Schlüssel muss das `CUSTOMER_ prefix` haben.

  Zum Beispiel: Für `"CUSTOMER_KEY3=VAL3,KEY4=VAL4"` wird `KEY4=VAL4` ignoriert und nicht festgelegt.
+ Jedes Schlüssel/Wert-Paar muss durch ein einzelnes Komma abgegrenzt werden.

  Beispiel: `"CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"`
+ Wenn der „Wert“ Leerzeichen oder Kommas enthält, muss er in Anführungszeichen definiert werden.

  Beispiel: `CUSTOMER_KEY2=\"val2,val2 val2\"`
Diese Syntax ist den Standards für das Festlegen von Bash-Umgebungsvariablen sehr ähnlich.

**`--datalake-formats` **  
Wird in AWS Glue 3.0 und späteren Versionen unterstützt.  
Gibt das zu verwendende Data Lake-Framework an. AWS Glue fügt die erforderlichen JAR-Dateien für die von Ihnen angegebenen Frameworks in die ein`classpath`. Weitere Informationen finden Sie unter [Verwendung von Data-Lake-Frameworks mit AWS Glue ETL-Jobs](aws-glue-programming-etl-datalake-native-frameworks.md).  
Sie können einen oder mehrere der folgenden Werte durch Komma getrennt angeben:  
+ `hudi`
+ `delta`
+ `iceberg`
Übergeben Sie beispielsweise das folgende Argument, um alle drei Frameworks anzugeben.  

```
'--datalake-formats': 'hudi,delta,iceberg'
```

**`--disable-proxy-v2`**  
 Deaktivieren Sie den Service-Proxy, um AWS Serviceanrufe an Amazon S3 und AWS Glue CloudWatch, die von Ihrem Skript ausgehen, über Ihre VPC zuzulassen. Weitere Informationen finden Sie unter [ Konfigurieren von AWS -Aufrufen, um Ihre VPC durchlaufen ](https://docs.aws.amazon.com/glue/latest/dg/connection-VPC-disable-proxy.html). Um den Service-Proxy zu deaktivieren, legen Sie den Wert dieses Parameters auf `true` fest.

**`--enable-auto-scaling`**  
Aktiviert Auto Scaling und die Abrechnung pro Worker, wenn der Wert auf `true` eingestellt wird.

**`--enable-continuous-cloudwatch-log`**  
Ermöglicht die kontinuierliche Protokollierung von AWS Glue-Jobs in Echtzeit. Sie können Apache Spark-Aufgabenprotokolle in Echtzeit in CloudWatch anzeigen.

**`--enable-continuous-log-filter`**  
Gibt einen Standardfilter (`true`) oder keinen Filter (`false`) an, wenn Sie eine Aufgabe erstellen oder bearbeiten, die für die kontinuierliche Protokollierung aktiviert ist. Wenn Sie den Standardfilter wählen, werden unbrauchbare Apache Spark driver/executor - und Apache Hadoop YARN-Heartbeat-Protokollnachrichten gelöscht. Wenn Sie keinen Filter auswählen, erhalten Sie alle Protokollmeldungen.

**`--enable-glue-datacatalog`**  
Ermöglicht es Ihnen, den AWS Glue-Datenkatalog als Apache Spark Hive-Metastore zu verwenden. Um dieses Feature zu aktivieren, setzen Sie den Wert auf `true`.

**`--enable-job-insights`**  
Ermöglicht zusätzliche Fehleranalyseüberwachung mit AWS Glue Job Run Insights. Details hierzu finden Sie unter [Überwachung mit Einblicken in die AWS Glue Auftragsausführung](monitor-job-insights.md). Der Wert ist standardmäßig auf `true` festgelegt und Auftragsausführungs-Insights sind aktiviert.  
Diese Option ist für AWS Glue Version 2.0 und 3.0 verfügbar.

**`--enable-lakeformation-fine-grained-access`**  
Ermöglicht eine feinkörnige Zugriffskontrolle für AWS Klebeaufträge. Weitere Informationen finden Sie unter [Verwendung von AWS Glue mit AWS Lake Formation für eine feinkörnige Zugriffskontrolle](security-lf-enable.md).

**`--enable-metrics`**  
Aktiviert die Erfassung von Metriken für die Erstellung von Auftragsprofilen für diese Auftragsausführung. Diese Metriken sind auf der AWS Glue-Konsole und der CloudWatch Amazon-Konsole verfügbar. Der Wert dieses Parameters ist nicht relevant. Um dieses Feature zu aktivieren, können Sie für diesen Parameter einen beliebigen Wert angeben. Aus Gründen der Übersichtlichkeit wird jedoch `true` empfohlen. Um dieses Feature zu deaktivieren, entfernen Sie diesen Parameter aus Ihrer Auftragskonfiguration.

**`--enable-observability-metrics`**  
 Ermöglicht eine Reihe von Observability-Metriken, um Erkenntnisse darüber zu gewinnen, was in jedem Job passiert, der auf der Seite Job Runs Monitoring unter der AWS Glue-Konsole und der Amazon CloudWatch Konsole ausgeführt wird. Um dieses Feature zu aktivieren, setzen Sie den Wert dieses Parameters auf „true“. Um dieses Feature zu deaktivieren, setzen Sie ihn auf `false` oder entfernen Sie den Parameter aus der Auftragskonfiguration. 

**`--enable-rename-algorithm-v2`**  
Setzt die Version des EMRFS-Umbenennungsalgorithmus auf Version 2. Wenn ein Spark-Auftrag den dynamischen Partitionsüberschreibungsmodus verwendet, besteht die Möglichkeit, dass eine doppelte Partition erstellt wird. Zum Beispiel können Sie eine doppelte Partition wie `s3://bucket/table/location/p1=1/p1=1` erhalten. Hier ist P1 die Partition, die überschrieben wird. Das Umbenennen des Algorithmus Version 2 behebt dieses Problem.  
Diese Option ist nur in der AWS Glue-Version 1.0 verfügbar.

**`--enable-s3-parquet-optimized-committer`**  
Aktiviert den EMRFS-S3-optimierten Committer zum Schreiben von Parquet-Daten in Amazon S3. Sie können das parameter/value Paar über die AWS Glue-Konsole angeben, wenn Sie einen AWS Glue-Job erstellen oder aktualisieren. Durch Festlegen des Werts **true** wird der Committer aktiviert. Standardmäßig ist die Flagge in AWS Glue 3.0 aktiviert und in AWS Glue 2.0 ausgeschaltet.  
Weitere Informationen finden Sie unter [Verwenden der EMRFS S3-optimierten Committer-Klasse](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-s3-optimized-committer.html).

**`--enable-spark-ui`**  
Wenn diese Option auf gesetzt ist`true`, wird die Funktion aktiviert, die Spark-Benutzeroberfläche zum Überwachen und Debuggen von AWS Glue-ETL-Jobs zu verwenden.

**`--executor-cores`**  
Anzahl der Spark-Aufgaben, die parallel ausgeführt werden können. Diese Option wird auf AWS Glue 3.0\$1 unterstützt. Der Wert sollte das Zweifache der Zahl von v CPUs für den Worker-Typ nicht überschreiten, also 8 an`G.1X`, 16 an`G.2X`, 32 an`G.4X`, 64 an`G.8X`, 96 an`G.12X`, 128 an `G.16X` und 8 an`R.1X`, 16 on`R.2X`, 32 on`R.4X`, 64 on`R.8X`. Sie sollten bei der Aktualisierung dieser Konfiguration vorsichtig sein, da sie sich auf die Leistung des Auftrags auswirken könnte. Eine erhöhte Parallelität der Aufgaben führt nämlich zu Speicher- und Festplattendruck sowie zu einer Drosselung der Quell- und Zielsysteme (z. B. würde dies zu mehr gleichzeitigen Verbindungen in Amazon RDS führen).

**`--extra-files`**  
Die Amazon-S3-Pfade zu zusätzlichen Dateien, z. B. Konfigurationsdateien, die AWS  Glue vor der Ausführung in das Arbeitsverzeichnis Ihres Skripts im Treiberknoten kopiert. Mehrere Werte müssen vollständige Pfade sein, die durch Kommas (`,`) getrennt werden. Bei dem Wert kann es sich um einzelne Dateien oder Verzeichnisse handeln. Diese Option wird für Python-Shell-Auftragstypen nicht unterstützt.

**`--extra-jars`**  
Die Amazon S3 S3-Pfade zu zusätzlichen Dateien, die AWS Glue auf den Treiber und die Executoren kopiert. AWS Glue fügt diese Dateien auch dem Java-Klassenpfad hinzu, bevor Ihr Skript ausgeführt wird. Mehrere Werte müssen vollständige Pfade sein, die durch Kommas (`,`) getrennt werden. Die Dateinamenerweiterung muss nicht `.jar` sein.

**`--extra-py-files`**  
Die Amazon S3 S3-Pfade zu zusätzlichen Python-Modulen, die AWS Glue dem Python-Pfad auf dem Treiberknoten hinzufügt, bevor Ihr Skript ausgeführt wird. Mehrere Werte müssen vollständige Pfade sein, die durch Kommas (`,`) getrennt werden. Es werden nur einzelne Dateien unterstützt, kein Verzeichnispfad.

**`--job-bookmark-option`**  
Steuert die Darstellung eines Auftrags-Lesezeichens. Die folgenden Optionswerte können festgelegt werden:    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html)
Um beispielsweise ein Aufgabenlesezeichen zu aktivieren, übergeben Sie das folgende Argument:  

```
'--job-bookmark-option': 'job-bookmark-enable'
```

**`--job-language`**  
Die Skript-Programmiersprache. Dieser Wert muss entweder `scala` oder `python` sein. Wenn dieser Parameter nicht vorhanden ist, ist der Standardwert `python`.

**`--python-modules-installer-option`**  
Eine Klartextzeichenfolge, die Optionen definiert, die an `pip3` übergeben werden, wenn Module mit [--additional-python-modules](#additional-python-modules) installiert werden. Stellen Sie Optionen wie in der Befehlszeile bereit, getrennt durch Leerzeichen und mit vorangestellten Bindestrichen. Weitere Informationen zur Verwendung finden Sie unter [Installation zusätzlicher Python-Module mit Pip in AWS Glue 2.0 oder höher](aws-glue-programming-python-libraries.md#addl-python-modules-support).  
Diese Option wird für AWS Glue-Jobs nicht unterstützt, wenn Sie Python 3.9 verwenden.

**`--scriptLocation`**  
Der Amazon Simple Storage Service (Amazon S3)-Speicherort, an dem Ihr ETL-Skript abgelegt ist (im Format `s3://path/to/my/script.py`). Dieser Parameter überschreibt einen Skript-Speicherort im `JobCommand`-Objekt.

**`--spark-event-logs-path`**  
Gibt einen Amazon-S3-Pfad an. Wenn Sie die Spark-UI-Überwachungsfunktion verwenden, bereinigt AWS  Glue die Spark-Ereignisprotokolle alle 30 Sekunden in diesem Amazon-S3-Pfad über einen Bucket, der als temporäres Verzeichnis zum Speichern von Spark-UI-Ereignissen verwendet werden kann.

**`--TempDir`**  
Gibt einen Amazon-S3-Pfad zu einem Bucket an, der als temporäres Verzeichnis für den Auftrag verwendet werden kann.  
Um beispielsweise ein temporäres Verzeichnis zu setzen, übergeben Sie das Argument:  

```
'--TempDir': 's3-path-to-directory'
```
AWS Glue erstellt einen temporären Bucket für Jobs, falls noch kein Bucket in einer Region existiert. Dieser Bucket erlaubt möglicherweise den öffentlichen Zugriff. Sie können entweder den Bucket in Amazon S3 ändern, um die öffentliche Zugriffssperre festzulegen, oder den Bucket später löschen, nachdem alle Aufträge in dieser Region abgeschlossen sind.

**`--use-postgres-driver`**  
Wenn Sie diesen Wert auf `true` setzen, wird der Postgres-JDBC-Treiber im Klassenpfad priorisiert, um einen Konflikt mit dem Amazon-Redshift-JDBC-Treiber zu vermeiden. Diese Option ist nur in AWS Glue Version 2.0 verfügbar.

**`--user-jars-first`**  
Wenn Sie diesen Wert auf `true` setzen, werden die zusätzlichen JAR-Dateien des Kunden im Klassenpfad priorisiert. Diese Option ist nur in AWS Glue Version 2.0 oder höher verfügbar.

**`--conf`**  
Sie steuert die Spark-Konfigurationsparameter. Sie ist für fortschrittliche Anwendungsfälle.

**`--encryption-type`**  
Legacy-Parameter. Das entsprechende Verhalten sollte über Sicherheitskonfigurationen konfiguriert werden. Weitere Informationen zu Sicherheitskonfigurationen finden Sie unter [Verschlüsselung von Daten, die geschrieben wurden von AWS Glue](encryption-security-configuration.md).

AWS Glue verwendet intern die folgenden Argumente und du solltest sie niemals verwenden:
+ `--debug`— AWS Innenverklebungen. Nicht einstellen.
+ `--mode`— AWS Innenverklebungen. Nicht einstellen.
+ `--JOB_NAME`— AWS Innenverklebungen. Nicht einstellen.
+ `--endpoint`— AWS Innenverklebungen. Nicht einstellen.



## 
<a name="w2aac37c11b8c17"></a>

 AWS Glue unterstützt das Bootstrapping einer Umgebung mit dem `site` Python-Modul, mit dem standortspezifische `sitecustomize` Anpassungen vorgenommen werden können. Das Bootstrapping Ihrer eigenen Initialisierungsfunktionen wird nur für fortgeschrittene Anwendungsfälle empfohlen und wird auf Glue 4.0 nach bestem Wissen unterstützt. AWS 

 Das Präfix der Umgebungsvariablen, `GLUE_CUSTOMER`, ist für die Verwendung durch Kunden reserviert. 

# AWS Glue Spark und PySpark Jobs
<a name="spark_and_pyspark"></a>

AWS Glue unterstützen Sie Spark und PySpark Jobs. Ein Spark-Job wird in einer Apache Spark-Umgebung ausgeführt, die von verwaltet wird AWS Glue. Er verarbeitet Daten in Batches. Ein Streaming-ETL-Auftrag ähnelt einem Spark-Auftrag, mit der Ausnahme, dass er ETL für Datenstreams ausführt. Er verwendet das Framework Apache Spark Structured Streaming. Einige Features von Spark-Aufträgen sind für Streaming-ETL-Aufträge nicht verfügbar.

Die folgenden Abschnitte enthalten Informationen zu AWS Glue Spark und PySpark Jobs.

**Topics**
+ [Konfiguration der Auftragseigenschaften für Spark-Jobs in AWS Glue](add-job.md)
+ [Spark-Skripte in der AWS Glue-Konsole bearbeiten](edit-script-spark.md)
+ [Aufgräge (veraltet)](console-edit-script.md)
+ [Verfolgen von verarbeiteten Daten mit Auftragslesezeichen](monitor-continuations.md)
+ [Speichern von Spark-Shuffle-Daten](monitor-spark-shuffle-manager.md)
+ [Überwachung von AWS Glue-Spark-Aufträgen](monitor-spark.md)
+ [Generative KI-Fehlerbehebung für Apache Spark in AWS Glue](troubleshoot-spark.md)
+ [Materialisierte Ansichten mit AWS Glue verwenden](materialized-views.md)

# Konfiguration der Auftragseigenschaften für Spark-Jobs in AWS Glue
<a name="add-job"></a>

Wenn Sie Ihren Job auf der AWS Glue Konsole definieren, geben Sie Werte für Eigenschaften an, um die AWS Glue Laufzeitumgebung zu steuern. 

## Definieren von Auftragseigenschaften für Spark-Aufträge
<a name="create-job"></a>

Die folgende Liste enthält Beschreibungen der Eigenschaften eines Spark-Auftrags. Informationen zu den Eigenschaften von Python-Shell-Aufträgen finden Sie unter [Definieren von Auftragseigenschaften für Python-Shell-Aufträge](add-job-python.md#create-job-python-properties). Informationen zu den Eigenschaften eines Streaming-ETL-Auftrags finden Sie unter [Definieren von Auftragseigenschaften für einen Streaming-ETL-Auftrag](add-job-streaming.md#create-job-streaming-properties).

Die Eigenschaften werden in der Reihenfolge aufgeführt, in der sie im Assistenten zum **Hinzufügen von Jobs** auf der AWS Glue Konsole angezeigt werden.

**Name**  
Geben Sie eine UTF-8-Zeichenfolge mit einer maximalen Länge von 255 Zeichen an. 

**Description**  
Geben Sie eine optionale Beschreibung mit bis zu 2.048 Zeichen ein. 

**IAM Role (IAM-Rolle)**  
Geben Sie die IAM-Rolle an, die für die Autorisierung von Ressourcen verwendet wird, die für die Ausführung des Auftrags und den Zugriff auf Datenspeicher verwendet werden. Weitere Informationen zu den Berechtigungen für die Ausführung von Jobs in AWS Glue finden Sie unter[Identitäts- und Zugriffsmanagement für AWS Glue](security-iam.md).

**Typ**  
Der Typ des ETL-Auftrags. Dieser wird automatisch basierend auf dem Typ der ausgewählten Datenquellen festgelegt.  
+ Wählen Sie **Spark** aus, um ein Apache-Spark-ETL-Skript mit dem Auftragsbefehl `glueetl` auszuführen.
+ Wählen Sie **Spark-Streaming** aus, um ein Apache-Spark-Streaming-ETL-Skript mit dem Auftragsbefehl `gluestreaming` auszuführen. Weitere Informationen finden Sie unter [Streaming-ETL-Aufträge in AWS Glue](add-job-streaming.md).
+ Wählen Sie **Python-Shell** aus, um ein Python-Skript mit dem Auftragsbefehl `pythonshell` auszuführen. Weitere Informationen finden Sie unter [Konfigurieren von Auftragseigenschaften für Python-Shell-Aufträge in AWS Glue](add-job-python.md).

**AWS Glue -Version**  
AWS Glue Version bestimmt die Versionen von Apache Spark und Python, die für den Job verfügbar sind, wie in der folgenden Tabelle angegeben.      
<a name="table-glue-versions"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/add-job.html)

**Sprache**  
Der Code im ETL-Skript definiert die Logik Ihres Auftrags. Das Skript kann in Python oder Scala programmiert werden. Sie können wählen, ob das Skript, das der Job ausführt, von Ihnen generiert AWS Glue oder bereitgestellt wird. Geben Sie den Skript-Namen und den Speicherort in Amazon Simple Storage Service (Amazon S3) an. Vergewissern Sie sich, dass sich keine Datei mit dem Namen des Skriptverzeichnisses im Pfad befindet. Weitere Informationen zum Schreiben von Skripts finden Sie unter [AWS Glue Leitfaden zur Programmierung](edit-script.md).

**Worker type (Worker-Typ)**  
Die folgenden Worker-Typen sind verfügbar:  
Die Ressourcen, die den AWS Glue Mitarbeitern zur Verfügung stehen, werden in gemessen DPUs. Eine DPU ist ein relatives Maß für die Rechenleistung, die sich aus 4 V CPUs Rechenkapazität und 16 GB Arbeitsspeicher zusammensetzt.  
+ **G.025X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jeder Worker entspricht 0,25 DPU (2 VCPUs, 4 GB Arbeitsspeicher) mit 84 GB Festplatte (ca. 34 GB freier Speicher). Wir empfehlen diesen Worker-Typ für Streaming-Aufträge mit geringem Volumen. Dieser Worker-Typ ist nur für Streaming-Jobs der AWS Glue Version 3.0 oder höher verfügbar.
+ **G.1X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jeder Worker ist einer DPU (4 VCPUs, 16 GB Arbeitsspeicher) mit 94 GB Festplatte (ca. 44 GB freier Speicher) zugeordnet. Wir empfehlen diesen Worker-Typ für Workloads wie Datentransformationen, Zusammenführungen und Abfragen. Er bietet eine skalierbare und kostengünstige Möglichkeit, die meisten Aufträge auszuführen.
+ **G.2X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jeder Worker ordnet 2 DPU (8 VCPUs, 32 GB Arbeitsspeicher) mit 138 GB Festplatte (ca. 78 GB freier Speicherplatz) zu. Wir empfehlen diesen Worker-Typ für Workloads wie Datentransformationen, Zusammenführungen und Abfragen. Er bietet eine skalierbare und kostengünstige Möglichkeit, die meisten Aufträge auszuführen.
+ **G.4X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jeder Worker ordnet 4 DPU (16 VCPUs, 64 GB Arbeitsspeicher) mit 256 GB Festplatte (ca. 230 GB freier Speicher) zu. Wir empfehlen diesen Worker-Typ für Aufträge, deren Workloads Ihre anspruchsvollsten Transformationen, Aggregationen, Verknüpfungen und Abfragen enthalten. 
+ **G.8X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jeder Worker ordnet 8 DPU (32 VCPUs, 128 GB Arbeitsspeicher) mit 512 GB Festplatte (ca. 485 GB freier Speicher) zu. Wir empfehlen diesen Worker-Typ für Aufträge, deren Workloads Ihre anspruchsvollsten Transformationen, Aggregationen, Verknüpfungen und Abfragen enthalten.
+ **G.12X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jeder Worker ordnet 12 DPU (48 VCPUs, 192 GB Arbeitsspeicher) mit 768 GB Festplatte (ca. 741 GB freier Speicher) zu. Wir empfehlen diesen Worker-Typ für Aufträge mit sehr großen und ressourcenintensiven Workloads, die eine erhebliche Rechenkapazität erfordern. 
+ **G.16X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jeder Worker ordnet 16 DPU (64 VCPUs, 256 GB Arbeitsspeicher) mit 1024 GB Festplatte (ca. 996 GB frei) zu. Wir empfehlen diesen Worker-Typ für Aufträge mit den größten und ressourcenintensivsten Workloads, die maximale Rechenkapazität erfordern. 
+ **R.1X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jedem Worker ist eine DPU mit speicheroptimierter Konfiguration zugeordnet. Wir empfehlen diesen Workertyp für speicherintensive Workloads, bei denen häufig Fehler auftreten oder bei denen hohe Raten erforderlich sind. out-of-memory memory-to-CPU 
+ **R.2X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jedem Worker sind 2 DPUs mit speicheroptimierter Konfiguration zugeordnet. Wir empfehlen diesen Workertyp für speicherintensive Workloads, bei denen häufig Fehler auftreten out-of-memory oder bei denen hohe Ratio-Werte erforderlich sind. memory-to-CPU 
+ **R.4X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jedem Worker sind 4 DPUs mit speicheroptimierter Konfiguration zugeordnet. Wir empfehlen diesen Workertyp für große speicherintensive Workloads, bei denen häufig Fehler auftreten out-of-memory oder bei denen hohe Ratio-Werte erforderlich sind. memory-to-CPU 
+ **R.8X** – Wenn Sie diese Art auswählen, müssen Sie auch einen Wert für die **Anzahl der Worker** angeben. Jedem Worker sind 8 DPUs mit speicheroptimierter Konfiguration zugeordnet. Wir empfehlen diesen Workertyp für sehr große speicherintensive Workloads, bei denen häufig Fehler auftreten out-of-memory oder bei denen hohe Ratios erforderlich sind. memory-to-CPU 
**Worker-Typ-Spezifikationen**  
Die folgende Tabelle enthält detaillierte Spezifikationen für alle verfügbaren G-Worker-Typen:    
**Spezifikationen für G-Worker-Typen**    
<a name="table-worker-specifications"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/add-job.html)
**Wichtig:** Die Worker-Typen G.12X und G.16X sowie alle R-Worker-Typen (R.1X bis R.8X) haben eine höhere Startlatenz.  
Ihnen wird ein Stundensatz berechnet, der auf der Anzahl der für die Ausführung Ihrer ETL-Jobs DPUs verwendeten Jobs basiert. Weitere Informationen finden Sie in der [AWS Glue Preisliste](https://aws.amazon.com/glue/pricing/).  
Wenn Sie für Jobs der AWS Glue Version 1.0 oder früher einen Job mithilfe der Konsole konfigurieren und den **Worker-Typ** **Standard** angeben, wird die **maximale Kapazität** festgelegt und die **Anzahl der Worker** wird zum Wert von **Maximale Kapazität** — 1. Wenn Sie das AWS Command Line Interface (AWS CLI) oder AWS SDK verwenden, können Sie den Parameter **Max Capacity** angeben, oder Sie können sowohl den ****Worker-Typ als auch die Anzahl der** Worker** angeben.  
Für Jobs der AWS Glue Version 2.0 oder höher können Sie keine **maximale Kapazität** angeben. Stattdessen sollten Sie einen **Worker-Typ** und die **Anzahl der Worker** angeben.  
**G.4X**und **G.8X** Arbeitertypen sind nur für Spark ETL-Jobs der AWS Glue Version 3.0 oder höher in den folgenden AWS Regionen verfügbar: USA Ost (Ohio), USA Ost (Nord-Virginia), USA West (Nordkalifornien), USA West (Oregon), Asien-Pazifik (Mumbai), Asien-Pazifik (Seoul), Asien-Pazifik (Singapur), Asien-Pazifik (Sydney), Asien-Pazifik (Tokio), Kanada (Zentral), Europa (Frankfurt), Europa (Irland), Europa (London), Europa (Spanien), Europa (Stockholm) und Südamerika (São Paulo).  
**G.12X****G.16X**, und **R.1X** über **R.8X** Worker-Typen sind nur für Spark ETL-Jobs der AWS Glue Version 4.0 oder höher in den folgenden AWS Regionen verfügbar: USA Ost (Nord-Virginia), USA West (Oregon), USA Ost (Ohio), Europa (Irland) und Europa (Frankfurt). Weitere Regionen werden in zukünftigen Versionen unterstützt.

**Angeforderte Anzahl der Worker**  
Für die meisten Worker-Typen müssen Sie die Anzahl der Worker angeben, die bei der Ausführung des Auftrags zugewiesen werden. 

**Job-Lesezeichen**  
Geben Sie an, wie Statusinformationen AWS Glue verarbeitet werden, wenn der Job ausgeführt wird. Sie können bereits verarbeitete Daten beibehalten lassen, Statusinformationen aktualisieren oder Statusinformationen ignorieren. Weitere Informationen finden Sie unter [Verfolgen von verarbeiteten Daten mit Auftragslesezeichen](monitor-continuations.md).

**Warteschlange für Auftragsausführung**  
Gibt an, ob Auftragsausführungen in die Warteschlange gestellt werden, um sie später auszuführen, wenn sie aufgrund von Service Quotas nicht sofort ausgeführt werden können.  
Wenn diese Option aktiviert ist, ist die Warteschlange für Auftragsausführungen aktiviert. Wenn sie nicht aktiviert ist, werden die Auftragsausführungen nicht in die Warteschlange aufgenommen.  
Stimmt diese Einstellung nicht mit dem Wert überein, der in der Auftragsausführung festgelegt wurde, wird der Wert aus dem Feld für die Auftragsausführung verwendet.

**Flexible Ausführung**  
Wenn Sie einen Job mit AWS Studio oder der API konfigurieren, können Sie eine Standard- oder flexible Jobausführungsklasse angeben. Ihre Aufträge können unterschiedliche Prioritäten und Zeitsensibilität haben. Die Standardausführungsklasse ist ideal für zeitkritische Workloads, die einen schnellen Auftragsstart und dedizierte Ressourcen erfordern.  
Die flexible Ausführungsklasse eignet sich für nicht dringende Aufträge, deren Start- und Abschlusszeiten variieren können, z. B. für Vorproduktionsaufträge, Tests und einmalige Datenübertragungen. Flexible Auftragsausführungen werden für Jobs unterstützt, die AWS Glue Version 3.0 oder höher und/oder `G.1X` `G.2X` Workertypen verwenden. Die neuen Worker-Typen (`G.12X`, `G.16X` und `R.1X` bis `R.8X`) unterstützen keine flexible Ausführung.  

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

Ausführungen von Flex-Aufträgen werden basierend auf der Anzahl der Worker abgerechnet, die zu einem beliebigen Zeitpunkt ausgeführt werden. Die Anzahl der Worker kann für die Ausführung eines flexiblen Auftrags hinzugefügt oder entfernt werden. Anstatt eine einfache Berechnung von `Max Capacity` \$1 `Execution Time` abzurechnen, trägt jeder Worker für die Zeit bei, die er während der Ausführung des Auftrags ausgeführt hat. Die Rechnung ist die Summe von (`Number of DPUs per worker`\$1`time each worker ran`).  
Weitere Informationen finden Sie im Hilfebereich in AWS Studio oder [Jobs](aws-glue-api-jobs-job.md) und[Auftragsausführungen](aws-glue-api-jobs-runs.md).

**Anzahl der Wiederholungen**  
Geben Sie an, wie oft (zwischen 0 und 10) der Job automatisch neu gestartet werden AWS Glue soll, falls er fehlschlägt. Aufträge, die das Timeout-Limit erreichen, werden nicht neu gestartet.

**Zeitüberschreitung von Aufträgen**  
Legt die maximale Ausführungszeit in Minuten fest. Die maximale Einstellung beträgt 2.880 Minuten (2 Tage). Andernfalls geben die Aufträge eine Ausnahme aus.  
Wenn der Wert leer gelassen wird, ist das Timeout standardmäßig auf 2880 Minuten festgelegt.  
Für alle vorhandenen AWS Glue Jobs mit einem Timeout-Wert von mehr als 7 Tagen wird standardmäßig ein Wert von 7 Tagen verwendet. Wenn Sie beispielsweise ein Timeout von 20 Tagen für einen Batch-Auftrag angegeben haben, wird dieser am 7. Tag gestoppt.  
**Bewährte Methoden für Auftrags-Timeouts**  
Jobs werden basierend auf der Ausführungszeit abgerechnet. Um unerwartete Gebühren zu vermeiden, konfigurieren Sie Timeout-Werte, die der erwarteten Ausführungszeit Ihres Auftrags entsprechen. 

**Erweiterte Eigenschaften**    
**Skript-Dateiname**  
Ein eindeutiger Skript-Name für Ihren Auftrag. Kann nicht als **Unbenannter Auftrag** bezeichnet werden.  
**Skriptpfad**  
Der Amazon-S3-Objekt-Speicherort des Skripts. Der Pfad muss im Format `s3://bucket/prefix/path/` eingegeben werden. Der Pfad muss mit einem Schrägstrich (`/`) enden und darf keine Dateien enthalten.  
**Auftragsmetriken**  
Schalten Sie die Erstellung von CloudWatch Amazon-Metriken ein oder aus, wenn dieser Job ausgeführt wird. Um die Profiling-Daten anzuzeigen, müssen Sie diese Option aktivieren. Weitere Informationen über das Aktivieren und Anzeigen von Metriken finden Sie unter [Auftragsüberwachung und Debugging](monitor-profile-glue-job-cloudwatch-metrics.md).   
**Kennzahlen zur Jobbeobachtbarkeit**  
Schalten Sie die Erstellung zusätzlicher CloudWatch Messwerte für die Beobachtbarkeit ein, wenn dieser Job ausgeführt wird. Weitere Informationen finden Sie unter [Überwachung mit AWS Glue-Beobachtbarkeitsmetriken](monitor-observability.md).  
**Kontinuierliche Protokollierung**  
Aktivieren Sie die kontinuierliche Protokollierung bei Amazon CloudWatch. Wenn diese Option nicht aktiviert ist, stehen Protokolle erst nach Abschluss des Auftrags zur Verfügung. Weitere Informationen finden Sie unter [Protokollierung für AWS Glue Jobs](monitor-continuous-logging.md).  
**Spark-Benutzeroberfläche**  
Aktivieren Sie die Verwendung der Spark-Benutzeroberfläche, um diese Aufgabe zu überwachen. Weitere Informationen finden Sie unter [Aktivieren der Apache-Spark-Webbenutzeroberfläche für AWS Glue-Aufgaben](monitor-spark-ui-jobs.md).   
**Spark-UI-Protokollpfade**  
Der Pfad zum Schreiben von Protokollen, wenn die Spark-UI aktiviert ist.  
**Konfiguration der Protokollierung und Überwachung über Spark-UI**  
Wählen Sie eine der folgenden Optionen:  
+ *Standard*: Schreiben Sie Protokolle mit der AWS Glue Job-Run-ID als Dateinamen. Schalten Sie die Spark-UI-Überwachung in der AWS Glue Konsole ein.
+ *Legacy*: Protokolle werden mit „spark-application-\$1Zeitstempel\$1“ als Dateinamen geschrieben. Aktivieren Sie die Spark-UI-Überwachung nicht.
+ *Standard und Legacy*: Protokolle werden sowohl an den Standard- als auch an den Legacy-Speicherorten geschrieben. Schalten Sie die Spark-UI-Überwachung in der AWS Glue Konsole ein.  
**Maximale Parallelität**  
Legt die maximale Anzahl gleichzeitiger Ausführungen fest, die für diese Ausführung zulässig sind. Der Standardwert ist 1. Bei Erreichen dieser Schwelle wird ein Fehler zurückgegeben. Der Höchstwert, den Sie angeben können, wird durch ein Service Limit gesteuert. Wenn beispielsweise beim Starten einer neuen Instance eine vorherige Ausführung läuft, möchten Sie einen Fehler zurückgeben, um zu verhindern, dass zwei Instance desselben Auftrags gleichzeitig ausgeführt werden.   
**Temporärer Pfad**  
Geben Sie den Speicherort eines Arbeitsverzeichnisses in Amazon S3 an, in das temporäre Zwischenergebnisse geschrieben werden, wenn das Skript AWS Glue ausgeführt wird. Vergewissern Sie sich, dass sich keine Datei mit dem Namen des temporären Verzeichnis im Pfad befindet. Dieses Verzeichnis wird beim AWS Glue Lesen und Schreiben in Amazon Redshift und bei bestimmten AWS Glue Transformationen verwendet.  
AWS Glue erstellt einen temporären Bucket für Jobs, falls in einer Region noch kein Bucket vorhanden ist. Dieser Bucket erlaubt möglicherweise den öffentlichen Zugriff. Sie können entweder den Bucket in Amazon S3 ändern, um den öffentlichen Zugriffsblock festzulegen, oder den Bucket später löschen, nachdem alle Aufträge in dieser Region abgeschlossen sind.  
**Schwellenwert für die Verzögerungsbenachrichtigung (Minuten)**  
Legt den Schwellenwert (in Minuten) fest, bevor eine Verzögerungsbenachrichtigung gesendet wird. Sie können diesen Schwellenwert festlegen, um Benachrichtigungen zu senden, wenn ein `RUNNING`, `STARTING` oder `STOPPING` Auftragslauf mehr als eine erwartete Anzahl von Minuten andauert.  
**Security configuration (Sicherheitskonfiguration)**  
Wählen Sie eine Sicherheitskonfiguration aus der Liste aus. Eine Sicherheitskonfiguration gibt an, wie die Daten am Amazon-S3-Ziel verschlüsselt werden: keine Verschlüsselung, serverseitige Verschlüsselung mit von AWS KMS verwalteten Schlüsseln (SSE-KMS) oder mit von Amazon S3 verwalteten Verschlüsselungsschlüsseln (SSE-S3).  
**Serverseitige Verschlüsselung**  
Wenn Sie diese Option wählen, werden die Daten beim Schreiben des ETL-Auftrags nach Amazon S3 im Ruhezustand mit SSE-S3-Verschlüsselung verschlüsselt. Sowohl Ihr Amazon-S3-Datenziel als auch alle Daten, die in ein temporäres Amazon-S3-Verzeichnis geschrieben werden, werden verschlüsselt. Diese Option wird als Auftragsparameter übergeben. Weitere Informationen finden Sie unter [Schützen von Daten mit serverseitiger Verschlüsselung mit Amazon S3-verwalteten Verschlüsselungsschlüsseln (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) im *Benutzerhandbuch von Amazon Simple Storage Service*.  
Diese Option wird bei Angabe einer Sicherheitskonfiguration ignoriert.  
**Verwenden des Glue-Datenkatalogs als Hive-Metastore**  
Wählen Sie diese Option aus, um den AWS Glue Datenkatalog als Hive-Metastore zu verwenden. Die für den Auftrag verwendete IAM-Rolle muss über die `glue:CreateDatabase`-Berechtigung verfügen. Sofern nicht bereits vorhanden, wird im Data Catalog eine Datenbank namens „default“ angelegt.

**Verbindungen**  
Wählen Sie eine VPC-Konfiguration, um auf Amazon-S3-Datenquellen zuzugreifen, die sich in Ihrer Virtual Private Cloud (VPC) befinden. Sie können eine Netzwerkverbindung in AWS Glue erstellen und verwalten. Weitere Informationen finden Sie unter [Herstellen einer Verbindung zu Daten](glue-connections.md). 

**Bibliotheken**    
**Python-Bibliothekspfad, abhängiger JARs Pfad und Pfad der referenzierten Dateien**  
Geben Sie diese Optionen an, wenn Ihr Skript sie benötigt. Sie können die durch Kommas getrennten Amazon-S3-Pfade für diese Optionen definieren, wenn Sie den Auftrag definieren. Sie können diese Pfade bei der Ausführung des Auftrag überschreiben. Weitere Informationen finden Sie unter [Bereitstellen eigener, benutzerdefinierter Skripts](console-custom-created.md).  
**Job-Parameter**  
Ein Satz von Schlüssel-Wert-Paaren, die als benannte Parameter an das Skript übergeben werden. Dies sind Standardwerte, die verwendet werden, wenn das Skript ausgeführt wird. Sie können auch in Auslösern oder beim Ausführen der Aufgabe überschrieben werden. Sie müssen dem Schlüsselnamen `--` voranstellen; z. B.: `--myKey`. Sie übergeben Jobparameter als Map, wenn Sie die verwenden AWS Command Line Interface.  
Beispiele finden Sie unter „Python parameters“ (Python-Parameter) in [Übergeben von und Zugreifen auf Python-Parameter in AWS Glue](aws-glue-programming-python-calling.md#aws-glue-programming-python-calling-parameters).  
**Tags (Markierungen)**  
Markieren Sie Ihren Auftrag mit einem **Tag-Schlüssel** und einem optionalen **Tag-Wert**. Nachdem Tag-Schlüssel erstellt wurden, sind sie schreibgeschützt. Verwenden Sie Tags für manche Ressourcen, damit sie leichter zu organisieren und identifizieren sind. Weitere Informationen finden Sie unter [AWS Schlagworte in AWS Glue](monitor-tags.md). 

## Einschränkungen für Aufträge, die auf verwaltete Tabellen von Lake Formation zugreifen
<a name="lf-table-restrictions"></a>

Beachten Sie die folgenden Hinweise und Einschränkungen, wenn Sie Jobs erstellen, die aus Tabellen lesen oder in Tabellen schreiben, die von verwaltet werden AWS Lake Formation: 
+ Die folgenden Features werden in Aufträgen, die auf Tabellen mit Filtern auf Zellebene zugreifen, nicht unterstützt:
  + [Auftrags-Lesezeichen](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html) und [Begrenzte Ausführung](https://docs.aws.amazon.com/glue/latest/dg/bounded-execution.html)
  + [Pushdown-Prädikate](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-pushdowns)
  + [Prädikate für Serverseitige Katalogpartitionen](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html#aws-glue-programming-etl-partitions-cat-predicates)
  + [enableUpdateCatalog](https://docs.aws.amazon.com/glue/latest/dg/update-from-job.html)

# Spark-Skripte in der AWS Glue-Konsole bearbeiten
<a name="edit-script-spark"></a>

Ein Skript enthält den Code, der Daten aus Quellen extrahiert, transformiert und in Ziele lädt. AWS Glue führt ein Skript aus, wenn es einen Job startet.

ETL-Skripts in AWS Glue können in Python oder Scala codiert werden. Python-Skripte verwenden eine Sprache, die eine Erweiterung des PySpark Python-Dialekts für ETL-Jobs (Extrahieren, Transformieren und Laden) darstellt. Das Skript enthält *erweiterte Konstrukte* für die Verarbeitung von ETL-Transformationen. Wenn Sie die Quellcodelogik für Ihren Auftrag automatisch generieren, wird ein Skript erstellt. Sie können dieses Skript bearbeiten oder Ihr eigenes Skript zur Verarbeitung Ihrer ETL-Vorgänge bereitstellen.

 Informationen zum Definieren und Bearbeiten von Skripts in AWS Glue finden Sie unter [AWS Glue Leitfaden zur Programmierung](edit-script.md).

## Zusätzliche Bibliotheken oder Dateien
<a name="w2aac37c11c12c13b9"></a>

Wenn Ihr Skript zusätzliche Bibliotheken oder Dateien erfordert, können Sie sie wie folgt angeben:

**Python-Bibliothekspfad**  
Durch Komma getrennte Amazon Simple Storage Service (Amazon S3)-Pfade zu den Python-Bibliotheken, die das Skript erfordert.  
Es können nur reine Python-Bibliotheken verwendet werden. Bibliotheken, die auf C-Erweiterungen basieren, wie zum Beispiel die Python Data Analysis Library von Panda , werden noch nicht unterstützt.

**Abhängiger Jars-Pfad**  
Durch Komma getrennte Amazon-S3-Pfade zu JAR-Dateien, die vom Skript benötigt werden.  
Derzeit können nur reine Java- oder Scala (2.11)-Bibliotheken verwendet werden.

**Pfad für referenzierte Dateien**  
Durch Komma getrennte Amazon-S3-Pfade zu zusätzlichen Dateien (z. B. Konfigurationsdateien), die das Skript erfordert.

# Aufgräge (veraltet)
<a name="console-edit-script"></a>

Ein Skript enthält den Code, der das Extrahieren, Transformieren und Laden (ETL) ausführt. Sie können Ihr eigenes Skript zur Verfügung stellen, oder AWS Glue kann nach Ihren Anweisungen ein Skript generieren. Informationen zum Erstellen eigener Skripts finden Sie unter [Bereitstellen eigener, benutzerdefinierter Skripts](console-custom-created.md).

Sie können ein Skript in der AWS Glue-Konsole bearbeiten. Wenn Sie ein Skript bearbeiten, können Sie Quellen, Ziele und Transformationen hinzufügen.

**So bearbeiten Sie ein Skript**

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 anschließend die Registerkarte **Jobs** (Aufträge) aus.

1. Wählen Sie einen Auftrag in der Liste aus, und wählen Sie dann **Action** (Aktion), **Edit script** (Skript bearbeiten) aus, um den Skript-Editor zu öffnen.

   Sie können den Skript-Editor auch von der Auftrags-Detailseite aus aufrufen. Wählen Sie die Registerkarte **Script** (Skript) und anschließend **Edit script** (Skript bearbeiten) aus.

   

## Skript-Editor
<a name="console-edit-script-editor"></a>

Mit dem Skript-Editor von AWS Glue können Sie Quellen, Ziele und Transformationen in Ihr Skript einfügen, ändern und löschen. Der Skript-Editor zeigt sowohl das Skript als auch ein Diagramm an, um Ihnen die Visualisierung des Datenflusses zu erleichtern.

Um ein Diagramm für das Skript zu erstellen, wählen Sie **Generate diagram (Diagramm generieren)** aus. AWS Glue verwendet Kommentarzeilen im Skript, die mit **\$1\$1** beginnen, um das Diagramm zu rendern. Um Ihr Skript im Diagramm korrekt darzustellen, müssen Sie die Parameter in den Kommentaren und die Parameter im Apache-Spark-Code synchron halten.

Mit dem Skript-Editor können Sie dort Code-Vorlagen hinzufügen, wo sich der Cursor im Skript befindet. Wählen Sie im oberen Bereich des Editors eine der folgenden Optionen aus:
+ Um dem Skript eine Quelltabelle hinzuzufügen, wählen Sie **Source** (Quelle) aus.
+ Um dem Skript eine Zieltabelle hinzuzufügen, wählen Sie **Target** (Ziel) aus.
+ Um dem Skript einen Zielort hinzuzufügen, wählen Sie **Target location** (Zielort) aus.
+ Um dem Skript eine Transformation hinzuzufügen, wählen Sie **Transform** (Transformieren) aus. Weitere Informationen über die Funktionen, die in Ihrem Skript aufgerufen werden, finden Sie unter [Programmieren AWS Sie Glue ETL-Skripte in PySpark](aws-glue-programming-python.md).
+ Um dem Skript eine Spigot-Transformation hinzuzufügen, wählen Sie **Spigot** aus.

Ändern Sie im eingefügten Code die `parameters` sowohl in den Kommentaren als auch im Apache-Spark-Code. Wenn Sie z. B. eine **Spigot**-Transformation hinzufügen, vergewissern Sie sich, dass der `path` sowohl in der `@args` Kommentarzeile als auch in der `output` Codezeile ersetzt wird.

Auf der Registerkarte **Logs** (Protokolle) werden die Protokolle angezeigt, die Ihrem Auftrag zugeordnet sind, während er ausgeführt wird. Es werden die letzten 1.000 Zeilen angezeigt.

Auf der Registerkarte **Schema** wird das Schema der ausgewählten Quellen und Ziele angezeigt, sofern es in Data Catalog verfügbar ist. 

# Verfolgen von verarbeiteten Daten mit Auftragslesezeichen
<a name="monitor-continuations"></a>

AWS Glue verfolgt Daten, die bereits während einer früheren Ausführung eines ETL-Auftrags verarbeitet wurden, indem Zustandsinformationen aus der Auftragsausführung persistiert werden. Diese persistierende Zustandsinformation wird als *Auftrags-Lesezeichen* bezeichnet. Auftragslesezeichen helfen AWS Glue bei der Pflege von Zustandsinformationen und verhindern die Wiederaufbereitung alter Daten. Mit Auftragslesezeichen können Sie neue Daten verarbeiten, wenn sie in einem geplanten Intervall erneut ausgeführt werden. Ein Aufgabenlesezeichen besteht aus den Zuständen für verschiedene Elemente von Aufgaben wie Quellen, Transformationen und Zielen. Beispielsweise könnte Ihr ETL-Auftrag neue Partitionen in einer Amazon-S3-Datei lesen. AWS Glue verfolgt, welche Partitionen der Auftrag erfolgreich verarbeitet hat, um die doppelte Verarbeitung und doppelte Daten im Zieldatenspeicher des Auftrags zu verhindern.

Aufgabenlesezeichen werden für JDBC-Datenquellen, die Relationalize-Transformation und einige Amazon Simple Storage Service (Amazon S3)-Quellen implementiert. In der folgenden Tabelle sind die Amazon-S3-Quellformate aufgeführt, die AWS Glue für Auftragslesezeichen unterstützt.


| AWS Glue-Version | Quellformate für Amazon S3 | 
| --- | --- | 
| Version 0.9 | JSON, CSV, Apache Avro, XML | 
| Version 1.0 und höher | JSON, CSV, Apache Avro, XML, Parquet, ORC | 

Informationen zu den AWS Glue-Versionen erhalten Sie unter [Definieren von Auftragseigenschaften für Spark-Aufträge](add-job.md#create-job).

Die Funktion Job-Lesezeichen bietet zusätzliche Funktionen, wenn sie über AWS Glue Skripts aufgerufen wird. Wenn Sie Ihr generiertes Skript durchsuchen, finden Sie möglicherweise Transformationskontexte, die sich auf dieses Feature beziehen. Weitere Informationen finden Sie unter [Verwenden von Auftragslesezeichen](programming-etl-connect-bookmarks.md).

**Topics**
+ [Verwenden von Auftragslesezeichen in AWS Glue](#monitor-continuations-implement)
+ [Operative Details des Features Auftragslesezeichen](#monitor-continuations-script)

## Verwenden von Auftragslesezeichen in AWS Glue
<a name="monitor-continuations-implement"></a>

Beim Start der Aufgabe wird die Aufgabenlesezeichenoption als Parameter übergeben. In der folgenden Tabelle werden die Optionen zum Einrichten von Aufgabenlesezeichen in der AWS Glue-Konsole beschrieben.


****  

| Job-Lesezeichen | Description | 
| --- | --- | 
| Aktivieren | Veranlasst den Auftrag, den Status nach einer Ausführung zu aktualisieren, um die zuvor verarbeiteten Daten zu verfolgen. Wenn Ihr Auftrag eine Quelle mit Unterstützung für Auftragslesezeichen hat, verfolgt er die verarbeiteten Daten, und wenn ein Auftrag ausgeführt wird, verarbeitet er neue Daten seit dem letzten Kontrollpunkt. | 
| Deaktivieren | Auftragslesezeichen werden nicht verwendet, und der Auftrag verarbeitet immer den gesamten Datensatz. Sie sind für die Verwaltung der Ergebnisse früherer Auftragsausführungen verantwortlich. Dies ist die Standardeinstellung. | 
| Pause |  Verarbeiten Sie inkrementelle Daten seit der letzten erfolgreichen Ausführung oder die Daten in dem durch die folgenden Unteroptionen identifizierten Bereich, ohne den Status des letzten Lesezeichens zu aktualisieren. Sie sind für die Verwaltung der Ausgabe früherer Auftragsausführungen verantwortlich. Die beiden Unteroptionen sind: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitor-continuations.html) Der Auftrags-Lesezeichenstatus wird nicht aktualisiert, wenn dieser Optionssatz angegeben wird. Die Unteroptionen sind optional, aber wenn sie verwendet werden, müssen beide Unteroptionen bereitgestellt werden.  | 

Weitere Details zu den Parametern, die an Aufgaben in der Befehlszeile übergeben werden, und insbesondere zu Aufgabenlesezeichen finden Sie unter [Verwenden von Auftragsparametern in AWS Glue-Jobs](aws-glue-programming-etl-glue-arguments.md).

Für Amazon-S3-Eingabequellen überprüfen AWS Glue-Auftragslesezeichen den Zeitpunkt der letzten Änderung der Objekte, um zu überprüfen, welche Objekte erneut verarbeitet werden müssen. Wenn Ihre Eingabedaten seit der letzten Auftragsausführung geändert wurden, werden die Dateien bei der erneuten Ausführung des Auftrags erneut verarbeitet.

Für JDBC-Quellen gelten die folgenden Regeln:
+ Für jede Tabelle verwendet AWS Glue eine oder mehrere Spalten als Lesezeichenschlüssel, um neue und verarbeitete Daten zu bestimmen. Die Lesezeichentasten bilden zusammen einen einzigen zusammengesetzten Schlüssel.
+ AWS Glue verwendet standardmäßig den Primärschlüssel als Lesezeichenschlüssel, vorausgesetzt, dass er sequentiell erhöht oder verringert wird (ohne Lücken).
+ Sie können die Spalten angeben, die als Lesezeichenschlüssel in Ihrem AWS Glue Skript verwendet werden sollen. Weitere Hinweise zur Verwendung von Job-Lesezeichen in AWS Glue Skripten finden Sie unter[Verwenden von Auftragslesezeichen](programming-etl-connect-bookmarks.md).
+ AWS Glue unterstützt nicht die Verwendung von Spalten mit Namen, bei denen die Groß- und Kleinschreibung beachtet wird, als Auftragslesezeichenschlüssel.

Ab sofort können Sie Ihre Auftragslesezeichen für Ihre AWS Glue-Spark-ETL-Aufträge zu jeder beliebigen vorherigen Auftragsausführung zurückspulen. Mit der Funktion werden Datenauffüllszenarien vereinfacht. Sie können Auftragslesezeichen zu jeder beliebigen früheren Auftragsausführung zurückspulen, was dazu führt, dass in der nachfolgenden Auftragsausführung nur die Daten aus der mit Lesezeichen versehenen Auftragsausführung erneut verarbeitet werden.

Wenn Sie beabsichtigen, alle Daten mit demselben Auftrag erneut zu verarbeiten, setzen Sie das Auftragslesezeichen zurück. Um den Status des Auftragslesezeichens zurückzusetzen, verwenden Sie die AWS Glue-Konsole, die API-Operation [ResetJobBookmark Aktion (Python: reset\$1job\$1bookmark)](aws-glue-api-jobs-runs.md#aws-glue-api-jobs-runs-ResetJobBookmark) oder die AWS CLI. Geben Sie z. B. den folgenden Befehl mit der AWS CLI ein:

```
    aws glue reset-job-bookmark --job-name my-job-name
```

Wenn Sie ein Lesezeichen zurückspulen oder zurücksetzen, bereinigt AWS Glue die Zieldateien nicht, da mehrere Ziele vorhanden sind und Ziele nicht mit Auftragslesezeichen verfolgt werden können. Nur Quelldateien werden mit Auftragslesezeichen verfolgt. Beim Zurückspulen und erneuten Verarbeiten der Quelldateien können Sie verschiedene Ausgabeziele erstellen, um doppelte Daten in der Ausgabe zu vermeiden.

AWS Glue verfolgt die Auftrags-Lesezeichen nach Auftrag. Wenn Sie einen Auftrag löschen, wird das Auftrags-Lesezeichen gelöscht.

In einigen Fällen haben Sie möglicherweise AWS Glue-Auftragslesezeichen aktiviert, aber Ihr ETL-Auftrag verarbeitet Daten, die bereits in einem früheren Lauf verarbeitet wurden. Informationen zur Behebung häufiger Ursachen für diesen Fehler finden Sie unter [Behebung häufiger Einrichtungsfehler bei Glue](glue-troubleshooting-errors.md).

## Operative Details des Features Auftragslesezeichen
<a name="monitor-continuations-script"></a>

Dieser Abschnitt beschreibt weitere operative Details zur Verwendung von Auftragslesezeichen.

Auftragslesezeichen speichern die Zustände für einen Auftrag. Jede Instance des Status wird durch einen Auftragsnamen und eine Versionsnummer gekennzeichnet. Wenn ein Skript `job.init` aufruft, ruft es seinen Zustand ab und erhält immer die neueste Version. Innerhalb eines Zustands gibt es mehrere Zustandselemente, die für jede Quell-, Transformations- und Speicher-Instance im Skript spezifisch sind. Diese Zustandselemente werden durch einen Transformationskontext identifiziert, der an das entsprechende Element (Quelle, Transformation oder Speicher) im Skript angefügt ist. Die Zustandselemente werden atomar gespeichert, wenn `job.commit` aus dem Benutzerskript aufgerufen wird. Das Skript ruft den Auftragsnamen und die Steuerungsoption für die Auftragslesezeichen aus den Argumenten ab.

Die Zustandselemente im Auftragslesezeichen sind quell-, transformations- oder speicherspezifische Daten. Angenommen, Sie möchten beispielsweise inkrementelle Daten aus einem Amazon-S3-Speicherort, an den ständig von einem vorgelagerten Auftrag oder Prozess geschrieben wird, lesen. In diesem Fall muss das Skript feststellen, was bisher verarbeitet wurde. Die Implementierung des Auftragslesezeichens für die Amazon-S3-Quelle speichert Informationen, so dass der Auftrag beim erneuten Ausführen nur die neuen Objekte anhand der gespeicherten Informationen filtern und den Status für den nächsten Durchlauf des Auftrags neu berechnen muss. Ein Zeitstempel wird verwendet, um die neuen Dateien zu filtern.

Zusätzlich zu den Zustandselementen haben Auftragslesezeichen eine *Laufnummer*, eine *Versuchsnummer* und eine *Versionsnummer*. Die Laufnummer verfolgt den Lauf des Auftrags, und die Versuchsnummer zeichnet die Versuche für einen Auftragslauf auf. Die Auftragslaufnummer ist eine monoton steigende Zahl, die bei jedem erfolgreichen Lauf erhöht wird. Die Versuchsnummer verfolgt die Versuche für jeden Lauf und wird nur dann erhöht, wenn es nach einem fehlgeschlagenen Versuch einen Lauf gibt. Die Versionsnummer steigt monoton an und verfolgt die Updates eines Auftragslesezeichens.

In der AWS Glue Servicedatenbank werden die Lesezeichenstatus für alle Transformationen zusammen als Schlüssel-Wert-Paare gespeichert:

```
{
  "job_name" : ...,
  "run_id": ...,
  "run_number": ..,
  "attempt_number": ...
  "states": {
    "transformation_ctx1" : {
      bookmark_state1
    },
    "transformation_ctx2" : {
      bookmark_state2
    }
  }
}
```

**Best Practices**  
Im Folgenden finden Sie bewährte Methoden zur Nutzung von Auftragslesezeichen.
+ *Ändern Sie die Datenquelleneigenschaft nicht, wenn das Lesezeichen aktiviert ist*. Beispielsweise gibt es eine Datenquelle „datasource0“, die auf einen Eingabepfad A von Amazon S3 verweist, und der Auftrag hat aus einer Quelle gelesen, die mehrere Runden lang mit aktiviertem Lesezeichen ausgeführt wurde. Wenn Sie den Eingabepfad von datasource0 in Amazon S3-Pfad B ändern, ohne das zu ändern`transformation_ctx`, verwendet der AWS Glue Job den alten gespeicherten Lesezeichenstatus. Dies führt dazu, dass Dateien im Eingabepfad B fehlen oder übersprungen werden, da AWS Glue davon ausgegangen wird, dass diese Dateien in früheren Durchläufen verarbeitet wurden. 
+ *Verwenden Sie eine Katalogtabelle mit Lesezeichen für eine bessere Partitionsverwaltung*. Lesezeichen funktionieren sowohl für Datenquellen aus dem Datenkatalog als auch aus Optionen. Es ist jedoch schwierig, remove/add neue Partitionen mit dem From Options Ansatz zu erstellen. Die Verwendung einer Katalogtabelle mit Crawlern kann eine bessere Automatisierung bieten, um die neu hinzugefügten [Partitionen](https://docs.aws.amazon.com/glue/latest/dg/tables-described.html#tables-partition) nachzuverfolgen, und gibt Ihnen die Flexibilität zur Auswahl bestimmter Partitionen mit einem [Pushdown-Prädikat](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-partitions.html).
+ *Verwenden Sie die [Dateiauflistung von AWS Glue für Amazon S3](https://aws.amazon.com/premiumsupport/knowledge-center/glue-oom-java-heap-space-error/) für große Datensätze*. Ein Lesezeichen listet alle Dateien unter jeder Eingabepartition auf und filtert sie. Wenn sich also zu viele Dateien unter einer einzelnen Partition befinden, kann das Lesezeichen den OOM-Fehler für den Treiber auslösen. Verwenden Sie den AWS Glue Amazon S3 S3-Datei-Lister, um zu vermeiden, dass alle Dateien im Speicher gleichzeitig aufgelistet werden.

# Speichern von Spark-Shuffle-Daten
<a name="monitor-spark-shuffle-manager"></a>

Shuffling ist ein wichtiger Schritt in einem Spark-Job, wenn Daten zwischen Partitionen neu angeordnet werden. Dies ist erforderlich, da umfassende Transformationen wie `join`, ` groupByKey`, `reduceByKey` und `repartition` Informationen von anderen Partitionen benötigen, um die Verarbeitung abzuschließen. Spark sammelt die erforderlichen Daten von jeder Partition und kombiniert sie zu einer neuen Partition. Beim Mischen werden Daten auf die Festplatte geschrieben und über das Netzwerk übertragen. Infolgedessen ist der Shuffle-Vorgang an die lokale Festplattenkapazität gebunden. Spark gibt den Fehler `No space left on device` oder den Fehler ` MetadataFetchFailedException` aus, wenn auf dem Executor nicht genügend Speicherplatz übrig ist und keine Wiederherstellung vorliegt.

**Anmerkung**  
 AWS Glue Das Spark-Shuffle-Plugin mit Amazon S3 wird nur für AWS Glue ETL-Jobs unterstützt. 

**Lösung**  
Mit AWS Glue können Sie nun Amazon S3 zum Speichern von Spark-Shuffle-Daten verwenden. Amazon S3 ist ein Objektspeicherservice, der branchenführende Skalierbarkeit, Datenverfügbarkeit, Sicherheit und Leistung bietet. Diese Lösung teilt Rechenleistung und Speicher für Ihre Spark-Aufträge auf und bietet vollständige Elastizität und kostengünstigen Shuffle-Speicher, sodass Sie Ihre Shuffle-intensiven Workloads zuverlässig ausführen können.

![\[Spark workflow showing Map and Reduce stages using Amazon S3 for shuffle data storage.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/gs-s3-shuffle-diagram.png)


Wir stellen ein neues Cloud-Shuffle-Speicher-Plugin für Apache Spark zur Verwendung von Amazon S3 vor. Sie können Amazon-S3-Shuffling aktivieren, um Ihre AWS Glue-Aufträge zuverlässig ohne Fehler auszuführen, wenn bekannt ist, dass sie durch die lokale Festplattenkapazität für große Shufflevorgänge gebunden sind. In einigen Fällen ist das Shuffling zu Amazon S3 geringfügig langsamer als die lokale Festplatte (oder EBS), wenn Sie eine große Anzahl kleiner Partitionen oder Shuffle-Dateien haben, die in Amazon S3 geschrieben wurden.

## Voraussetzungen für die Verwendung des Cloud-Shuffle-Speicher-Plugins
<a name="monitor-spark-shuffle-manager-prereqs"></a>

 Um das Cloud Shuffle Storage Plugin mit AWS Glue ETL-Jobs zu verwenden, benötigen Sie Folgendes: 
+ Ein Amazon-S3-Bucket, der sich in der gleichen Region befindet, in der Ihr Auftrag ausgeführt wird, um die Shuffle- und Ausgabedaten zwischenzuspeichern. Das Amazon-S3-Präfix des Shuffle-Speichers kann wie im folgenden Beispiel mit `--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket/prefix/` angegeben werden:

  ```
  --conf spark.shuffle.glue.s3ShuffleBucket=s3://glue-shuffle-123456789-us-east-1/glue-shuffle-data/
  ```
+  Legen Sie die Lebenszyklusrichtlinien für den Amazon-S3-Speicher auf das *Präfix* fest (z. B. `glue-shuffle-data`), da der Shuffle-Manager die Dateien nach Abschluss der Aufgabe nicht bereinigt. Die dazwischen liegenden Shuffle- und Ausgabedaten sollten nach Beendigung eines Auftrags gelöscht werden. Benutzer können Richtlinien für einen kurzen Lebenszyklus für das Präfix festlegen. Anweisungen zum Einrichten einer Amazon-S3-Lebenszyklusrichtlinie finden Sie unter [Lebenszykluskonfiguration für einen Bucket festlegen](https://docs.aws.amazon.com//AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html) im Benutzerhandbuch für Amazon Simple Storage Service.

## AWS GlueSpark Shuffle Manager von der Konsole aus verwenden AWS
<a name="monitor-spark-shuffle-manager-using-console"></a>

Um den AWS Glue Spark-Shuffle-Manager bei der Konfiguration eines Jobs über die AWS Glue Konsole oder AWS Glue Studio einzurichten: Wählen Sie den Job-Parameter **-- write-shuffle-files-to -s3, um Amazon S3 S3-Shuffling** für den Job zu aktivieren.

![\[Job parameters interface showing --write-shuffle-files- parameter and option to add more.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/gs-s3-shuffle.png)


## Verwendung des AWS Glue-Spark-Shuffle-Plugins
<a name="monitor-spark-shuffle-manager-using"></a>

Die folgenden Auftragsparameter aktivieren und optimieren die AWS Glue-Shuffle-Manager. Da es sich bei diesen Parametern um Flags handelt, werden die angegebenen Werte nicht berücksichtigt.
+ `--write-shuffle-files-to-s3` – Der wichtigste Flag, der den AWS Glue-Spark-Shuffle-Manager aktiviert, um Amazon-S3-Buckets zum Schreiben und Lesen von Shuffle-Daten zu verwenden. Wenn das Flag nicht angegeben ist, wird der Shuffle-Manager nicht verwendet.
+ `--write-shuffle-spills-to-s3` – (Nur von AWS Glue-Version 2.0 unterstützt). Ein optionales Flag, mit dem Sie Ausgabeateien in Amazon-S3-Buckets auslagern können, was zusätzliche Ausfallsicherheit für Ihren Spark-Auftrag bereitstellt. Das ist nur bei großen Workloads erforderlich, bei denen viele Daten unabsichtlich auf der Festplatte landen. Wenn das Flag nicht angegeben ist, werden keine Ausgabe-Zwischendateien geschrieben.
+ ` --conf spark.shuffle.glue.s3ShuffleBucket=s3://<shuffle-bucket>` – Ein weiterer optionaler Parameter, der den Amazon S3 Bucket angibt, in den Sie die Shuffle-Dateien schreiben. Standardmäßig /shuffle-data. `--TempDir` AWS Glue 3.0\$1 unterstützt das Schreiben von Shuffle-Dateien in mehrere Buckets, indem Buckets mit einem Kommatrennzeichen angegeben werden, wie in. `--conf spark.shuffle.glue.s3ShuffleBucket=s3://shuffle-bucket-1/prefix,s3://shuffle-bucket-2/prefix/` Die Verwendung mehrerer Buckets verbessert die Leistung. 

Sie müssen Sicherheitskonfigurationseinstellungen vornehmen, um die Verschlüsselung im Ruhezustand für die Shuffle-Daten zu aktivieren. Weitere Informationen zu Sicherheitskonfigurationen finden Sie unter[Einrichten der Verschlüsselung in AWS Glue](set-up-encryption.md). AWS Glue unterstützt alle anderen Shuffle-bezogenen Konfigurationen, die von Spark bereitgestellt werden.

**Software-Binärdateien für das Cloud-Shuffle-Speicher-Plugin**  
Sie können auch die Software-Binärdateien des Cloud-Shuffle-Speicher-Plugins für Apache Spark unter der Apache-2.0-Lizenz herunterladen und in jeder Spark-Umgebung ausführen. Das neue Plugin bietet out-of-the Box-Unterstützung für Amazon S3 und kann auch einfach für die Verwendung anderer Formen von Cloud-Speicher wie [Google Cloud Storage und Microsoft Azure Blob Storage](https://github.com/aws-samples/aws-glue-samples/blob/master/docs/cloud-shuffle-plugin/README.md) konfiguriert werden. Weitere Informationen finden Sie unter [Cloud-Shuffle-Speicher-Plugin für Apache Spark](https://docs.aws.amazon.com/glue/latest/dg/cloud-shuffle-storage-plugin.html).

**Hinweise und Einschränkungen**  
Im Folgenden finden Sie Hinweise oder Einschränkungen für den AWS Glue-Shuffle-Manager:
+  AWS Glue Shuffle Manager löscht die (temporären) Shuffle-Datendateien, die in Ihrem Amazon S3 S3-Bucket gespeichert sind, nicht automatisch, nachdem ein Job abgeschlossen ist. Befolgen Sie zur Gewährleistung des Datenschutzes die Anweisungen in [Voraussetzungen für die Verwendung des Cloud-Shuffle-Speicher-Plugins](#monitor-spark-shuffle-manager-prereqs), bevor Sie das Cloud-Shuffle-Speicher-Plugin aktivieren. 
+ Sie können dieses Feature verwenden, wenn Ihre Daten verzerrt sind.

# Cloud-Shuffle-Speicher-Plugin für Apache Spark
<a name="cloud-shuffle-storage-plugin"></a>

Das Cloud-Shuffle-Speicher-Plugin ist ein mit der [`ShuffleDataIO`-API](https://github.com/apache/spark/blob/master/core/src/main/java/org/apache/spark/shuffle/api/ShuffleDataIO.java) kompatibles Apache-Spark-Plugin, das das Speichern von Shuffle-Daten auf Cloud-Speichersystemen (wie Amazon S3) ermöglicht. Es hilft Ihnen, die lokale Festplattenspeicherkapazität für große Shuffle-Operationen, die häufig durch Transformationen wie, `groupByKey` und `repartition` in Ihren Spark-Anwendungen ausgelöst werden `join``reduceByKey`, zu ergänzen oder zu ersetzen, wodurch häufige Ausfälle oder price/performance Störungen Ihrer serverlosen Datenanalysejobs und Pipelines reduziert werden.

**AWS Glue**  
In den AWS Glue-Versionen 3.0 und 4.0 ist das Plugin bereits vorinstalliert und ermöglichen das Shuffling zu Amazon S3 ohne zusätzliche Schritte. Weitere Informationen finden Sie unter [AWS Glue-Spark-Shuffle-Plugin mit Amazon S3](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-shuffle-manager.html) zur Aktivierung des Features für Ihre Spark-Anwendungen.

**Andere Spark-Umgebungen**  
Für das Plugin müssen die folgenden Spark-Konfigurationen in anderen Spark-Umgebungen festgelegt werden:
+ `--conf spark.shuffle.sort.io.plugin.class=com.amazonaws.spark.shuffle.io.cloud.ChopperPlugin`: Dies informiert Spark, dieses Plugin für Shuffle IO zu verwenden.
+ `--conf spark.shuffle.storage.path=s3://bucket-name/shuffle-file-dir`: Der Pfad, in dem Ihre Shuffle-Dateien gespeichert werden.

**Anmerkung**  
Das Plugin überschreibt eine Spark-Kernklasse. Daher muss das Plugin-Jar vor den Spark-Jars geladen werden. Sie können dies mit `userClassPathFirst` in On-Premises-YARN-Umgebungen tun, wenn das Plugin außerhalb von AWS Glue verwendet wird.

## Bündeln des Plugins mit Ihren Spark-Anwendungen
<a name="cloud-shuffle-storage-plugin-bundling"></a>

Sie können das Plugin mit Ihren Spark-Anwendungen und Spark-Verteilungen (Versionen 3.1 und höher) bündeln, indem Sie die Plugin-Abhängigkeit in Ihrem Maven `pom.xml` hinzufügen, während Sie Ihre Spark-Anwendungen lokal entwickeln. Weitere Informationen zu den Plugin- und Spark-Versionen finden Sie unter [Plugin-Versionen](#cloud-shuffle-storage-plugin-versions).

```
<repositories>
   ...
    <repository>
        <id>aws-glue-etl-artifacts</id>
        <url>https://aws-glue-etl-artifacts.s3.amazonaws.com/release/ </url>
    </repository>
</repositories>
...
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>chopper-plugin</artifactId>
    <version>3.1-amzn-LATEST</version>
</dependency>
```

Sie können die Binärdateien alternativ direkt von AWS Glue Maven-Artefakten herunterladen und sie wie folgt in Ihre Spark-Anwendung integrieren.

```
#!/bin/bash
sudo wget -v https://aws-glue-etl-artifacts.s3.amazonaws.com/release/com/amazonaws/chopper-plugin/3.1-amzn-LATEST/chopper-plugin-3.1-amzn-LATEST.jar -P /usr/lib/spark/jars/
```

Beispiel spark-submit

```
spark-submit --deploy-mode cluster \
--conf spark.shuffle.storage.s3.path=s3://<ShuffleBucket>/<shuffle-dir> \
--conf spark.driver.extraClassPath=<Path to plugin jar> \ 
--conf spark.executor.extraClassPath=<Path to plugin jar> \
--class <your test class name> s3://<ShuffleBucket>/<Your application jar> \
```

## Optionale Konfigurationen
<a name="cloud-shuffle-storage-plugin-optional"></a>

Dies sind optionale Konfigurationswerte, die das Amazon-S3-Zufallsverhalten steuern. 
+ `spark.shuffle.storage.s3.enableServerSideEncryption`: Enable/disable S3 SSE für Shuffle- und Spill-Dateien. Der Standardwert ist `true`.
+ `spark.shuffle.storage.s3.serverSideEncryption.algorithm`: Der zu verwendende SSE-Algorithmus. Der Standardwert ist `AES256`.
+ `spark.shuffle.storage.s3.serverSideEncryption.kms.key`: Der KMS-Schlüssel-ARN, wenn SSE aws:kms aktiviert ist.

Neben diesen Konfigurationen müssen Sie möglicherweise Konfigurationen wie `spark.hadoop.fs.s3.enableServerSideEncryption` und **andere umgebungsspezifische Konfigurationen** festlegen, um sicherzustellen, dass die für Ihren Anwendungsfall geeignete Verschlüsselung angewendet wird.

## Plugin-Versionen
<a name="cloud-shuffle-storage-plugin-versions"></a>

Dieses Plugin wird für die Spark-Versionen unterstützt, die jeder AWS Glue Version zugeordnet sind. Die folgende Tabelle zeigt die AWS Glue Version, Spark-Version und die zugehörige Plugin-Version mit Amazon S3 S3-Speicherort für die Software-Binärdatei des Plugins.


| AWS Glue-Version | Spark-Version | Plugin-Version | Amazon-S3-Speicherort | 
| --- | --- | --- | --- | 
| 3.0 | 3.1 | 3.1-amzn-LATEST |  s3://aws-glue-etl-artifacts/release/com/amazonaws/chopper-plugin/3.1-amzn-0/chopper-Plugin-3.1-amzn-latest.jar  | 
| 4,0 | 3.3 | 3.3-amzn-LATEST |  s3://aws-glue-etl-artifacts/release/com/amazonaws/chopper-plugin/3.3-amzn-0/chopper-plugin-3.3-amzn-neuest.jar  | 

## License
<a name="cloud-shuffle-storage-plugin-binary-license"></a>

Die Software-Binärdatei für dieses Plugin ist unter der Apache-2.0-Lizenz lizenziert.

# Überwachung von AWS Glue-Spark-Aufträgen
<a name="monitor-spark"></a>

**Topics**
+ [Spark-Metriken verfügbar in AWS Glue Studio](#console-jobs-details-metrics-spark)
+ [Überwachen von Aufgaben über die Apache-Spark-Webbenutzeroberfläche](monitor-spark-ui.md)
+ [Überwachung mit Einblicken in die AWS Glue Auftragsausführung](monitor-job-insights.md)
+ [Überwachung mit Amazon CloudWatch](monitor-cloudwatch.md)
+ [Auftragsüberwachung und Debugging](monitor-profile-glue-job-cloudwatch-metrics.md)

## Spark-Metriken verfügbar in AWS Glue Studio
<a name="console-jobs-details-metrics-spark"></a>

Die Registerkarte **Metrics (Metriken)** zeigt Metriken, die erfasst werden, wenn ein Auftrag ausgeführt wird und das Profiling aktiviert ist. Die folgenden Diagramme werden in Spark-Aufträgen angezeigt: 
+ ETL-Datenbewegung
+ Speicherprofil: Treiber und Executors

Wählen Sie **View additional metrics (Weitere Metriken anzeigen)**, um die folgenden Graphen anzuzeigen:
+ ETL-Datenbewegung
+ Speicherprofil: Treiber und Executors
+ Datenmischung über Executors hinweg
+ CPU-Auslastung: Treiber und Executors
+ Auftragsausführung: Aktive Executors, Abgeschlossen Phasen und maximal benötigte Executors

Die Daten für diese Diagramme werden in CloudWatch Metriken übertragen, wenn der Job für die Erfassung von Metriken konfiguriert ist. Weitere Informationen über das Aktivieren von Metriken und die Interpretation der Graphen finden Sie unter [Auftragsüberwachung und Debugging](monitor-profile-glue-job-cloudwatch-metrics.md). 

**Example Der Graph für die ETL-Datenbewegung**  
Der Graph für die ETL-Datenbewegung zeigt die folgenden Metriken:  
+ Die Anzahl der von allen Executors von Amazon S3 gelesenen Bytes – [`glue.ALL.s3.filesystem.read_bytes`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.read_bytes)
+ Die Anzahl der von allen Executors in Amazon S3 geschriebenen Bytes – [`glue.ALL.s3.filesystem.write_bytes`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.write_bytes)

![\[Der Graph für die ETL-Datenbewegung auf der Registerkarte Metrics (Metriken) der AWS Glue-Konsole.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/job_detailed_etl.png)


**Example Der Graph für das Speicherprofil**  
Der Graph für das Speicherprofil zeigt die folgenden Metriken:  
+ Der vom JVM-Heap für diesen Treiber (Skalierung: 0-1) verwendete Speicheranteil – vom Treiber, einem durch *executorId* identifizierten Executor oder allen Executors –
  + [`glue.driver.jvm.heap.usage`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.jvm.heap.usage)
  + [`glue.executorId.jvm.heap.usage`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.executorId.jvm.heap.usage)
  + [`glue.ALL.jvm.heap.usage`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.usage)

![\[Der Graph für das Speicherprofil auf der Registerkarte Metrics (Metriken) der AWS Glue-Konsole.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/job_detailed_mem.png)


**Example Der Graph für die Datenmischung über Executors hinweg**  
Der Graph für das Mischen der Daten über alle Executors hinweg zeigt die folgenden Metriken:  
+ Die Zahl der von allen Executors gelesenen Bytes, um ihre Daten zu mischen - [`glue.driver.aggregate.shuffleLocalBytesRead`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.shuffleLocalBytesRead)
+ Die Zahl der von allen Executors geschriebenen Bytes, um ihre Daten zu mischen - [`glue.driver.aggregate.shuffleBytesWritten`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.shuffleBytesWritten)

![\[Der Graph für die Datenmischung über Executors hinweg auf der Registerkarte Metrics (Metriken) der AWS Glue-Konsole.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/job_detailed_data.png)


**Example Der Graph für die CPU-Auslastung**  
Der Graph für die CPU-Auslastung zeigt die folgenden Metriken:  
+ Der vom Treiber verwendete Anteil der CPU-Systemauslastung (Skalierung: 0-1) – vom Treiber, einem durch *executorId* identifizierten Executor oder allen Executors –
  + [`glue.driver.system.cpuSystemLoad`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.system.cpuSystemLoad)
  + [`glue.executorId.system.cpuSystemLoad`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.executorId.system.cpuSystemLoad)
  + [`glue.ALL.system.cpuSystemLoad`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.system.cpuSystemLoad)

![\[Der Graph für die CPU-Auslastung auf der Registerkarte Metrics (Metriken) der AWS Glue-Konsole.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/job_detailed_cpu.png)


**Example Der Graph für die Auftragsausführung**  
Der Graph für die Auftragsausführung zeigt die folgenden Metriken:  
+ Die Anzahl der aktiven Executors - [`glue.driver.ExecutorAllocationManager.executors.numberAllExecutors`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberAllExecutors)
+ Die Anzahl der abgeschlossenen Phasen - [`glue.aggregate.numCompletedStages`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.numCompletedStages)
+ Die Anzahl maximal benötigter Executors - [`glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors`](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors)

![\[Der Graph für die Auftragsausführung auf der Registerkarte Metrics (Metriken) der AWS Glue-Konsole.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/job_detailed_exec.png)


# Überwachen von Aufgaben über die Apache-Spark-Webbenutzeroberfläche
<a name="monitor-spark-ui"></a>

Sie können die Apache-Spark-Webbenutzeroberfläche zum Überwachen und Debuggen von AWS Glue-ETL-Aufträgen verwenden, die auf dem AWS Glue-Aufgabensystem ausgeführt werden, und von Spark-Anwendungen, die auf AWS Glue-Entwicklungsendpunkten ausgeführt werden. Sie können in der Spark-Benutzeroberfläche folgende Punkte für die einzelnen Aufgaben überprüfen:
+ Ereignis-Zeitplan der einzelnen Spark-Phasen
+ Ausgerichtetes azyklisches Diagramm (Directed Acyclic Graph, DAG) der Aufgabe
+ Physische und logische Pläne für SparkSQL-Abfragen
+ Zugrunde liegende Spark-Umgebungsvariablen für die einzelnen Aufgaben

Weitere Informationen zur Verwendung der Spark-Web-UI finden Sie unter [Web-UI](https://spark.apache.org/docs/3.3.0/web-ui.html) in der Spark-Dokumentation. Anleitungen dazu, wie Sie die Ergebnisse der Spark-Benutzeroberfläche interpretieren können, um die Leistung Ihres Jobs zu verbessern, finden Sie unter [Bewährte Methoden zur Leistungsoptimierung AWS Glue für Apache Spark-Jobs](https://docs.aws.amazon.com/prescriptive-guidance/latest/tuning-aws-glue-for-apache-spark/introduction.html) in AWS Prescriptive Guidance.

 Sie können die Spark-Benutzeroberfläche in der AWS Glue Konsole sehen. Dies ist verfügbar, wenn ein AWS Glue Job auf Versionen AWS Glue 3.0 oder höher ausgeführt wird, wobei die Logs im Standardformat (und nicht im Legacy-Format) generiert werden, was der Standard für neuere Jobs ist. Wenn Sie über Protokolldateien mit mehr als 0,5 GB verfügen, können Sie die Unterstützung für fortlaufende Protokolle für Auftragsausführungen in Versionen AWS Glue 4.0 oder höher aktivieren, um die Archivierung, Analyse und Problembehandlung von Protokollen zu vereinfachen.

Sie können die Spark-Benutzeroberfläche mithilfe der AWS Glue Konsole oder der AWS Command Line Interface (AWS CLI) aktivieren. Wenn Sie die Spark-Benutzeroberfläche aktivieren, können AWS Glue-ETL-Aufträge und Spark-Anwendungen in AWS Glue-Entwicklungsendpunkten Spark-Ereignisprotokolle an einem Speicherort sichern, den Sie in Amazon Simple Storage Service (Amazon S3) angeben. Die so in Amazon S3 gesicherten Ereignisprotokolle können in der Spark-Benutzeroberfläche in Echtzeit während der Auftragsausführung und nach Abschluss des Auftrags verwendet werden. Die Protokolle verbleiben zwar in Amazon S3, können aber über die Spark-Benutzeroberfläche in der AWS Glue Konsole angezeigt werden. 

## Berechtigungen
<a name="monitor-spark-ui-limitations-permissions"></a>

 Um die Spark-Benutzeroberfläche in der AWS Glue Konsole zu verwenden, können Sie alle einzelnen Dienste verwenden `UseGlueStudio` oder hinzufügen APIs. Alle APIs sind erforderlich, um die Spark-Benutzeroberfläche vollständig nutzen zu können. Benutzer können jedoch auf die Funktionen von SparkUI zugreifen, indem sie den Dienst APIs zu ihrer IAM-Berechtigung hinzufügen, um einen detaillierten Zugriff zu erhalten. 

 `RequestLogParsing` ist am wichtigsten, weil damit das Parsen von Protokollen möglich ist. Die restlichen Daten APIs dienen zum Lesen der jeweiligen analysierten Daten. `GetStages` bietet beispielsweise Zugriff auf die Daten zu allen Phasen eines Spark-Auftrags. 

 Die Liste der APIs zugewiesenen Spark-UI-Dienste finden `UseGlueStudio` Sie weiter unten in der Beispielrichtlinie. Die folgende Richtlinie gewährt nur Zugriff auf die Verwendung der Features der Spark-Benutzeroberfläche. Informationen zum Hinzufügen weiterer Berechtigungen wie Amazon S3 und IAM finden Sie unter [Erstellen benutzerdefinierter IAM-Richtlinien für](https://docs.aws.amazon.com/glue/latest/dg/getting-started-min-privs.html#getting-started-all-gs-privs.html). AWS Glue Studio

 Die Liste der APIs zugewiesenen Spark-UI-Services finden Sie weiter unten in der Beispielrichtlinie. `UseGlueStudio` Wenn Sie eine Spark-Benutzeroberfläche-Service-API verwenden, verwenden Sie den folgenden Namespace: `glue:<ServiceAPI>`. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowGlueStudioSparkUI",
      "Effect": "Allow",
      "Action": [
        "glue:RequestLogParsing",
        "glue:GetLogParsingStatus",
        "glue:GetEnvironment",
        "glue:GetJobs",
        "glue:GetJob",
        "glue:GetStage",
        "glue:GetStages",
        "glue:GetStageFiles",
        "glue:BatchGetStageFiles",
        "glue:GetStageAttempt",
        "glue:GetStageAttemptTaskList",
        "glue:GetStageAttemptTaskSummary",
        "glue:GetExecutors",
        "glue:GetExecutorsThreads",
        "glue:GetStorage",
        "glue:GetStorageUnit",
        "glue:GetQueries",
        "glue:GetQuery"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## Einschränkungen
<a name="monitor-spark-ui-limitations"></a>
+ Die Spark-Benutzeroberfläche in der AWS Glue Konsole ist für Jobausführungen, die vor dem 20. November 2023 stattfanden, nicht verfügbar, da sie im alten Protokollformat vorliegen.
+  Die Spark-Benutzeroberfläche in der AWS Glue Konsole unterstützt fortlaufende Logs für AWS Glue 4.0, wie sie beispielsweise standardmäßig bei Streaming-Jobs generiert werden. Die maximale Summe aller generierten Ereignisdateien für fortlaufende Protokolle beträgt 2 GB. Für AWS Glue Jobs ohne Unterstützung für Rolling-Logs beträgt die maximale Größe der Protokollereignisdatei, die für SparkUI unterstützt wird, 0,5 GB. 
+  Die Serverless-Spark-Benutzeroberfläche ist nicht für Spark-Ereignisprotokolle verfügbar, die in einem Amazon-S3-Bucket gespeichert sind und auf die nur Ihre VPC zugreifen kann. 

## Beispiel: Web-UI von Apache Spark
<a name="monitor-spark-ui-limitations-example"></a>

In diesem Beispiel wird veranschaulicht, wie Sie die Spark-Benutzeroberfläche verwenden, um Ihre Auftragsleistung nachzuvollziehen. Die Screenshots zeigen die Spark-Weboberfläche, wie sie von einem selbstverwalteten Spark History-Server bereitgestellt wird. Die Spark-Benutzeroberfläche in der AWS Glue Konsole bietet ähnliche Ansichten. Weitere Informationen zur Verwendung der Spark-Web-UI finden Sie unter [Web-UI](https://spark.apache.org/docs/3.3.0/web-ui.html) in der Spark-Dokumentation.

Im Folgenden finden Sie ein Beispiel für eine Spark-Anwendung, die aus zwei Datenquellen liest, eine Join-Transformation ausführt und diese im Parquet-Format zu Amazon S3 schreibt.

```
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.sql.functions import count, when, expr, col, sum, isnull
from pyspark.sql.functions import countDistinct
from awsglue.dynamicframe import DynamicFrame
 
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
 
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
 
job = Job(glueContext)
job.init(args['JOB_NAME'])
 
df_persons = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/persons.json")
df_memberships = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/memberships.json")
 
df_joined = df_persons.join(df_memberships, df_persons.id == df_memberships.person_id, 'fullouter')
df_joined.write.parquet("s3://aws-glue-demo-sparkui/output/")
 
job.commit()
```

Die folgende DAG-Visualisierung zeigt die verschiedenen Phasen in dieser Spark-Aufgabe.

![\[Screenshot der Spark-Benutzeroberfläche mit 2 abgeschlossenen Phasen für Aufgabe 0.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/spark-ui1.png)


Der folgende Ereigniszeitplan für eine Aufgabe zeigt Start, Ausführung und Beendigung verschiedener Spark-Executors.

![\[Screenshot der Spark-Benutzeroberfläche mit den abgeschlossenen, fehlgeschlagenen und aktiven Phasen verschiedener Spark-Executors.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/spark-ui2.png)


Der folgende Bildschirm zeigt die Details der SparkSQL-Abfragepläne:
+ Geparster logischer Plan
+ Analysierter logischer Plan
+ Optimierter logischer Plan
+ Physischer Plan für die Ausführung

![\[SparkSQL-Abfragepläne: geparster, analysierter und optimierter logischer Plan und physische Pläne für die Ausführung.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/spark-ui3.png)


**Topics**
+ [Berechtigungen](#monitor-spark-ui-limitations-permissions)
+ [Einschränkungen](#monitor-spark-ui-limitations)
+ [Beispiel: Web-UI von Apache Spark](#monitor-spark-ui-limitations-example)
+ [Aktivieren der Apache-Spark-Webbenutzeroberfläche für AWS Glue-Aufgaben](monitor-spark-ui-jobs.md)
+ [Starten des Spark History-Servers](monitor-spark-ui-history.md)

# Aktivieren der Apache-Spark-Webbenutzeroberfläche für AWS Glue-Aufgaben
<a name="monitor-spark-ui-jobs"></a>

Sie können die Apache-Spark-Webbenutzeroberfläche verwenden, um AWS Glue-ETL-Aufgaben zu überwachen und zu debuggen, die im AWS Glue-Aufgabensystem ausgeführt werden. Sie können die Spark-Benutzeroberfläche über die AWS Glue-Konsole oder die AWS Command Line Interface (AWS CLI) konfigurieren.

AWS Glue sichert die Spark-Ereignisprotokolle alle 30 Sekunden zu dem von Ihnen angegebenen Amazon-S3-Pfad.

**Topics**
+ [Konfigurieren der Spark-Benutzeroberfläche (Konsole)](#monitor-spark-ui-jobs-console)
+ [Konfigurieren der Spark-Benutzeroberfläche (AWS CLI)](#monitor-spark-ui-jobs-cli)
+ [Konfigurieren der Spark-Benutzeroberfläche für Sitzungen mit Notebooks](#monitor-spark-ui-sessions)
+ [Aktivieren fortlaufender Protokolle](#monitor-spark-ui-rolling-logs)

## Konfigurieren der Spark-Benutzeroberfläche (Konsole)
<a name="monitor-spark-ui-jobs-console"></a>

Gehen Sie wie folgt vor, um die Spark-Benutzeroberfläche über die AWS-Managementkonsole zu konfigurieren. Beim Erstellen eines AWS Glue Jobs ist die Spark-Benutzeroberfläche standardmäßig aktiviert.

**Die Spark-Benutzeroberfläche aktivieren, wenn Sie einen Auftrag erstellen oder bearbeiten**

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 die Option **Jobs (Aufträge)** aus.

1. Wählen **Auftrag hinzufügen** oder einen vorhandenen Auftrag aus.

1. Klicken Sie in den **Auftragsdetails** auf **Erweiterte Eigenschaften**.

1. Wählen Sie auf der Registerkarte **Spark-Benutzeroberfläche** die Option **Spark-UI-Protokolle in Amazon S3 schreiben** aus.

1. Geben Sie einen Amazon-S3-Pfad zum Speichern der Spark-Ereignisprotokolle für die Aufgabe an. Beachten Sie, dass die Verschlüsselung auch auf die Protokolldatei der Spark-Benutzeroberfläche angewendet wird, wenn Sie im Auftrag eine Sicherheitskonfiguration verwenden. Weitere Informationen finden Sie unter [Verschlüsselung von Daten, die geschrieben wurden von AWS Glue](encryption-security-configuration.md).

1. Gehen Sie unter **Konfiguration der Protokollierung und Überwachung in der Spark-Benutzeroberfläche** wie folgt vor:
   + Wählen Sie **Standard** aus, wenn Sie Protokolle zur Anzeige in der AWS Glue Konsole generieren.
   + Wenn Sie Protokolle zur Anzeige auf einem Spark History-Server generieren, wählen Sie **Legacy** aus.
   + Sie können auch beide Protokolltypen generieren.

## Konfigurieren der Spark-Benutzeroberfläche (AWS CLI)
<a name="monitor-spark-ui-jobs-cli"></a>

Um Protokolle für die Anzeige mit der Spark-Benutzeroberfläche zu generieren, verwenden Sie in der AWS Glue Konsole die, AWS CLI um die folgenden Job-Parameter an AWS Glue Jobs zu übergeben. Weitere Informationen finden Sie unter [Verwenden von Auftragsparametern in AWS Glue-Jobs](aws-glue-programming-etl-glue-arguments.md).

```
'--enable-spark-ui': 'true',
'--spark-event-logs-path': 's3://s3-event-log-path'
```

Um Protokolle an ihre Legacy-Speicherorte zu verteilen, setzen Sie den Parameter `--enable-spark-ui-legacy-path` auf `"true"`. Wenn Sie keine Protokolle in den beiden Formaten generieren möchten, entfernen Sie den Parameter `--enable-spark-ui`.

## Konfigurieren der Spark-Benutzeroberfläche für Sitzungen mit Notebooks
<a name="monitor-spark-ui-sessions"></a>

**Warnung**  
AWS Glue interaktive Sitzungen unterstützen derzeit keine Spark-Benutzeroberfläche in der Konsole. Konfigurieren Sie einen Spark History-Server.

 Wenn Sie AWS Glue Notebooks verwenden, richten Sie die SparkUI-Konfiguration ein, bevor Sie die Sitzung starten. Verwenden Sie dazu das `%%configure`-Zellen-Magic: 

```
%%configure { “--enable-spark-ui”: “true”, “--spark-event-logs-path”: “s3://path” }
```

## Aktivieren fortlaufender Protokolle
<a name="monitor-spark-ui-rolling-logs"></a>

 Die Aktivierung von SparkUI und das Rolling von Log-Ereignisdateien für AWS Glue Jobs bietet mehrere Vorteile: 
+  Rolling Log Event Files — Wenn die rollierenden Log-Ereignisdateien aktiviert sind, werden separate Protokolldateien für jeden Schritt der Jobausführung AWS Glue generiert, sodass Probleme, die für eine bestimmte Phase oder Transformation spezifisch sind, leichter identifiziert und behoben werden können. 
+  Bessere Protokollverwaltung – Ereignisdateien fortlaufender Protokolle helfen dabei, Protokolldateien effizienter zu verwalten. Anstatt eine einzige, potenziell große Protokolldatei zu haben, werden die Protokolle je nach den Phasen der Auftragsausführung in kleinere, besser verwaltbare Dateien aufgeteilt. Dies kann die Archivierung, Analyse und Problembehandlung von Protokollen vereinfachen. 
+  Verbesserte Fehlertoleranz — Wenn ein AWS Glue Job fehlschlägt oder unterbrochen wird, können die Rolling-Log-Ereignisdateien wertvolle Informationen über die letzte erfolgreiche Phase liefern, sodass es einfacher ist, den Job an diesem Punkt fortzusetzen, anstatt von vorne zu beginnen. 
+  Kostenoptimierung – Durch die Aktivierung von Ereignisdateien fortlaufender Protokolle können Sie die mit Protokolldateien verbundenen Speicherkosten verringern. Statt einer einzelnen, potenziell großen Protokolldatei werden kleinere, besser verwaltbare Protokolldateien gespeichert, was insbesondere bei lang andauernden oder komplexen Aufträgen kostengünstiger sein kann. 

 In einer neuen Umgebung können Benutzer fortlaufende Protokolle explizit wie folgt aktivieren: 

```
'—conf': 'spark.eventLog.rolling.enabled=true'
```

oder

```
'—conf': 'spark.eventLog.rolling.enabled=true —conf 
spark.eventLog.rolling.maxFileSize=128m'
```

 Wenn fortlaufende Protokolle aktiviert sind, gibt `spark.eventLog.rolling.maxFileSize` die maximale Größe der Ereignisprotokolldatei an, bevor ein Roll-Over ausgeführt wird. Wenn der Standardwert für diesen optionalen Parameter nicht angegeben wird, wird der Standardwert 128 MB verwendet. Mindestens 10 MB. 

 Die maximale Summe aller generierten Ereignisdateien für fortlaufende Protokolle beträgt 2 GB. Für AWS Glue Jobs ohne Rolling-Log-Unterstützung beträgt die maximale Größe der Protokollereignisdatei, die für SparkUI unterstützt wird, 0,5 GB. 

Sie können fortlaufende Protokolle für einen Streaming-Auftrag deaktivieren, indem Sie eine zusätzliche Konfiguration übergeben. Beachten Sie, dass die Pflege sehr großer Protokolldateien kostspielig sein kann.

Um fortlaufende Protokolle zu deaktivieren, stellen Sie die folgende Konfiguration bereit:

```
'--spark-ui-event-logs-path': 'true',
'--conf': 'spark.eventLog.rolling.enabled=false'
```

# Starten des Spark History-Servers
<a name="monitor-spark-ui-history"></a>

Mit einem Spark History-Server können Sie die Spark-Protokolle in Ihrer eigenen Infrastruktur visualisieren. Sie können dieselben Visualisierungen in der AWS Glue Konsole für AWS Glue Jobausführungen auf Versionen AWS Glue 4.0 oder höher sehen, wobei die Logs im Standardformat (und nicht im Legacy-Format) generiert wurden. Weitere Informationen finden Sie unter [Überwachen von Aufgaben über die Apache-Spark-Webbenutzeroberfläche](monitor-spark-ui.md).

Sie können den Spark-Verlaufsserver mithilfe einer AWS CloudFormation Vorlage starten, die den Server auf einer EC2-Instance hostet, oder lokal mit Docker starten.

**Topics**
+ [Den Spark-History-Server starten und die Spark-Benutzeroberfläche anzeigen mit AWS CloudFormation](#monitor-spark-ui-history-cfn)
+ [Starten des Spark History-Servers und Anzeigen der Spark-Benutzeroberfläche über Docker](#monitor-spark-ui-history-local)

## Den Spark-History-Server starten und die Spark-Benutzeroberfläche anzeigen mit AWS CloudFormation
<a name="monitor-spark-ui-history-cfn"></a>

Sie können eine AWS CloudFormation Vorlage verwenden, um den Apache Spark-History-Server zu starten und die Spark-Weboberfläche anzuzeigen. Diese Vorlagen sind Beispiele, die Sie entsprechend Ihren Anforderungen anpassen sollten.

**Um den Spark-Geschichtsserver zu starten und die Spark-Benutzeroberfläche anzuzeigen, verwenden Sie CloudFormation**

1. Wählen Sie eine der Schaltflächen **Launch Stack (Stack starten)** in der folgenden Tabelle aus. Dadurch wird der Stack auf der CloudFormation Konsole gestartet.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitor-spark-ui-history.html)

1. Wählen Sie auf der Seite **Specify template (Vorlage angeben)** die Option **Next (Weiter)** aus.

1. Geben Sie auf der Seite **Specify stack details (Stack-Details angeben)** den Wert für **Stack name (Stack-Name)** ein. Geben Sie zusätzliche Informationen unter **Parameter** ein.

   1. 

**Konfiguration der Spark-Benutzeroberfläche**

      Geben Sie die folgenden Informationen ein:
      + **IP-Adressbereich** – Der IP-Adressbereich, der zum Anzeigen der Spark-Benutzeroberfläche verwendet werden kann. Wenn Sie den Zugriff in Bezug auf einen bestimmten IP-Adressbereich einschränken möchten, sollten Sie einen benutzerdefinierten Wert verwenden. 
      + **History-Server-Port** – Der Port für die Spark-Benutzeroberfläche. Sie können den Standardwert verwenden.
      + **Ereignisprotokollverzeichnis** – Wählen Sie den Speicherort, an dem die Spark-Ereignisprotokolle gespeichert werden, aus den AWS Glue-Job- oder Entwicklungsendpunkten. Für das Pfadschema der Ereignisprotokolle müssen Sie **s3a://** verwenden.
      + **Spark-Package-Standort** – Sie können den Standardwert verwenden.
      + **Keystore-Pfad** — SSL/TLS Keystore-Pfad für HTTPS. Wenn Sie eine benutzerdefinierte Schlüsselspeicherdatei verwenden möchten, können Sie den S3-Pfad `s3://path_to_your_keystore_file` hier angeben. Wenn Sie diesen Parameter leer lassen, wird ein selbstsignierter, zertifikatbasierter Schlüsselspeicher generiert und verwendet.
      + **KeyStore-Passwort** – Geben Sie SSL/TLS-KeyStore-Passwort für HTTPS ein.

   1. 

**Konfigurieren der EC2-Instance**

      Geben Sie die folgenden Informationen ein:
      + **Instance-Typ** – Der Typ der Amazon-EC2-Instance, der den Spark-History-Server hostet. Da diese Vorlage die Amazon-EC2-Instance in Ihrem Konto startet, werden Amazon-EC2-Kosten Ihrem Konto separat in Rechnung gestellt.
      + **Neueste AMI-ID** – Die AMI-ID von Amazon Linux 2 für die Spark-Verlaufsserver-Instance. Sie können den Standardwert verwenden.
      + **VPC ID** – Die Virtual Private Cloud (VPC)-ID für die Spark-History-Server-Instance. Sie können alle in Ihrem Konto VPCs verfügbaren Optionen verwenden. Die Verwendung einer Standard-VPC mit einer [Standard-Netzwerk-ACL](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#default-network-acl) wird nicht empfohlen. Weitere Informationen finden Sie unter [Default VPC and Default Subnets (Standard-VPC und Standard-Subnetze)](https://docs.aws.amazon.com/vpc/latest/userguide/default-vpc.html) und unter [Creating a VPC (Erstellen einer VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC) im *Amazon-VPC-Benutzerhandbuch*.
      + **Subnetz-ID** – Die ID für die Spark-Verlaufsserver-Instance. Sie können jedes Subnetz in Ihrer VPC verwenden. Sie müssen das Subnetz von Ihrem Client aus erreichen können. Wenn Sie über das Internet auf das Subnetz zugreifen möchten, müssen Sie ein öffentliches Subnetz mit dem Internet-Gateway in der Routing-Tabelle verwenden.

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

1. Wählen Sie auf der Seite **Stack-Optionen konfigurieren** die Option **Weiter** aus, um anhand der aktuellen Benutzeranmeldedaten zu bestimmen, wie Ressourcen im Stack erstellt, geändert oder gelöscht werden CloudFormation können. Sie können im Abschnitt **Berechtigungen** auch eine Rolle angeben, die anstelle der aktuellen Benutzerberechtigungen verwendet werden soll, und dann **Weiter** wählen.

1. Überprüfen Sie die Vorlage auf der Seite **Review (Prüfen)**. 

   Wählen Sie **Ich bestätige, dass CloudFormation möglicherweise IAM-Ressourcen erstellt** werden, und wählen Sie dann **Stack erstellen** aus.

1. Warten Sie, bis der Stack erstellt wurde.

1. Öffnen Sie die Registerkarte **Outputs (Ausgaben)**.

   1. Kopieren Sie die URL von **SparkUiPublicUrl**, wenn Sie ein öffentliches Subnetz verwenden.

   1. Kopieren Sie die URL von **SparkUiPrivateUrl**, wenn Sie ein privates Subnetz verwenden.

1. Öffnen Sie einen Webbrowser und fügen Sie die URL ein. Auf diese Weise können Sie über HTTPS auf dem angegebenen Port auf den Server zugreifen. Ihr Browser erkennt möglicherweise nicht das Zertifikat des Servers. In diesem Fall müssen Sie den Schutz des Servers außer Kraft setzen und trotzdem fortfahren. 

## Starten des Spark History-Servers und Anzeigen der Spark-Benutzeroberfläche über Docker
<a name="monitor-spark-ui-history-local"></a>

Wenn Sie den lokalen Zugriff bevorzugen (d. h., keine EC2-Instance für den Apache Spark History-Server verwenden möchten), können Sie auch Docker verwenden, um den Apache Spark History-Server zu starten und die Spark-Benutzeroberfläche lokal anzuzeigen. Diese Dockerfile ist ein Beispiel, das Sie entsprechend Ihren Anforderungen anpassen sollten. 

 **Voraussetzungen** 

Informationen zum Installieren von Docker auf Ihrem Laptop finden Sie in der [Docker Engine-Community](https://docs.docker.com/install/).

**So starten Sie den Spark History-Server und zeigen die Spark-Benutzeroberfläche lokal über Docker an**

1. Laden Sie Dateien herunter von GitHub.

   Laden Sie die Dockerfile und `pom.xml` aus den [ AWS Glue-Codebeispielen](https://github.com/aws-samples/aws-glue-samples/tree/master/utilities/Spark_UI/) herunter.

1. Bestimmen Sie, ob Sie Ihre Benutzeranmeldeinformationen oder Verbundbenutzeranmeldeinformationen für den Zugriff auf AWS verwenden möchten.
   + Um die aktuellen Benutzeranmeldedaten für den Zugriff zu verwenden AWS, rufen Sie die Werte ab, die für ` AWS_ACCESS_KEY_ID` und `AWS_SECRET_ACCESS_KEY` im `docker run` Befehl verwendet werden sollen. Weitere Informationen finden Sie unter [Verwalten der Zugriffsschlüssel für IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) im *-IAM-Benutzerhandbuch*.
   + Um SAML 2.0-Verbundbenutzer für den Zugriff zu verwenden AWS, rufen Sie die Werte für ` AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY`, und ab. ` AWS_SESSION_TOKEN` Weitere Informationen finden Sie unter [Anfordern von temporären Sicherheitsanmeldeinformationen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html)

1. Bestimmen Sie den Speicherort Ihres Ereignisprotokollverzeichnisses für die Verwendung im `docker run`-Befehl.

1. Erstellen Sie das Docker-Image mit den Dateien im lokalen Verzeichnis unter Verwendung des Namens` glue/sparkui`, und das Tag`latest`aus.

   ```
   $ docker build -t glue/sparkui:latest . 
   ```

1. Erstellen und starten Sie den Docker-Container.

   Verwenden Sie in den folgenden Befehlen die zuvor in den Schritten 2 und 3 beschafften Werte.

   1. Verwenden Sie einen Befehl wie den folgenden, um den Docker-Container mit Ihren Benutzeranmeldeinformationen zu erstellen

      ```
      docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://path_to_eventlog
       -Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID -Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY"
       -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
      ```

   1. Um den Docker-Container mit temporären Anmeldeinformationen zu erstellen, verwenden Sie ` org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider` als Anbieter und geben Sie die in Schritt 2 beschafften Anmeldeinformationen an. Weitere Informationen finden Sie unter [Using Session Credentials with Temporary AWSCredentials Provider](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Using_Session_Credentials_with_TemporaryAWSCredentialsProvider) in der Dokumentation *Hadoop: Integration with Amazon Web Services*.

      ```
      docker run -itd -e SPARK_HISTORY_OPTS="$SPARK_HISTORY_OPTS -Dspark.history.fs.logDirectory=s3a://path_to_eventlog
       -Dspark.hadoop.fs.s3a.access.key=AWS_ACCESS_KEY_ID -Dspark.hadoop.fs.s3a.secret.key=AWS_SECRET_ACCESS_KEY
       -Dspark.hadoop.fs.s3a.session.token=AWS_SESSION_TOKEN
       -Dspark.hadoop.fs.s3a.aws.credentials.provider=org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider"
       -p 18080:18080 glue/sparkui:latest "/opt/spark/bin/spark-class org.apache.spark.deploy.history.HistoryServer"
      ```
**Anmerkung**  
Diese Konfigurationsparameter stammen aus dem [ Hadoop-AWS-Modul](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html). Sie müssen möglicherweise je nach Anwendungsfall eine spezielle Konfiguration vornehmen. Zum Beispiel: Benutzer in isolierten Regionen müssen den ` spark.hadoop.fs.s3a.endpoint` konfigurieren.

1. Öffnen Sie `http://localhost:18080` in Ihrem Browser, um die Spark-Benutzeroberfläche lokal anzuzeigen.

# Überwachung mit Einblicken in die AWS Glue Auftragsausführung
<a name="monitor-job-insights"></a>

AWS Glue Job Run Insights ist eine Funktion AWS Glue , die das Debuggen und die Optimierung von Jobs für Ihre AWS Glue Jobs vereinfacht. AWS Glue bietet die [Spark-Benutzeroberfläche](https://docs.aws.amazon.com/glue/latest/dg/monitor-spark-ui.html) sowie [CloudWatch Protokolle und Metriken](https://docs.aws.amazon.com/glue/latest/dg/monitor-cloudwatch.html) für die Überwachung Ihrer AWS Glue Jobs. Mit dieser Funktion erhalten Sie folgende Informationen über die Ausführung Ihres AWS Glue Jobs:
+ Zeilennummer Ihres AWS Glue Job-Skripts, bei dem ein Fehler aufgetreten ist.
+ Spark-Aktion, die zuletzt im Spark-Abfrageplan kurz vor dem Fehler Ihres Auftrags ausgeführt wurde.
+ Spark-Ausnahmeereignisse im Zusammenhang mit dem Fehler, der in einem zeitgeordneten Protokollstream dargestellt wird.
+ Ursachenanalyse und empfohlene Maßnahmen (z. B. die Optimierung Ihres Skripts), um das Problem zu beheben.
+ Häufige Spark-Ereignisse (Protokollmeldungen in Bezug auf eine Spark-Aktion) mit einer empfohlenen Aktion, die die Ursache behandelt.

All diese Erkenntnisse stehen Ihnen mithilfe von zwei neuen Log-Streams in den CloudWatch Logs für Ihre AWS Glue Jobs zur Verfügung.

## Voraussetzungen
<a name="monitor-job-insights-requirements"></a>

Die Funktion „Einblicke in die AWS Glue Auftragsausführung“ ist für die AWS Glue Versionen 2.0 und höher verfügbar. Sie können dem [Migrationsleitfaden](https://docs.aws.amazon.com/glue/latest/dg/migrating-version-30.html) für Ihre bestehenden Jobs folgen, um sie von älteren AWS Glue Versionen zu aktualisieren.

## Einblicke in die Jobausführung für einen AWS Glue ETL-Job aktivieren
<a name="monitor-job-insights-enable"></a>

Sie können Einblicke in die Jobausführung über AWS Glue Studio oder über die CLI aktivieren.

### AWS Glue Studio
<a name="monitor-job-insights-requirements"></a>

Wenn Sie einen Job über erstellen AWS Glue Studio, können Sie die Einblicke in die Jobausführung auf der Registerkarte **Jobdetails** aktivieren oder deaktivieren. Überprüfen Sie, ob das Kontrollkästchen **Auftragserkenntnisse generieren** aktiviert ist.

![\[Aktivieren von Erkenntnissen in Auftragsausführungen in AWS Glue Studio.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-job-run-insights-1.png)


### Befehlszeile
<a name="monitor-job-insights-enable-cli"></a>

Wenn Sie einen Auftrag über die CLI erstellen, können Sie eine Auftragsausführung mit einem einzigen neuen [Auftrags-Parameter](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-glue-arguments.html) starten: `--enable-job-insights = true`.

Standardmäßig werden die Protokoll-Streams der Auftragsausführungs-Erkenntnisse unter derselben Standardprotokollgruppe erstellt, die von [Kontinuierliche AWS Glue -Protokollierung](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html), das heißt, `/aws-glue/jobs/logs-v2/` verwendet wird. Sie können benutzerdefinierte Protokollgruppennamen, Protokollfilter und Protokollgruppenkonfigurationen mit denselben Argumenten für die kontinuierliche Protokollierung einrichten. Weitere Informationen finden Sie unter [Kontinuierliche Protokollierung für AWS Glue Jobs aktivieren](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging-enable.html).

## Beim Zugriff auf den Job Run Insights werden Streams protokolliert in CloudWatch
<a name="monitor-job-insights-access"></a>

Wenn das Feature „Auftragsausführungs-Erkenntnisse“ aktiviert ist, werden möglicherweise zwei Protokoll-Streams erstellt, wenn eine Auftragsausführung fehlschlägt. Wenn ein Auftrag erfolgreich abgeschlossen ist, wird keiner der Streams generiert.

1. *Protokoll-Stream für Ausnahmeanalyse*: `<job-run-id>-job-insights-rca-driver`. Dieser Stream bietet Folgendes:
   + Zeilennummer Ihres AWS Glue Job-Skripts, das den Fehler verursacht hat.
   + Spark-Aktion, die zuletzt im Spark-Abfrageplan (DAG) ausgeführt wurde.
   + Prägnante zeitgeordnete Ereignisse des Spark-Treibers und der Executors, die mit der Ausnahme zusammenhängen. Hier finden Sie Details wie vollständige Fehlermeldungen, die fehlgeschlagene Spark-Aufgabe und deren Executor-ID, die Ihnen helfen, sich bei Bedarf auf den Protokoll-Stream des jeweiligen Executors zu konzentrieren.

1. *Regelbasierter Erkenntnis-Stream*: 
   + Ursachenanalyse und Empfehlungen zur Behebung der Fehler (z. B. Verwendung eines bestimmten Auftrags-Parameters zur Optimierung der Leistung).
   + Relevante Spark-Ereignisse, die als Grundlage für die Ursachenanalyse und eine empfohlene Aktion dienen.

**Anmerkung**  
Der erste Stream wird nur vorhanden sein, wenn Spark-Ausnahme-Ereignisse für eine fehlgeschlagene Auftragsausführung verfügbar sind und der zweite Stream wird nur vorhanden sein, wenn Erkenntnisse für die fehlgeschlagene Auftragsausführung verfügbar sind. Wenn Ihr Auftrag beispielsweise erfolgreich abgeschlossen ist, wird keiner der Streams generiert. Wenn Ihr Auftrag fehlschlägt, aber keine dienstdefinierte Regel vorhanden ist, die mit Ihrem Fehlerszenario übereinstimmen kann, wird nur der erste Stream generiert.

Wenn der Job aus erstellt wurde AWS Glue Studio, sind die Links zu den oben genannten Streams auch auf der Registerkarte Job-Rundetails (Job Run Insights) als „Präzise und konsolidierte Fehlerprotokolle“ und „Fehleranalyse und Anleitung“ verfügbar.

![\[Die Seite „Auftrags-Ausführungsdetails“ mit Links zu den Protokoll-Streams.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-job-run-insights-2.png)


## Beispiel für Einblicke in die AWS Glue Auftragsausführung
<a name="monitor-job-insights-example"></a>

In diesem Abschnitt stellen wir Ihnen ein Beispiel vor, wie das Feature „Auftragsausführungs-Erkenntnisse“ Ihnen helfen kann, ein Problem in Ihrem fehlgeschlagenen Auftrag zu lösen. In diesem Beispiel hat ein Benutzer vergessen, das erforderliche Modul (Tensorflow) in einen AWS Glue Job zu importieren, um seine Daten zu analysieren und ein Modell für maschinelles Lernen zu erstellen.

```
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from pyspark.sql.types import *
from pyspark.sql.functions import udf,col

args = getResolvedOptions(sys.argv, ['JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

data_set_1 = [1, 2, 3, 4]
data_set_2 = [5, 6, 7, 8]

scoresDf = spark.createDataFrame(data_set_1, IntegerType())

def data_multiplier_func(factor, data_vector):
    import tensorflow as tf
    with tf.compat.v1.Session() as sess:
        x1 = tf.constant(factor)
        x2 = tf.constant(data_vector)
        result = tf.multiply(x1, x2)
        return sess.run(result).tolist()

data_multiplier_udf = udf(lambda x:data_multiplier_func(x, data_set_2), ArrayType(IntegerType(),False))
factoredDf = scoresDf.withColumn("final_value", data_multiplier_udf(col("value")))
print(factoredDf.collect())
```

Ohne das Feature „Auftragsausführungs-Erkenntnisse“ wird nur die folgende Nachricht angezeigt, die von Spark ausgelöst wird, da der Auftrag fehlschlägt:

`An error occurred while calling o111.collectToPython. Traceback (most recent call last):`

Die Nachricht ist mehrdeutig und schränkt Ihre Debugging-Erfahrung ein. In diesem Fall bietet Ihnen diese Funktion zusätzliche Einblicke in zwei CloudWatch Protokollstreams:

1. Der `job-insights-rca-driver`-Protokoll-Stream:
   + *Ausnahme-Ereignisse*: Dieser Protokoll-Stream bietet Ihnen die Spark-Ausnahmeereignisse im Zusammenhang mit dem Fehler, der vom Spark-Treiber und verschiedenen verteilten Workern gesammelt wurde. Diese Ereignisse helfen Ihnen, die zeitlich geordnete Ausbreitung der Ausnahme zu verstehen, wenn fehlerhafter Code auf Spark-Aufgaben, Executoren und Stages, die über die Worker verteilt sind, ausgeführt wird. AWS Glue 
   + *Zeilennummern*: Dieser Protokoll-Stream identifiziert Zeile 21, die den Aufruf zum Importieren des fehlenden Python-Moduls gemacht hat, das den Fehler verursacht hat; Außerdem wird Zeile 24, der Aufruf von Spark Action `collect()`, als die zuletzt ausgeführte Zeile in Ihrem Skript identifiziert.  
![\[Der Log-Stream. job-insights-rca-driver\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-job-run-insights-3.png)

1. Der `job-insights-rule-driver`-Protokoll-Stream:
   + *Grundursache und Empfehlung*: Neben der Zeilennummer und der zuletzt ausgeführten Zeilennummer für den Fehler in Ihrem Skript zeigt dieser Protokollstream die Ursachenanalyse und die Empfehlung für Sie, dem AWS Glue Dokument zu folgen und die erforderlichen Jobparameter einzurichten, um ein zusätzliches Python-Modul in Ihrem AWS Glue Job zu verwenden. 
   + *Basis-Ereignis*: Dieser Protokoll-Stream zeigt auch das Spark-Ausnahmeereignis an, das mit der vom Service definierten Regel ausgewertet wurde, um die Ursache abzuleiten und eine Empfehlung abzugeben.  
![\[Der job-insights-rule-driver Log-Stream.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-job-run-insights-4.png)

# Überwachung mit Amazon CloudWatch
<a name="monitor-cloudwatch"></a>

Sie können die Überwachung AWS Glue mithilfe von Amazon durchführen CloudWatch, das Rohdaten sammelt und AWS Glue in lesbare near-real-time Messwerte umwandelt. Diese Statistiken werden für einen Zeitraum von zwei Wochen aufgezeichnet, damit Sie auf Verlaufsinformationen zugreifen können und einen besseren Überblick über die Performance der Webanwendung oder des Services erhalten. Standardmäßig werden AWS Glue Metrikdaten CloudWatch automatisch an gesendet. Weitere Informationen finden Sie unter [Was ist Amazon CloudWatch?](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html) im * CloudWatch Amazon-Benutzerhandbuch* und[AWS Glue Metriken](monitoring-awsglue-with-cloudwatch-metrics.md#awsglue-metrics).

 **Kontinuierliche Protokollierung** 

AWS Glue unterstützt außerdem die kontinuierliche Echtzeitprotokollierung für AWS Glue-Aufträge. Wenn die kontinuierliche Protokollierung für einen Job aktiviert ist, können Sie die Echtzeitprotokolle auf der AWS Glue Konsole oder im CloudWatch Konsolen-Dashboard einsehen. Weitere Informationen finden Sie unter [Protokollierung für AWS Glue Jobs](monitor-continuous-logging.md).

 **Beobachtbarkeitsmetriken** 

 Wenn **Job-Observability-Metriken** aktiviert sind, werden zusätzliche Amazon CloudWatch Metriken generiert, wenn der Job ausgeführt wird. Nutzen Sie AWS Glue-Beobachtbarkeitsmetriken, um Einblicke in die Abläufe in AWS Glue zu erhalten. So können Sie die Sichtung und Analyse von Problemen verbessern. 

**Topics**
+ [Überwachung AWS Glue anhand von CloudWatch Amazon-Metriken](monitoring-awsglue-with-cloudwatch-metrics.md)
+ [CloudWatch Amazon-Alarme in AWS Glue Jobprofilen einrichten](monitor-profile-glue-job-cloudwatch-alarms.md)
+ [Protokollierung für AWS Glue Jobs](monitor-continuous-logging.md)
+ [Überwachung mit AWS Glue-Beobachtbarkeitsmetriken](monitor-observability.md)

# Überwachung AWS Glue anhand von CloudWatch Amazon-Metriken
<a name="monitoring-awsglue-with-cloudwatch-metrics"></a>

Sie können AWS Glue-Operationen mit dem AWS Glue-Auftrags-Profiler profilieren und überwachen. Es sammelt und verarbeitet Rohdaten von AWS Glue Jobs zu lesbaren, nahezu in Echtzeit gespeicherten Metriken, die in Amazon gespeichert sind CloudWatch. Diese Statistiken werden gespeichert und aggregiert, CloudWatch sodass Sie auf historische Informationen zugreifen können, um einen besseren Überblick über die Leistung Ihrer Anwendung zu erhalten.

**Anmerkung**  
 Es können zusätzliche Gebühren anfallen, wenn Sie Job-Metriken aktivieren und CloudWatch benutzerdefinierte Metriken erstellt werden. Weitere Informationen finden Sie unter [ CloudWatch Amazon-Preise](https://aws.amazon.com/cloudwatch/pricing/). 

## AWS Glue-Metriken – Übersicht
<a name="metrics-overview"></a>

Wenn Sie mit interagierenAWS Glue, sendet es Metriken an CloudWatch. Sie können diese Metriken über die AWS Glue Konsole (die bevorzugte Methode), das CloudWatch Konsolen-Dashboard oder die AWS Command Line Interface (AWS CLI) anzeigen. 

**Anzeige von Metriken über das Dashboard der AWS Glue-Konsole**

Sie können zusammenfassende oder detaillierte Diagramme von Metriken für einen Auftrag oder detaillierte Diagramme für eine Auftragsausführung anzeigen. 

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 **Überwachung der Auftragsausführung** aus.

1. Wählen Sie unter **Auftragsausführungen** die Option **Aktionen**, um einen gerade ausgeführten Auftrag anzuhalten, einen Auftrag anzuzeigen oder ein Auftragslesezeichen zurückzuspulen.

1. Wählen Sie einen Auftrag aus und wählen Sie dann **Details zur Ausführung anzeigen**, um zusätzliche Informationen zur Auftragsausführung anzuzeigen.

**Um Metriken über das CloudWatch Konsolen-Dashboard anzuzeigen**

Metriken werden zunächst nach dem Service-Namespace und anschließend nach den verschiedenen Dimensionskombinationen in den einzelnen Namespaces gruppiert.

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 den Namespace **Glue** aus.

**Um Metriken mit dem anzuzeigen AWS CLI**
+ Geben Sie als Eingabeaufforderung den folgenden Befehl ein.

  ```
  1. aws cloudwatch list-metrics --namespace Glue
  ```

AWS Gluemeldet Metriken CloudWatch alle 30 Sekunden, und die CloudWatch Metrik-Dashboards sind so konfiguriert, dass sie jede Minute angezeigt werden. Die AWS Glue-Metriken stellen Deltawerte gegenüber den zuvor gemeldeten Werten dar. Gegebenenfalls aggregieren (summieren) die Metrik-Dashboards die 30-Sekunden-Wertezu einem Wert für die gesamte vergangene Minute.

### AWS Glue Verhalten von Metriken für Spark-Jobs
<a name="metrics-overview-spark"></a>

 AWS Glue-Metriken werden bei der Initialisierung eines `GlueContext` in einem Skript aktiviert und in der Regel nur am Ende einer Apache-Spark-Aufgabe aktualisiert. Sie stellen die aggregierten Werte in allen abgeschlossenen Spark-Aufgaben dar.

Bei den Spark-Metriken, die AWS Glue an weitergegeben CloudWatch werden, handelt es sich jedoch im Allgemeinen um absolute Werte, die den aktuellen Status zum Zeitpunkt der Meldung darstellen. AWS Gluemeldet sie CloudWatch alle 30 Sekunden, und die Metrik-Dashboards zeigen in der Regel den Durchschnitt der in der letzten Minute empfangenen Datenpunkte an.

Allen AWS Glue-Metriknamen wird eines der folgenden Präfixe vorangestellt:
+ `glue.driver.` – Metriken, deren Namen mit diesem Präfix beginnen, stellen entweder AWS Glue-Metriken dar, die von allen Executors beim Spark-Treiber aggregiert werden, oder Spark-Metriken, die dem Spark-Treiber entsprechen.
+ `glue.`*executorId*`.` – Die *executorId* ist die Nummer eines bestimmten Spark-Executor. Der Wert entspricht den Executors, die in den Protokollen aufgeführt sind.
+ `glue.ALL.` - Metriken, deren Namen mit diesem Präfix beginnen, aggregierte Werte aus allen Spark Executors.

## AWS Glue Metriken
<a name="awsglue-metrics"></a>

AWS Glue erstellt und sendet CloudWatch alle 30 Sekunden die folgenden Metriken, und das AWS Glue Metrics-Dashboard meldet sie einmal pro Minute:


| Metrik | Description | 
| --- | --- | 
|  `glue.driver.aggregate.bytesRead` |  Die Anzahl der Bytes, die von allen abgeschlossenen Spark-Aufgaben von allen Datenquellen gelesen und in allen Executors ausgeführt werden. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet.  Einheit: Byte Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Diese Metrik kann genauso verwendet werden wie die `glue.ALL.s3.filesystem.read_bytes`-Metrik mit dem Unterschied, dass diese Metrik am Ende einer Spark-Aufgabe aktualisiert wird und auch Nicht-S3-Datenquellen erfasst.  | 
|  `glue.driver.aggregate.elapsedTime` |  Die ETL verstrichene Zeit in Millisekunden (schließt die Bootstrap-Zeiten des Auftrags nicht ein). Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Einheit: Millisekunden Kann verwendet werden, um zu ermitteln, wie lange eine Auftragsausführung im Durchschnitt dauert. Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.aggregate.numCompletedStages` |  Die Anzahl der abgeschlossenen Phasen im Auftrag. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.aggregate.numCompletedTasks` |  Die Anzahl der abgeschlossenen Aufgaben im Auftrag. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.aggregate.numFailedTasks` |  Die Anzahl der fehlgeschlagenen Aufgaben. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Die Daten können verwendet werden, um Alarme für erhöhte Ausfälle einzustellen, die Anomalien in Daten, Clustern oder Skripten andeuten könnten.  | 
|  `glue.driver.aggregate.numKilledTasks` |  Anzahl der abgeschlossenen Aufgaben. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.aggregate.recordsRead` |  Die Anzahl der Datensätze, die von allen abgeschlossenen Spark-Aufgaben von allen Datenquellen gelesen und in allen Executors ausgeführt werden. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Diese Metrik kann genauso verwendet werden wie die `glue.ALL.s3.filesystem.read_bytes`-Metrik mit dem Unterschied, dass diese Metrik am Ende einer Spark-Aufgabe aktualisiert wird.  | 
|   `glue.driver.aggregate.shuffleBytesWritten` |  Die Anzahl der Byte, die seit dem letzten Bericht von allen Executoren geschrieben wurden, um Daten zwischen ihnen zu mischen (aggregiert vom AWS Glue Metrics Dashboard als die Anzahl der Bytes, die zu diesem Zweck in der letzten Minute geschrieben wurden). Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Einheit: Byte Kann verwendet werden, um Folgendes zu überwachen: Datenmischung in Aufträgen (große Joins, GroupBy, Repartition, Coalesce). Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.aggregate.shuffleLocalBytesRead` |  Die Anzahl der Byte, die seit dem letzten Bericht von allen Executoren gelesen wurden, um Daten zwischen ihnen zu mischen (vom AWS Glue Metrics Dashboard als die Anzahl der zu diesem Zweck in der letzten Minute gelesenen Byte aggregiert). Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Einheit: Byte Kann verwendet werden, um Folgendes zu überwachen: Datenmischung in Aufträgen (große Joins, GroupBy, Repartition, Coalesce). Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.BlockManager.disk.diskSpaceUsed_MB` |  Die Anzahl der Megabyte an Speicherplatz, die für alle Executoren verwendet werden. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Gauge). Gültige Statistiken: Durchschnitt. Dies ist eine Spark-Metrik, die als absoluter Wert gemeldet wird. Einheit: Megabyte Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.ExecutorAllocationManager.executors.numberAllExecutors` |  Die Anzahl der aktiven Auftrags-Executors. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Gauge). Gültige Statistiken: Durchschnitt. Dies ist eine Spark-Metrik, die als absoluter Wert gemeldet wird. Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors` |  Die Anzahl der maximalen (aktiv ausgeführten und ausstehenden) Auftrags-Executors, die benötigt werden, um die aktuelle Last zu erfüllen. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Gauge). Gültige Statistiken: Maximum. Dies ist eine Spark-Metrik, die als absoluter Wert gemeldet wird. Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.jvm.heap.usage`  `glue.`*executorId*`.jvm.heap.usage`  `glue.ALL.jvm.heap.usage`  |  Den vom JVM-Heap für diesen Treiber (Skalierung: 0-1) verwendeten Speicheranteil – vom Treiber, einem durch executorId identifizierten Executor oder ALLE Executors. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Gauge). Gültige Statistiken: Durchschnitt. Dies ist eine Spark-Metrik, die als absoluter Wert gemeldet wird. Einheit: Prozentsatz Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.jvm.heap.used`  `glue.`*executorId*`.jvm.heap.used`  `glue.ALL.jvm.heap.used`  |  Die Anzahl der vom JVM-Heap verwendeten Speicherbytes für den Treiber, der durch *executorId* oder ALLE Executors identifiziert wurde. Gültige Dimensionen: `JobName` (der Name des AWS Glue Job), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Gauge). Gültige Statistiken: Durchschnitt. Dies ist eine Spark-Metrik, die als absoluter Wert gemeldet wird. Einheit: Byte Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.s3.filesystem.read_bytes`  `glue.`*executorId*`.s3.filesystem.read_bytes`  `glue.ALL.s3.filesystem.read_bytes`  |  Die Anzahl der Byte, die der Treiber, ein durch die *ExecutorID identifizierter Executor oder ALLE Executoren* seit dem letzten Bericht aus Amazon S3 gelesen haben (aggregiert vom AWS Glue Metrics Dashboard als Anzahl der in der letzten Minute gelesenen Byte). Gültige Dimensionen: `JobName`, `JobRunId` und `Type` (Messung). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Der Bereich unter der Kurve im AWS Glue Metrics Dashboard kann verwendet werden, um die von zwei verschiedenen Jobläufen gelesenen Bytes visuell zu vergleichen. Einheit: Byte. Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Die resultierenden Daten können verwendet werden für: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.s3.filesystem.write_bytes`  `glue.`*executorId*`.s3.filesystem.write_bytes`  `glue.ALL.s3.filesystem.write_bytes`  |  Die Anzahl der Byte, die der Treiber, ein durch die *ExecutorID identifizierter Executor oder ALLE Executoren* seit dem letzten Bericht in Amazon S3 geschrieben haben (aggregiert vom AWS Glue Metrics Dashboard als Anzahl der in der letzten Minute geschriebenen Byte). Gültige Dimensionen: `JobName`, `JobRunId` und `Type` (Messung). Gültige Statistiken: Summe Bei dieser Metrik handelt es sich um einen Deltawert gegenüber dem zuletzt gemeldeten Wert. Daher wird im AWS Glue Metrik-Dashboard eine SUM-Statistik für die Aggregation verwendet. Der Bereich unter der Kurve im AWS Glue Metrik-Dashboard kann verwendet werden, um die in zwei verschiedenen Jobläufen geschriebenen Bytes visuell zu vergleichen. Einheit: Byte Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.streaming.numRecords` |  Die Anzahl der Datensätze, die in einem Mikrobatch empfangen werden. Diese Metrik ist nur für AWS Glue Streaming-Jobs mit AWS Glue Version 2.0 und höher verfügbar. Gültige Dimensionen: `JobName` (der Name des AWS Glue Jobs), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe, Maximum, Minimum, Durchschnitt, Prozent Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|  `glue.driver.streaming.batchProcessingTimeInMs` |  Die Zeit, die für die Verarbeitung der Batches in Millisekunden benötigt wird. Diese Metrik ist nur für AWS Glue Streaming-Jobs mit AWS Glue Version 2.0 und höher verfügbar. Gültige Dimensionen: `JobName` (der Name des AWS Glue Jobs), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Anzahl). Gültige Statistiken: Summe, Maximum, Minimum, Durchschnitt, Prozent Einheit: Anzahl Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 
|   `glue.driver.system.cpuSystemLoad`  `glue.`*executorId*`.system.cpuSystemLoad`  `glue.ALL.system.cpuSystemLoad`  |  Der vom Treiber verwendete Anteil der CPU-Systemauslastung (Skalierung: 0-1) – ein durch *executorId* identifizierter Executor oder ALLE Executors. Gültige Dimensionen: `JobName` (der Name des AWS Glue Jobs), `JobRunId` (die JobRun ID. oder`ALL`) und `Type` (Gauge). Gültige Statistiken: Durchschnitt. Diese Metrik wird als absoluter Wert gemeldet. Einheit: Prozentsatz Kann für die Überwachung folgender Aspekte verwendet werden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html) Einige Möglichkeiten, die Daten zu verwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html)  | 

## AWS Glue Dimensionen für Metriken
<a name="awsglue-metricdimensions"></a>

AWS Glue Metriken verwenden den AWS Glue Namespace und stellen Metriken für die folgenden Dimensionen bereit:


| Dimension | Description | 
| --- | --- | 
|  `JobName`  |  Diese Dimension filtert nach Metriken aller Jobausführungen eines bestimmten AWS Glue Jobs.  | 
|  `JobRunId`  |  Diese Dimension filtert nach Metriken eines bestimmten AWS Glue Jobs, der von einer JobRun ID ausgeführt wird, oder`ALL`.  | 
|  `Type`  |  Diese Dimension filtert nach Metriken entweder nach `count` (eine aggregierte Zahl) oder `gauge` (ein Wert zu einem bestimmten Zeitpunkt).  | 

Weitere Informationen finden Sie im [ CloudWatch Amazon-Benutzerhandbuch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/).

# CloudWatch Amazon-Alarme in AWS Glue Jobprofilen einrichten
<a name="monitor-profile-glue-job-cloudwatch-alarms"></a>

AWS GlueMetriken sind auch bei Amazon verfügbar CloudWatch. Sie können Alarme zu jeder AWS Glue-Metrik für geplante Aufträge einrichten. 

Einige häufige Szenarien für das Einrichten von Alarmen:
+ Aufträge, die nicht mehr über genügend Speicher verfügen (OOM): Richten Sie einen Alarm für den Fall ein, dass der Speicherverbrauch den normalen Durchschnitt für den Treiber oder einen Executor für einen AWS Glue-Auftrag überschreitet.
+ Wegfall von Executors: Richten Sie einen Alarm für den Fall ein, dass die Anzahl der Executors in einem AWS Glue-Auftrag für lange Zeit unter einen bestimmten Grenzwert fällt.
+ Datenbestand oder Wiederaufbereitung: Vergleichen Sie die Metriken einzelner Jobs in einem Workflow mithilfe eines CloudWatch mathematischen Ausdrucks. Sie können dann einen Alarm für den resultierenden Ausdruckswert auslösen (z. B. das Verhältnis der von einem Auftrag geschriebenen Bytes zu den von einem nachfolgenden Auftrag gelesenen Bytes).

Detaillierte Anweisungen zum Einstellen von Alarmen finden [Sie unter Einen CloudWatch Alarm erstellen oder bearbeiten](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html) im *[Amazon CloudWatch Events-Benutzerhandbuch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/)*. 

Informationen zum Überwachen und Debuggen von Szenarien mit Hilfe von CloudWatch finden Sie unter[Auftragsüberwachung und Debugging](monitor-profile-glue-job-cloudwatch-metrics.md).

# Protokollierung für AWS Glue Jobs
<a name="monitor-continuous-logging"></a>

 In AWS Glue 5.0 verfügen alle Jobs über Funktionen zur Echtzeitprotokollierung. Darüber hinaus können Sie benutzerdefinierte Konfigurationsoptionen angeben, um das Protokollierungsverhalten anzupassen. Zu diesen Optionen gehören das Festlegen des Amazon CloudWatch Protokollgruppennamens, des Amazon CloudWatch Protokollstream-Präfixes (das der ID und driver/executor ID der AWS Glue Auftragsausführung vorangestellt wird) und des Protokollkonvertierungsmusters für Protokollnachrichten. Mit diesen Konfigurationen können Sie Protokolle in benutzerdefinierten Amazon CloudWatch -Protokollgruppen mit unterschiedlichen Ablaufrichtlinien zusammenfassen. Darüber hinaus können Sie die Protokolle effektiver analysieren, indem Sie benutzerdefinierte Protokollstream-Präfixe und Konvertierungsmuster verwenden. Dieser Grad der Anpassung ermöglicht es Ihnen, die Protokollverwaltung und -analyse gemäß Ihren spezifischen Anforderungen zu optimieren. 

## Verhalten bei der Protokollierung in 5.0 AWS Glue
<a name="monitor-logging-behavior-glue-50"></a>

 Standardmäßig werden Systemprotokolle, Spark-Daemon-Protokolle und AWS Glue Benutzer-Logger-Protokolle in Amazon CloudWatch die `/aws-glue/jobs/error` Protokollgruppe geschrieben. Andererseits werden die Benutzerprotokolle stdout (Standardausgabe) und stderr (Standardfehler) standardmäßig in die `/aws-glue/jobs/output`-Protokollgruppe geschrieben. 

## Benutzerdefiniertes Protokollieren
<a name="monitor-logging-custom"></a>

 Sie können die Standardpräfixe für Protokollgruppen und Protokollstreams mithilfe der folgenden Auftragsargumente anpassen: 
+  `--custom-logGroup-prefix`: Ermöglicht es Ihnen, ein benutzerdefiniertes Präfix für die Protokollgruppen `/aws-glue/jobs/error` und `/aws-glue/jobs/output` anzugeben. Wenn Sie ein benutzerdefiniertes Präfix angeben, weisen die Namen der Protokollgruppen das folgende Format auf: 
  +  `/aws-glue/jobs/error` wird `<customer prefix>/error` sein. 
  +  `/aws-glue/jobs/output ` wird `<customer prefix>/output` sein. 
+  `--custom-logStream-prefix`: Ermöglicht es Ihnen, ein benutzerdefiniertes Präfix für die Namen der Protokollstreams innerhalb der Protokollgruppen anzugeben. Wenn Sie ein benutzerdefiniertes Präfix angeben, weisen die Namen der Protokollstreams das folgende Format auf: 
  +  `jobrunid-driver` wird `<customer log stream>-driver` sein. 
  +  `jobrunid-executorNum` wird `<customer log stream>-executorNum` sein. 

 Validierungsregeln und Einschränkungen für benutzerdefinierte Präfixe: 
+  Der Name des Protokollstreams muss insgesamt zwischen 1 und 512 Zeichen lang sein. 
+  Das benutzerdefinierte Präfix selbst ist auf 400 Zeichen beschränkt. 
+  Das benutzerdefinierte Präfix muss dem regulären Ausdrucksmuster „[^:\$1]\$1“ entsprechen (zulässige Sonderzeichen sind „\$1“, „-“ und „/“). 

## Protokollieren von anwendungsspezifischen Meldungen mit dem benutzerdefinierten Skript-Logger
<a name="monitor-logging-script"></a>

Sie können den AWS Glue Logger verwenden, um alle anwendungsspezifischen Meldungen im Skript zu protokollieren, die in Echtzeit an den Treiberprotokollstream gesendet werden.

Das folgende Beispiel zeigt ein Python-Skript.

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
logger = glueContext.get_logger()
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
```

Das folgende Beispiel zeigt ein Scala-Skript.

```
import com.amazonaws.services.glue.log.GlueLogger

object GlueApp {
  def main(sysArgs: Array[String]) {
    val logger = new GlueLogger
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
  }
}
```

## Aktivieren des Fortschrittsbalkens zum Anzeigen des Auftragsfortschritts
<a name="monitor-logging-progress"></a>

AWS Glue bietet unter dem `JOB_RUN_ID-progress-bar` Protokollstream eine Fortschrittsleiste in Echtzeit, mit der der Status der AWS Glue Auftragsausführung überprüft werden kann. Derzeit unterstützt er nur Aufträge, die `glueContext` initialisieren. Wenn Sie einen reinen Spark-Job ohne Initialisierung ausführen`glueContext`, wird der AWS Glue Fortschrittsbalken nicht angezeigt.

Der Fortschrittsbalken wird alle 5 Sekunden aktualisiert.

```
Stage Number (Stage Name): > (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
```

## Sicherheitskonfiguration mit Protokollierung Amazon CloudWatch
<a name="monitor-security-config-logging"></a>

 Wenn eine Sicherheitskonfiguration für Amazon CloudWatch Protokolle aktiviert ist, werden Protokollgruppen mit bestimmten Benennungsmustern AWS Glue erstellt, die den Namen der Sicherheitskonfiguration enthalten. 

### Benennung von Protokollgruppen mit Sicherheitskonfiguration
<a name="monitor-log-group-naming"></a>

 Die Standard- und benutzerdefinierten Protokollgruppen lauten wie folgt: 
+  **Standard-Fehlerprotokollgruppe:** `/aws-glue/jobs/Security-Configuration-Name-role/glue-job-role/error` 
+  **Standard-Ausgabeprotokollgruppe:** `/aws-glue/jobs/Security-Configuration-Name-role/glue-job-role/output` 
+  **Benutzerdefinierte Fehlerprotokollgruppe (AWS Glue 5.0):** `custom-log-group-prefix/Security-Configuration-Name-role/glue-job-role/error` 
+  **Benutzerdefinierte Ausgabeloggruppe (AWS Glue 5.0):** `custom-log-group-prefix/Security-Configuration-Name-role/glue-job-role/output` 

### Erforderliche IAM-Berechtigungen
<a name="monitor-logging-iam-permissions"></a>

 Sie müssen Ihren IAM-Rollenberechtigungen `logs:AssociateKmsKey`-Berichtigungen hinzufügen, wenn Sie eine Sicherheitskonfiguration mit Amazon CloudWatch  Logs aktivieren. Wenn diese Berechtigung nicht enthalten ist, wird die fortlaufende Protokollierung deaktiviert. 

 Um die Verschlüsselung für die Amazon CloudWatch Logs zu konfigurieren, folgen Sie außerdem den Anweisungen unter [Log Data in Amazon CloudWatch Logs Using verschlüsseln AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) im Amazon Amazon CloudWatch Logs-Benutzerhandbuch. 

### Zusätzliche Informationen
<a name="additional-info"></a>

 Weitere Informationen zum Erstellen von Sicherheitskonfigurationen finden Sie unter [Sicherheitskonfigurationen auf der AWS Glue Konsole verwalten](https://docs.aws.amazon.com/glue/latest/dg/console-security-configurations.html). 

**Topics**
+ [Verhalten bei der Protokollierung in 5.0 AWS Glue](#monitor-logging-behavior-glue-50)
+ [Benutzerdefiniertes Protokollieren](#monitor-logging-custom)
+ [Protokollieren von anwendungsspezifischen Meldungen mit dem benutzerdefinierten Skript-Logger](#monitor-logging-script)
+ [Aktivieren des Fortschrittsbalkens zum Anzeigen des Auftragsfortschritts](#monitor-logging-progress)
+ [Sicherheitskonfiguration mit Protokollierung Amazon CloudWatch](#monitor-security-config-logging)
+ [Kontinuierliche Protokollierung für Jobs der AWS Glue Version 4.0 und früher aktivieren](monitor-continuous-logging-enable.md)
+ [Protokolle für AWS Glue Jobs anzeigen](monitor-continuous-logging-view.md)

# Kontinuierliche Protokollierung für Jobs der AWS Glue Version 4.0 und früher aktivieren
<a name="monitor-continuous-logging-enable"></a>

**Anmerkung**  
 In AWS Glue 4.0 und früheren Versionen war die kontinuierliche Protokollierung eine verfügbare Funktion. Mit der Einführung von AWS Glue 5.0 können jedoch alle Jobs in Echtzeit protokolliert werden. Weitere Informationen zu den Protokollierungsfunktionen und Konfigurationsoptionen in AWS Glue 5.0 finden Sie unter [Protokollierung für AWS Glue Jobs](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html). 

Sie können die kontinuierliche Protokollierung über die AWS Glue Konsole oder über AWS Command Line Interface (AWS CLI) aktivieren. 

Sie können die kontinuierliche Protokollierung aktivieren, wenn Sie einen neuen Auftrag erstellen oder einen vorhandenen Auftrag bearbeiten bzw. über die AWS CLI aktivieren.

Sie können auch benutzerdefinierte Konfigurationsoptionen wie den Namen der Amazon CloudWatch Protokollgruppe, das CloudWatch Protokollstream-Präfix vor der driver/executor ID der AWS Glue Auftragsausführung und das Protokollkonvertierungsmuster für Protokollnachrichten angeben. Diese Konfigurationen helfen Ihnen dabei, aggregierte Protokolle in benutzerdefinierten CloudWatch Protokollgruppen mit unterschiedlichen Ablaufrichtlinien einzurichten und sie mit benutzerdefinierten Logstream-Präfixen und Konvertierungsmustern weiter zu analysieren. 

**Topics**
+ [Mit dem AWS-Managementkonsole](#monitor-continuous-logging-enable-console)
+ [Protokollieren von anwendungsspezifischen Meldungen mit dem benutzerdefinierten Skript-Logger](#monitor-continuous-logging-script)
+ [Aktivieren des Fortschrittsbalkens zum Anzeigen des Auftragsfortschritts](#monitor-continuous-logging-progress)
+ [Sicherheitskonfiguration mit kontinuierlicher Protokollierung](#monitor-logging-encrypt-log-data)

## Mit dem AWS-Managementkonsole
<a name="monitor-continuous-logging-enable-console"></a>

Gehen Sie wie folgt vor, um mithilfe der Konsole die kontinuierliche Protokollierung beim Erstellen oder Bearbeiten eines AWS Glue Jobs zu aktivieren.

**Um einen neuen AWS Glue Job mit kontinuierlicher Protokollierung zu 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 die Option **ETL-Aufträge** aus.

1. Wählen Sie **Visual ETL**.

1. Erweitern Sie auf der Registerkarte **Auftragsdetails** den Abschnitt **Erweiterte Eigenschaften**.

1. Wählen Sie unter **Kontinuierliche Protokollierung** die Option **Anmeldungen aktivieren** aus CloudWatch.

**Um die kontinuierliche Protokollierung für einen vorhandenen AWS Glue Job zu aktivieren**

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 die Option **Jobs (Aufträge)** aus.

1. Wählen Sie einen Auftrag in der Liste **Jobs (Aufträge)** aus.

1. Wählen Sie **Action (Aktion)**, **Edit job (Auftrag bearbeiten)** aus.

1. Erweitern Sie auf der Registerkarte **Auftragsdetails** den Abschnitt **Erweiterte Eigenschaften**.

1. Wählen Sie unter **Kontinuierliche Protokollierung** die Option Anmeldung **aktivieren** aus CloudWatch.

### Verwenden des AWS CLI
<a name="monitor-continuous-logging-cli"></a>

Um die kontinuierliche Protokollierung zu aktivieren, übergeben Sie Jobparameter an einen AWS Glue Job. Übergeben Sie die folgenden speziellen Job-Parameter, die anderen AWS Glue Job-Parametern ähneln. Weitere Informationen finden Sie unter [Verwenden von Auftragsparametern in AWS Glue-Jobs](aws-glue-programming-etl-glue-arguments.md).

```
'--enable-continuous-cloudwatch-log': 'true'
```

Sie können einen benutzerdefinierten CloudWatch Amazon-Protokollgruppennamen angeben. Sofern nicht angegeben, lautet der Standardname der Protokollgruppe `/aws-glue/jobs/logs-v2`.

```
'--continuous-log-logGroup': 'custom_log_group_name'
```

Sie können ein benutzerdefiniertes CloudWatch Amazon-Logstream-Präfix angeben. Sofern nicht angegeben, ist das standardmäßige Logstream-Präfix die Auftragsausführungs-ID.

```
'--continuous-log-logStreamPrefix': 'custom_log_stream_prefix'
```

Sie können ein benutzerdefiniertes Konvertierungsmuster für die kontinuierliche Protokollierung angeben. Sofern nicht angegeben, ist das Standardkonvertierungsmuster `%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n`. Beachten Sie, dass das Konvertierungsmuster nur für Treiberprotokolle und Executor-Protokolle gilt. Dies wirkt sich nicht auf die AWS Glue -Fortschrittsleiste aus.

```
'--continuous-log-conversionPattern': 'custom_log_conversion_pattern'
```

## Protokollieren von anwendungsspezifischen Meldungen mit dem benutzerdefinierten Skript-Logger
<a name="monitor-continuous-logging-script"></a>

Sie können den AWS Glue Logger verwenden, um alle anwendungsspezifischen Meldungen im Skript zu protokollieren, die in Echtzeit an den Treiberprotokollstream gesendet werden.

Das folgende Beispiel zeigt ein Python-Skript.

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
logger = glueContext.get_logger()
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
```

Das folgende Beispiel zeigt ein Scala-Skript.

```
import com.amazonaws.services.glue.log.GlueLogger

object GlueApp {
  def main(sysArgs: Array[String]) {
    val logger = new GlueLogger
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
  }
}
```

## Aktivieren des Fortschrittsbalkens zum Anzeigen des Auftragsfortschritts
<a name="monitor-continuous-logging-progress"></a>

AWS Glue bietet unter dem `JOB_RUN_ID-progress-bar` Protokollstream eine Fortschrittsleiste in Echtzeit, mit der der Status der AWS Glue Auftragsausführung überprüft werden kann. Derzeit unterstützt er nur Aufträge, die `glueContext` initialisieren. Wenn Sie einen reinen Spark-Job ohne Initialisierung ausführen`glueContext`, wird der AWS Glue Fortschrittsbalken nicht angezeigt.

Der Fortschrittsbalken wird alle 5 Sekunden aktualisiert.

```
Stage Number (Stage Name): > (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
```

## Sicherheitskonfiguration mit kontinuierlicher Protokollierung
<a name="monitor-logging-encrypt-log-data"></a>

Wenn eine Sicherheitskonfiguration für CloudWatch Protokolle aktiviert ist, AWS Glue wird eine Protokollgruppe mit dem folgenden Namen für fortlaufende Protokolle erstellt:

```
<Log-Group-Name>-<Security-Configuration-Name>
```

Die Standard- und benutzerdefinierten Protokollgruppen lauten wie folgt:
+ Die standardmäßige fortlaufende Protokollgruppe lautet `/aws-glue/jobs/error-<Security-Configuration-Name>`
+ Die benutzerdefinierte fortlaufende Protokollgruppe lautet `<custom-log-group-name>-<Security-Configuration-Name>`

Sie `logs:AssociateKmsKey` müssen Ihrer IAM-Rollenberechtigungen hinzufügen, wenn Sie eine Sicherheitskonfiguration mit CloudWatch Protokollen aktivieren. Wenn diese Berechtigung nicht enthalten ist, wird die fortlaufende Protokollierung deaktiviert. Um die Verschlüsselung für die CloudWatch Logs zu konfigurieren, folgen Sie außerdem den Anweisungen unter [Log Data in CloudWatch Logs Using verschlüsseln AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html) im *Amazon CloudWatch Logs-Benutzerhandbuch*.

Weitere Informationen zum Erstellen einer Sicherheitskonfiguration finden Sie hier: [Verwalten von Sicherheitskonfigurationen in der AWS Glue-Konsole](console-security-configurations.md).

**Anmerkung**  
 Es können zusätzliche Gebühren anfallen, wenn Sie die Protokollierung aktivieren und zusätzliche CloudWatch Protokollereignisse erstellt werden. Weitere Informationen finden Sie unter [ CloudWatch Amazon-Preise](https://aws.amazon.com/cloudwatch/pricing/). 

# Protokolle für AWS Glue Jobs anzeigen
<a name="monitor-continuous-logging-view"></a>

Sie können Echtzeitprotokolle über die AWS Glue Konsole oder die CloudWatch Amazon-Konsole anzeigen.

**Um Echtzeitprotokolle über das AWS Glue Konsolen-Dashboard anzuzeigen**

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 die Option **Jobs (Aufträge)** aus.

1. Fügen Sie einen Auftrag hinzu oder starten Sie einen vorhandenen Auftrag. Wählen Sie **Action (Aktion)**, **Run job (Auftrag ausführen)** aus.

   Wenn Sie einen Auftrag starten, navigieren Sie zu einer Seite mit Informationen über den laufenden Auftrag:
   + Die Registerkarte **Logs (Protokolle)** zeigt die älteren aggregierten Anwendungsprotokolle an.
   + Die Registerkarte **Protokolle** zeigt einen Echtzeit-Fortschrittsbalken an, wenn der Auftrag ausgeführt wird und `glueContext` initialisiert ist.
   + Die Registerkarte **Protokolle** enthält auch die **Treiberprotokolle**, in denen Apache Spark-Treiberprotokolle in Echtzeit erfasst werden, und Anwendungsprotokolle aus dem Skript, die mit dem AWS Glue Anwendungslogger protokolliert wurden, während der Job ausgeführt wird.

1. Für ältere Aufträge können Sie auch die Echtzeitprotokolle unter **Job History (Auftragsverlauf)** anzeigen, indem Sie **Jobs (Aufträge)** auswählen. Mit dieser Aktion gelangen Sie zu der CloudWatch Konsole, auf der alle Protokollstreams für Spark-Treiber, Executor und Fortschrittsbalken für diese Jobausführung angezeigt werden.

**Um Echtzeitprotokolle über das CloudWatch Konsolen-Dashboard anzuzeigen**

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 **Log (Protokoll)** aus.

1. Wählen Sie die **Protokollgruppe /aws-glue/jobs/error/**aus.

1. Fügen Sie die Auftragsausführung-ID in das Feld **Filter** ein.

   Sie können die Treiberprotokolle, die Executor-Protokolle und den Fortschrittsbalken anzeigen (wenn der **Standard filter (Standardfilter)** verwendet wird).

# Überwachung mit AWS Glue-Beobachtbarkeitsmetriken
<a name="monitor-observability"></a>

**Anmerkung**  
AWS Glue-Beobachtbarkeitsmetriken sind bei AWS Glue 4.0 und späteren Versionen verfügbar.

 Nutzen Sie AWS Glue-Beobachtbarkeitsmetriken, um Einblicke in die Abläufe in AWS Glue für Apache Spark zu erhalten. So können Sie die Sichtung und Analyse von Problemen verbessern. Beobachtbarkeitsmetriken werden über Amazon CloudWatch -Dashboards visualisiert und können verwendet werden, um die Ursache von Fehlern zu analysieren und Leistungsengpässe zu diagnostizieren. Sie können den Zeitaufwand für das Debuggen von Problemen reduzieren, sodass Sie sich darauf konzentrieren können, Probleme schneller und effektiver zu lösen. 

 AWS GlueObservability bietet Amazon CloudWatch Metriken, die in die folgenden vier Gruppen unterteilt sind: 
+  **Zuverlässigkeit (d. h. Fehlerklassen)** – Identifizieren Sie ganz einfach die häufigsten Fehlerursachen in einem bestimmten Zeitraum, die Sie möglicherweise beheben möchten. 
+  **Leistung (d. h. Schiefe)** – Identifizieren Sie Leistungsengpässe und wenden Sie Optimierungsmethoden an. Wenn Sie beispielsweise Leistungseinbußen aufgrund von Auftragsschiefe feststellen, können Sie die adaptive Abfrageausführung von Spark aktivieren und den Schwellenwert für schiefe Verknüpfungen anpassen. 
+  **Durchsatz (d. h. pro source/sink Durchsatz)** — Überwachen Sie Trends bei Lese- und Schreibvorgängen von Daten. Sie können auch Amazon CloudWatch Alarme für Anomalien konfigurieren. 
+  **Ressourcenauslastung (d. h. Mitarbeiter, Speicher- und Festplattennutzung)** – Lokalisieren Sie Aufträge mit geringer Kapazitätsauslastung auf effiziente Weise. Für diese Aufträge kann es sinnvoll sein, AWS Glue Auto Scaling zu aktivieren. 

## Erste Schritte mit AWS Glue-Beobachtbarkeitsmetriken
<a name="monitor-observability-getting-started"></a>

**Anmerkung**  
 Die neuen Metriken sind standardmäßig in der AWS Glue Studio-Konsole aktiviert. 

**So konfigurieren Sie Beobachtbarkeitsmetriken in AWS Glue Studio:**

1. Melden Sie sich bei der AWS Glue-Konsole an und wählen Sie im Konsolenmenü die Option **ETL-Aufträge** aus.

1. Klicken Sie im Bereich **Ihre Aufträge** auf den Namen des gewünschten Auftrags.

1. Wählen Sie die Registerkarte **Job details (Auftragsdetails)** aus.

1. Scrollen Sie nach unten, wählen Sie **Erweiterte Eigenschaften** und dann **Metriken zur Auftragsbeobachtbarkeit** aus.  
![\[Der Screenshot zeigt die Registerkarte „Erweiterte Eigenschaften“ in den Auftragsdetails. Die Option „Metriken zur Auftragsbeobachtbarkeit“ ist hervorgehoben.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/job-details-observability-metrics.png)

**Um AWS Glue Observability-Metriken zu aktivieren, verwenden Sie: AWS CLI**
+  Fügen Sie der `--default-arguments`-Zuordnung in der JSON-Eingabedatei den folgenden Schlüsselwert hinzu: 

  ```
  --enable-observability-metrics, true
  ```

## Verwenden der AWS Glue-Beobachtbarkeit
<a name="monitor-observability-cloudwatch"></a>

 Da die AWS Glue Observability-Metriken über bereitgestellt werden Amazon CloudWatch, können Sie die Amazon CloudWatch Konsole, das SDK oder die API verwenden AWS CLI, um die Datenpunkte der Observability-Metriken abzufragen. Ein Anwendungsbeispiel für die Verwendung von AWS Glue-Beobachtbarkeitsmetriken finden Sie unter [Verwenden von Glue-Beobachtbarkeit für die Überwachung der Ressourcennutzung zur Kostensenkung](https://aws.amazon.com/blogs/big-data/enhance-monitoring-and-debugging-for-aws-glue-jobs-using-new-job-observability-metrics/). 

### Observability in der Konsole verwenden AWS Glue Amazon CloudWatch
<a name="monitor-observability-cloudwatch-console"></a>

**Um Metriken in der Amazon CloudWatch Konsole abzufragen und zu visualisieren:**

1.  Öffnen Sie die Amazon CloudWatch Konsole und wählen Sie **Alle Metriken** aus. 

1.  Wählen Sie unter „Benutzerdefinierte Namespaces“ **AWS Glue** aus. 

1.  Wählen Sie **„Metriken zur Auftragsbeobachtbarkeit“, „Beobachtbarkeitsmetriken pro Quelle“ oder „Beobachtbarkeitsmetriken pro Senke“** aus. 

1. Suchen Sie nach dem gewünschten Metrik- und Auftragsnamen sowie der Auftragsausführungs-ID und wählen Sie sie aus.

1. Konfigurieren Sie auf der Registerkarte **Grafische Metriken** Ihre bevorzugte Statistik, den Zeitraum und andere Optionen.  
![\[Der Screenshot zeigt die Amazon CloudWatch Konsole und das Metrikdiagramm.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/cloudwatch-console-metrics.png)

**Um eine Observability-Metrik abzufragen, verwenden Sie AWS CLI:**

1.  Erstellen Sie eine JSON-Datei mit einer Metrikdefinition und ersetzen Sie `your-Glue-job-name` und `your-Glue-job-run-id` mit Ihren Werten. 

   ```
   $ cat multiplequeries.json
   [
       {
           "Id": "avgWorkerUtil_0",
           "MetricStat": {
               "Metric": {
                   "Namespace": "Glue",
                   "MetricName": "glue.driver.workerUtilization",
                   "Dimensions": [
                       {
                           "Name": "JobName",
                           "Value": "<your-Glue-job-name-A>"
                       },
                       {
                           "Name": "JobRunId",
                           "Value": "<your-Glue-job-run-id-A>"
                       },
                       {
                           "Name": "Type",
                           "Value": "gauge"
                       },
                       {
                           "Name": "ObservabilityGroup",
                           "Value": "resource_utilization"
                       }
                   ]
               },
               "Period": 1800,
               "Stat": "Minimum",
               "Unit": "None"
           }
       },
       {
           "Id": "avgWorkerUtil_1",
           "MetricStat": {
               "Metric": {
                   "Namespace": "Glue",
                   "MetricName": "glue.driver.workerUtilization",
                   "Dimensions": [
                       {
                           "Name": "JobName",
                           "Value": "<your-Glue-job-name-B>"
                       },
                       {
                           "Name": "JobRunId",
                           "Value": "<your-Glue-job-run-id-B>"
                       },
                       {
                           "Name": "Type",
                           "Value": "gauge"
                       },
                       {
                           "Name": "ObservabilityGroup",
                           "Value": "resource_utilization"
                       }
                   ]
               },
               "Period": 1800,
               "Stat": "Minimum",
               "Unit": "None"
           }
       }
   ]
   ```

1.  Führen Sie den Befehl `get-metric-data` aus: 

   ```
   $ aws cloudwatch get-metric-data --metric-data-queries file: //multiplequeries.json \
        --start-time '2023-10-28T18: 20' \
        --end-time '2023-10-28T19: 10'  \
        --region us-east-1
   {
       "MetricDataResults": [
           {
               "Id": "avgWorkerUtil_0",
               "Label": "<your-label-for-A>",
               "Timestamps": [
                   "2023-10-28T18:20:00+00:00"
               ],
               "Values": [
                   0.06718750000000001
               ],
               "StatusCode": "Complete"
           },
           {
               "Id": "avgWorkerUtil_1",
               "Label": "<your-label-for-B>",
               "Timestamps": [
                   "2023-10-28T18:50:00+00:00"
               ],
               "Values": [
                   0.5959183673469387
               ],
               "StatusCode": "Complete"
           }
       ],
       "Messages": []
   }
   ```

## Beobachtbarkeitsmetriken
<a name="monitor-observability-metrics-definitions"></a>

 AWS GlueObservability erstellt Profile und sendet die folgenden Metriken Amazon CloudWatch alle 30 Sekunden. Einige dieser Metriken können auf der Seite „AWS Glue StudioJob Runs Monitoring“ angezeigt werden. 


| Metrik | Description | Kategorie | 
| --- | --- | --- | 
| glue.driver.skewness.stage |  Metrikkategorie: job\$1performance Ausführungsschiefe von Spark-Phasen: Diese Metrik gibt an, wie lange die maximale Aufgabendauer in einer bestimmten Phase im Vergleich zur mittleren Aufgabendauer in dieser Phase ist. Diese Metrik erfasst Abweichungen bei der Ausführung, die durch schiefe Eingabedaten oder durch eine Transformation (z. B. schiefe Verknüpfung) verursacht werden. Die Werte dieser Metrik fallen in den Bereich [0, unendlich[, wobei 0 bedeutet, dass der Unterschied zwischen der maximalen und der mittleren Ausführungszeit von Aufgaben in der Phase weniger beträgt als ein bestimmter Phasenabweichungsfaktor. Der Standardschiefefaktor von Phasen ist „5“ und kann mit dieser Spark-Konfiguration überschrieben werden: spark.metrics.conf.driver.source.glue.jobPerformance.skewnessFactor Ein Wert von 1 für die Phasenabweichung bedeutet, dass der Unterschied das Doppelte des Abweichungsfaktors der Phase beträgt.  Der Wert für die Phasenschiefe wird alle 30 Sekunden aktualisiert, um die aktuelle Schiefe widerzuspiegeln. Der Wert am Ende der Phase spiegelt die finale Schiefe der Phase wider. Diese Metrik auf Stufenebene wird verwendet, um die Metrik auf Auftragsebene `glue.driver.skewness.job` zu berechnen. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Typ (Gauge) und ObservabilityGroup (job\$1performance) Gültige Statistiken: Durchschnitt, Maximum, Minimum, Prozent Einheit: Anzahl  | job\$1performance | 
| glue.driver.skewness.job |  Metrikkategorie: job\$1performance  Die Auftragsschiefe ist das Maximum der gewichteten Schiefe aller Phasen. Die Schiefe der Phase (glue.driver.skewness.stage) wird mit der Dauer der Phase gewichtet. Auf diese Weise soll der Ausnahmefall vermieden werden, bei dem eine stark schiefe Phase im Vergleich zu anderen Phasen tatsächlich nur für eine sehr kurze Zeit ausgeführt wird (und ihre Abweichung daher für die gesamte Auftragsleistung nicht signifikant ist und es sich nicht lohnt, diese Abweichung zu beheben).  Diese Metrik wird nach Abschluss jeder Phase aktualisiert, sodass der letzte Wert die tatsächliche Gesamtabweichung des Auftrags widerspiegelt. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Typ (Gauge) und ObservabilityGroup (job\$1performance) Gültige Statistiken: Durchschnitt, Maximum, Minimum, Prozent Einheit: Anzahl  | job\$1performance | 
| glue.succeed.ALL |  Metrikkategorie: Fehler Gesamtzahl der erfolgreichen Auftragsausführungen, für ein vollständiges Bild der Fehlerkategorien Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Typ (Anzahl) und ObservabilityGroup (Fehler) Gültige Statistiken: SUM Einheit: Anzahl  | error | 
| glue.error.ALL |  Metrikkategorie: Fehler  Gesamtzahl der Fehler bei Auftragsausführungen, für ein vollständiges Bild der Fehlerkategorien Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Typ (Anzahl) und ObservabilityGroup (Fehler) Gültige Statistiken: SUM Einheit: Anzahl  | error | 
| glue.error.[Fehlerkategorie] |  Metrikkategorie: Fehler  Dabei handelt es sich um eine Reihe von Metriken, die nur aktualisiert werden, wenn eine Auftragsausführung fehlschlägt. Die Fehlerkategorisierung hilft bei der Analyse und dem Debugging. Wenn eine Auftragsausführung fehlschlägt, wird der Fehler, der dazu geführt hat, kategorisiert und die entsprechende Metrik für die Fehlerkategorie wird auf 1 gesetzt. Dies hilft bei der Durchführung von Fehleranalysen im Zeitverlauf sowie bei der Fehleranalyse für alle Jobs, um die häufigsten Fehlerkategorien zu identifizieren und sie zu beheben. AWS Glue hat 28 Fehlerkategorien, darunter OUT\$1OF\$1MEMORY (Treiber und Executor), PERMISSION, SYNTAX und THROTTLING. Weitere Fehlerkategorien sind unter anderem COMPILATION, LAUNCH und TIMEOUT. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Typ (Anzahl) und ObservabilityGroup (Fehler) Gültige Statistiken: SUM Einheit: Anzahl  | error | 
| glue.driver.workerUtilization |  Metrikkategorie: resource\$1utilization  Der Prozentsatz der zugewiesenen Arbeitskräfte, die tatsächlich eingesetzt werden. Wenn nicht gut, kann Auto Scaling helfen. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt, Maximum, Minimum, Prozent Einheit: Prozentsatz  | resource\$1utilization | 
| glue.driver.memory.heap.[verfügbar \$1 belegt] |  Metrikkategorie: resource\$1utilization  Der verfügbare/belegte Heap-Speicher des Treibers während der Auftragsausführung. Dies hilft, Trends bei der Speichernutzung zu verstehen, insbesondere im Zeitverlauf, wodurch potenzielle Ausfälle vermieden werden. Außerdem können Ausfälle im Zusammenhang mit Speicher behoben werden. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Byte  | resource\$1utilization | 
| glue.driver.memory.heap.used.percentage |  Metrikkategorie: resource\$1utilization  Der belegte Heap-Speicher des Treibers während der Auftragsausführung (in %). Dies hilft, Trends bei der Speichernutzung zu verstehen, insbesondere im Zeitverlauf, wodurch potenzielle Ausfälle vermieden werden. Außerdem können Ausfälle im Zusammenhang mit Speicher behoben werden. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Prozentsatz  | resource\$1utilization | 
| glue.driver.memory.non-heap.[verfügbar \$1 belegt] |  Metrikkategorie: resource\$1utilization  Der verfügbare/belegte Non-Heap-Speicher des Treibers während der Auftragsausführung. Dies hilft, Trends bei der Speichernutzung zu verstehen, insbesondere im Zeitverlauf, wodurch potenzielle Ausfälle vermieden werden. Außerdem können Ausfälle im Zusammenhang mit Speicher behoben werden. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Byte  | resource\$1utilization | 
| glue.driver.memory.non-heap.used.percentage |  Metrikkategorie: resource\$1utilization  Der belegte Non-Heap-Speicher des Treibers während der Auftragsausführung (in %). Dies hilft, Trends bei der Speichernutzung zu verstehen, insbesondere im Zeitverlauf, wodurch potenzielle Ausfälle vermieden werden. Außerdem können Ausfälle im Zusammenhang mit Speicher behoben werden. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Prozentsatz  | resource\$1utilization | 
| glue.driver.memory.total.[verfügbar \$1 belegt] |  Metrikkategorie: resource\$1utilization  Der verfügbare/belegte Gesamtspeicher des Treibers während der Auftragsausführung. Dies hilft, Trends bei der Speichernutzung zu verstehen, insbesondere im Zeitverlauf, wodurch potenzielle Ausfälle vermieden werden. Außerdem können Ausfälle im Zusammenhang mit Speicher behoben werden. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Byte  | resource\$1utilization | 
| glue.driver.memory.total.used.percentage |  Metrikkategorie: resource\$1utilization  Der belegte Gesamtspeicher des Treibers während der Auftragsausführung (in %). Dies hilft, Trends bei der Speichernutzung zu verstehen, insbesondere im Zeitverlauf, wodurch potenzielle Ausfälle vermieden werden. Außerdem können Ausfälle im Zusammenhang mit Speicher behoben werden. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Prozentsatz  | resource\$1utilization | 
| glue.ALL.memory.heap.[verfügbar \$1 belegt] |  Metrikkategorie: resource\$1utilization  Der Heap-Speicher der Executoren. available/used ALL bedeutet alle Executoren. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Byte  | resource\$1utilization | 
| glue.ALL.memory.heap.used.percentage |  Metrikkategorie: resource\$1utilization  Der belegte Heap-Speicher der Executoren (in %). ALL bedeutet alle Executoren. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Prozentsatz  | resource\$1utilization | 
| glue.ALL.memory.non-heap.[verfügbar \$1 belegt] |  Metrikkategorie: resource\$1utilization  Der Non-Heap-Speicher der Executoren. available/used ALL bedeutet alle Executoren. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Byte  | resource\$1utilization | 
| glue.ALL.memory.non-heap.used.percentage |  Metrikkategorie: resource\$1utilization  Der belegte Non-Heap-Speicher der Executoren (in %). ALL bedeutet alle Executoren. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Prozentsatz  | resource\$1utilization | 
| glue.ALL.memory.total.[verfügbar \$1 belegt] |  Metrikkategorie: resource\$1utilization  Der gesamte Arbeitsspeicher der Executer. available/used ALL bedeutet alle Executoren. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Byte  | resource\$1utilization | 
| glue.ALL.memory.total.used.percentage |  Metrikkategorie: resource\$1utilization  Der belegte Gesamtspeicher der Executoren (in %). ALL bedeutet alle Executoren. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Prozentsatz  | resource\$1utilization | 
| glue.driver.disk.[available\$1GB \$1 used\$1GB] |  Metrikkategorie: resource\$1utilization  Der available/used Festplattenspeicher des Treibers während der Ausführung des Jobs. Dies hilft, Trends bei der Festplattennutzung zu verstehen, insbesondere im Zeitverlauf, wodurch potenzielle Ausfälle vermieden werden. Außerdem können Ausfälle im Zusammenhang mit zu wenig Festplattenspeicher behoben werden. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Gigabyte  | resource\$1utilization | 
| glue.driver.disk.used.percentage] |  Metrikkategorie: resource\$1utilization  Der available/used Festplattenspeicher des Treibers während der Ausführung des Jobs. Dies hilft, Trends bei der Festplattennutzung zu verstehen, insbesondere im Zeitverlauf, wodurch potenzielle Ausfälle vermieden werden. Außerdem können Ausfälle im Zusammenhang mit zu wenig Festplattenspeicher behoben werden. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Prozentsatz  | resource\$1utilization | 
| glue.ALL.disk.[available\$1GB \$1 used\$1GB] |  Metrikkategorie: resource\$1utilization  Der Festplattenspeicher der Executoren. available/used ALL bedeutet alle Executoren. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Gigabyte  | resource\$1utilization | 
| glue.ALL.disk.used.percentage |  Metrikkategorie: resource\$1utilization  Der Festplattenspeicher (%) der Executorenavailable/used/used. ALL bedeutet alle Executoren. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID. oder ALL), Type (Gauge) und ObservabilityGroup (resource\$1utilization) Gültige Statistiken: Durchschnitt Einheit: Prozentsatz  | resource\$1utilization | 
| glue.driver.bytesRead |  Metrikkategorie: Durchsatz  Die Anzahl der in dieser Auftragsausführung pro Eingabequelle sowie für ALL-Quellen gelesenen Byte. Dies hilft, das Datenvolumen und seine Veränderungen im Laufe der Zeit besser zu verstehen und Probleme wie Datenabweichungen zu lösen. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Type (Gauge), ObservabilityGroup (resource\$1utilization) und Source (Quelldatenposition) Gültige Statistiken: Durchschnitt Einheit: Byte  | Durchsatz | 
| glue.driver.[recordsRead \$1 filesRead]  |  Metrikkategorie: Durchsatz  Die Anzahl der records/files Lesevorgänge pro Eingabequelle in dieser Auftragsausführung sowie für ALLE Quellen. Dies hilft, das Datenvolumen und seine Veränderungen im Laufe der Zeit besser zu verstehen und Probleme wie Datenabweichungen zu lösen. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Type (Gauge), ObservabilityGroup (resource\$1utilization) und Source (Quelldatenposition) Gültige Statistiken: Durchschnitt Einheit: Anzahl  | Durchsatz | 
| glue.driver.partitionsRead  |  Metrikkategorie: Durchsatz  Die Anzahl der in dieser Auftragsausführung pro Amazon-S3-Eingabequelle sowie für ALL-Quellen gelesenen Partitionen. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Type (Gauge), ObservabilityGroup (resource\$1utilization) und Source (Quelldatenposition) Gültige Statistiken: Durchschnitt Einheit: Anzahl  | Durchsatz | 
| glue.driver.bytesWritten |  Metrikkategorie: Durchsatz  Die Anzahl der in dieser Auftragsausführung pro Ausgabe-Sink sowie für ALL-Sinks geschriebenen Byte. Dies hilft, das Datenvolumen und seine Entwicklung im Laufe der Zeit besser zu verstehen und Probleme wie Verarbeitungsabweichungen zu lösen. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Type (Gauge), ObservabilityGroup (resource\$1utilization) und Sink (Speicherort der Senkendaten) Gültige Statistiken: Durchschnitt Einheit: Byte  | Durchsatz | 
| glue.driver.[recordsWritten \$1 filesWritten] |  Metrikkategorie: Durchsatz  Die Anzahl der records/files Schreibvorgänge pro Ausgabesenke in dieser Auftragsausführung sowie für ALLE Senken. Dies hilft, das Datenvolumen und seine Entwicklung im Laufe der Zeit besser zu verstehen und Probleme wie Verarbeitungsabweichungen zu lösen. Gültige Dimensionen: JobName (der Name des AWS Glue Job), JobRunId (die JobRun ID oder ALL), Type (Gauge), ObservabilityGroup (resource\$1utilization) und Sink (Speicherort der Senkendaten) Gültige Statistiken: Durchschnitt Einheit: Anzahl  | Durchsatz | 

## Fehlerkategorien
<a name="monitor-observability-error-categories"></a>


| Fehlerkategorien | Description | 
| --- | --- | 
| COMPILATION\$1ERROR | Bei der Kompilierung von Scala-Code treten Fehler auf. | 
| CONNECTION\$1ERROR | Beim Herstellen einer Verbindung zu einem service/remote Host-/Datenbankdienst usw. treten Fehler auf. | 
| DISK\$1NO\$1SPACE\$1ERROR |  Wenn auf der Festplatte des Treibers/Executors kein Speicherplatz mehr vorhanden ist, treten Fehler auf.  | 
| OUT\$1OF\$1MEMORY\$1ERROR | Wenn auf dem Speicher des Treibers/Executors kein Speicherplatz mehr vorhanden ist, treten Fehler auf. | 
| IMPORT\$1ERROR | Beim Import von Abhängigkeiten treten Fehler auf. | 
| INVALID\$1ARGUMENT\$1ERROR | Wenn die Eingabeargumente ungültig/illegal sind, treten Fehler auf. | 
| PERMISSION\$1ERROR | Wenn die Genehmigung für Services, Daten usw. fehlt, treten Fehler auf.  | 
| RESOURCE\$1NOT\$1FOUND\$1ERROR |  Wenn Daten, Speicherorte usw. nicht existieren, treten Fehler auf.   | 
| QUERY\$1ERROR | Bei der Ausführung von Spark-SQL-Abfragen treten Fehler auf.  | 
| SYNTAX\$1ERROR | Wenn das Skript einen Syntaxfehler enthält, treten Fehler auf.  | 
| THROTTLING\$1ERROR | Wenn die Beschränkung der Parallelität von Services erreicht oder die Beschränkung der Service Quotas überschritten wird, treten Fehler auf. | 
| DATA\$1LAKE\$1FRAMEWORK\$1ERROR | Aufgrund von nativ AWS Glue-unterstützten Data-Lake-Frameworks wie Hudi, Iceberg usw. treten Fehler auf. | 
| UNSUPPORTED\$1OPERATION\$1ERROR | Wenn ein Vorgang ausgeführt wird, der nicht unterstützt wird, treten Fehler auf. | 
| RESOURCES\$1ALREADY\$1EXISTS\$1ERROR | Wenn eine Ressource, die erstellt oder hinzugefügt werden soll, bereits vorhanden ist, treten Fehler auf. | 
| GLUE\$1INTERNAL\$1SERVICE\$1ERROR | Wenn ein internes Problem mit dem AWS Glue-Service vorliegt, treten Fehler auf.  | 
| GLUE\$1OPERATION\$1TIMEOUT\$1ERROR | Wenn bei einem AWS Glue-Vorgang eine Zeitüberschreitung eintritt, treten Fehler auf. | 
| GLUE\$1VALIDATION\$1ERROR | Wenn ein erforderlicher Wert nicht für den AWS Glue-Auftrag validiert werden konnte, treten Fehler auf. | 
| GLUE\$1JOB\$1BOOKMARK\$1VERSION\$1MISMATCH\$1ERROR | Fehler treten auf, wenn derselbe Job denselben Quell-Bucket exoniert und gleichzeitig in das same/different Ziel schreibt (Parallelität >1) | 
| LAUNCH\$1ERROR | Während der Startphase des AWS Glue-Auftrags treten Fehler auf. | 
| DYNAMODB\$1ERROR | Generische Fehler entstehen durch den Service. Amazon DynamoDB  | 
| GLUE\$1ERROR | Der AWS Glue-Service ruft generische Fehler hervor. | 
| LAKEFORMATION\$1ERROR | Generische Fehler entstehen durch AWS Lake Formation den Service. | 
| REDSHIFT\$1ERROR | Generische Fehler entstehen durch Amazon Redshift den Service. | 
| S3\$1ERROR | Der Amazon–S3-Service ruft generische Fehler hervor. | 
| SYSTEM\$1EXIT\$1ERROR | Generischer Fehler beim Beenden des Systems. | 
| TIMEOUT\$1ERROR | Wenn der Auftrag aufgrund eines Timeouts fehlschlägt, treten generische Fehler auf. | 
| UNCLASSIFIED\$1SPARK\$1ERROR | Spark ruft generische Fehler hervor. | 
| UNCLASSIFIED\$1ERROR | Standard-Fehlerkategorie. | 

## Einschränkungen
<a name="monitoring-observability-limitations"></a>

**Anmerkung**  
`glueContext` muss initialisiert werden, um die Metriken zu veröffentlichen.

 In der Quelldimension ist der Wert je nach Quelltyp entweder ein Amazon-S3-Pfad oder Tabellenname. Wenn es sich bei der Quelle um JDBC handelt und die Abfrageoption verwendet wird, wird die Abfragezeichenfolge außerdem in der Quelldimension festgelegt. Wenn der Wert länger als 500 Zeichen ist, wird er auf 500 Zeichen gekürzt. Für den Wert gelten folgende Einschränkungen: 
+ Nicht-ASCII-Zeichen werden entfernt.
+ Wenn der Quellname kein ASCII-Zeichen enthält, wird er in <Nicht-ASCII-Eingabe> umgewandelt.

### Einschränkungen und Überlegungen zu Durchsatzmetriken
<a name="monitoring-observability-considerations"></a>
+  DataFrame und DataFrame based DynamicFrame (z. B. JDBC, Lesen von Parquet auf Amazon S3) werden unterstützt, RDD-basiert DynamicFrame (z. B. Lesen von CSV, JSON auf Amazon S3 usw.) wird jedoch nicht unterstützt. Technisch gesehen werden alle Lese- und Schreibvorgänge, die auf der Spark-Benutzeroberfläche sichtbar sind, unterstützt. 
+  Die `recordsRead`-Metrik wird ausgegeben, wenn es sich bei der Datenquelle um eine Katalogtabelle handelt und das Format JSON, CSV, Text oder Iceberg ist. 
+  Die Metriken `glue.driver.throughput.recordsWritten`, `glue.driver.throughput.bytesWritten` und `glue.driver.throughput.filesWritten` sind in JDBC- und Iceberg-Tabellen nicht verfügbar. 
+  Metriken können verzögert sein. Wenn der Job in etwa einer Minute abgeschlossen ist, gibt es unter Metrics möglicherweise keine Durchsatzmetriken. Amazon CloudWatch 

# Auftragsüberwachung und Debugging
<a name="monitor-profile-glue-job-cloudwatch-metrics"></a>

Sie können Kennzahlen zu AWS Glue Jobs sammeln und diese auf den CloudWatch Konsolen AWS Glue und Amazon visualisieren, um Probleme zu identifizieren und zu beheben. Die Profilierung Ihrer AWS Glue-Aufträge erfordert die folgenden Schritte:

1.  Metriken aktivieren: 

   1.  Aktivieren der Option **Job metrics (Auftragsmetriken)** in der Auftragsdefinition. Sie können die Profilierung in der AWS Glue-Konsole oder als Parameter für den Auftrag aktivieren. Weitere Informationen finden Sie unter [Definieren von Auftragseigenschaften für Spark-Aufträge](add-job.md#create-job) oder [Verwenden von Auftragsparametern in AWS Glue-Jobs](aws-glue-programming-etl-glue-arguments.md). 

   1.  Aktivieren der Option **AWS Glue-Beobachtbarkeitsmetriken** in der Auftragsdefinition. Sie können die Beobachtbarkeit in der AWS Glue-Konsole oder als Parameter für den Auftrag aktivieren. Weitere Informationen finden Sie unter [Überwachung mit AWS Glue-Beobachtbarkeitsmetriken](monitor-observability.md). 

1. Vergewissern Sie sich, dass das Auftragsskript einen `GlueContext` initialisiert. Beispiel: Der folgende Skriptausschnitt initialisiert einen `GlueContext` und zeigt, wo der profilierte Code im Skript platziert wird. Dieses allgemeine Format wird in den folgenden Debugging-Szenarien verwendet. 

   ```
   import sys
   from awsglue.transforms import *
   from awsglue.utils import getResolvedOptions
   from pyspark.context import SparkContext
   from awsglue.context import GlueContext
   from awsglue.job import Job
   import time
   
   ## @params: [JOB_NAME]
   args = getResolvedOptions(sys.argv, ['JOB_NAME'])
   
   sc = SparkContext()
   glueContext = GlueContext(sc)
   spark = glueContext.spark_session
   job = Job(glueContext)
   job.init(args['JOB_NAME'], args)
   
   ...
   ...
   code-to-profile
   ...
   ...
   
   
   job.commit()
   ```

1. Führen Sie den Auftrag aus.

1. Metriken visualisieren:

   1. Sie können die Auftragsmetriken in der AWS Glue-Konsole visualisieren und abnormale Metriken des Treibers oder Executors identifizieren.

   1. Überprüfen Sie die Messwerte zur Beobachtbarkeit auf der Seite zur Überwachung von Jobläufen, auf der Seite mit den Details zur Jobausführung oder bei Amazon CloudWatch. Weitere Informationen finden Sie unter [Überwachung mit AWS Glue-Beobachtbarkeitsmetriken](monitor-observability.md).

1. Grenzen Sie die Ursache mithilfe der identifizierten Metrik ein.

1. Optional bestätigen Sie die Ursache mithilfe des Protokollstreams des identifizierten Treibers oder Auftrags-Executors.

 **Anwendungsfälle für AWS Glue-Beobachtbarkeitsmetriken** 
+  [Debuggen von OOM-Ausnahmen und Auftragsabweichungen](monitor-profile-debug-oom-abnormalities.md) 
+  [Debugging von anspruchsvolle Phasen und Straggler-Aufgaben](monitor-profile-debug-straggler.md) 
+  [Überwachen des Fortschritts mehrerer Aufträge](monitor-debug-multiple.md) 
+  [Überwachung für die DPU-Kapazitätsplanung](monitor-debug-capacity.md) 
+  [ Verwenden der AWS Glue-Beobachtbarkeit zur Überwachung der Ressourcennutzung zur Kostensenkung ](https://aws.amazon.com/blogs/big-data/enhance-monitoring-and-debugging-for-aws-glue-jobs-using-new-job-observability-metrics) 

# Debuggen von OOM-Ausnahmen und Auftragsabweichungen
<a name="monitor-profile-debug-oom-abnormalities"></a>

Sie können Ausnahmen und Jobanomalien in out-of-memory (OOM) debuggen. AWS Glue In den folgenden Abschnitten werden Szenarien für das Debuggen von out-of-memory Ausnahmen des Apache Spark-Treibers oder eines Spark-Executors beschrieben. 
+ [Debuggen einer OOM-Ausnahme für einen Treiber](#monitor-profile-debug-oom-driver)
+ [Debuggen einer OOM-Ausnahme eines Executors](#monitor-profile-debug-oom-executor)

## Debuggen einer OOM-Ausnahme für einen Treiber
<a name="monitor-profile-debug-oom-driver"></a>

In diesem Szenario liest ein Spark-Auftrag eine große Anzahl von kleinen Dateien von Amazon Simple Storage Service (Amazon S3). Er wandelt die Dateien in das Apache-Parquet-Format um und schreibt sie in Amazon S3. Der Spark-Treiber verfügt nicht mehr über genügend Arbeitsspeicher. Die eingegebenen Amazon-S3-Daten umfassen mehr als 1 Million Dateien in verschiedenen Amazon-S3-Partitionen. 

Der profilierte Code sieht wie folgt aus:

```
data = spark.read.format("json").option("inferSchema", False).load("s3://input_path")
data.write.format("parquet").save(output_path)
```

### Visualisieren Sie die profilierten Metriken auf der Konsole AWS Glue
<a name="monitor-debug-oom-visualize"></a>

Das folgende Diagramm zeigt die Speicherauslastung als Prozentsatz für den Treiber und Executors. Diese Nutzung wird als ein Datenpunkt dargestellt, gemittelt über die Werte in der letzten Minute. Sie sehen im Speicherprofil des Auftrags, dass der [Speicher für den Treiber](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.jvm.heap.usage) die sichere Schwelle von 50 Prozent Auslastung schnell überschreitet. Zum anderen ist die [durchschnittliche Speicherauslastung](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.usage) für alle Executors nach wie vor kleiner als 4 Prozent. Dies zeigt deutlich Anomalien bei der Treiberausführung in diesem Spark-Auftrag. 

![\[Die Speichernutzung in Prozent für den Treiber und Executors.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-memoryprofile.png)


Die Auftragsausführung schlägt schnell fehl und der folgende Fehler wird in der AWS Glue-Konsole auf der Registerkarte **History (Verlauf)** angezeigt: Command Failed mit Exit Code 1 (Fehler mit Exit-Code 1 fehlgeschlagen). Diese Fehlermeldung bedeutet, dass der Auftrag aufgrund eines systemischen Fehlers fehlgeschlagen ist. In diesem Fall steht dem Treiber nicht genügend Arbeitsspeicher zur Verfügung.

![\[Die Fehlermeldung auf der AWS Glue-Konsole.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-errorstring.png)


Wählen Sie auf der Konsole auf der Registerkarte **Verlauf** den Link **Fehlerprotokolle** aus, um zu bestätigen, dass Sie in den CloudWatch Protokollen den Treiber-OOM gefunden haben. Suchen Sie in den Fehlerprotokollen des Auftrags nach "**Error**" (Fehler), um zu bestätigen, dass es tatsächlich eine OOM-Ausnahme war, aufgrund derer der Auftrag fehlgeschlagen ist:

```
# java.lang.OutOfMemoryError: Java heap space
# -XX:OnOutOfMemoryError="kill -9 %p"
# Executing /bin/sh -c "kill -9 12039"...
```

Wählen Sie auf der Registerkarte **History (Verlauf)** für den Auftrag die Option **Logs (Protokolle)**. Zu Beginn des Jobs finden Sie in den CloudWatch Protokollen den folgenden Verlauf der Treiberausführung. Der Spark-Treiber versucht, alle Dateien in allen Verzeichnissen aufzulisten, erzeugt einen `InMemoryFileIndex` und startet eine Aufgabe pro Datei. Dies wiederum führt dazu, dass der Spark-Treiber eine große Datenmenge im Arbeitsspeicher halten muss, um den Status aller Aufgaben zu verfolgen. Er speichert die vollständige Liste einer großen Anzahl von Dateien für den In-Memory-Index im Cache, was zu einem OOM-Fehler für den Treiber führt.

### Korrigieren Sie die Verarbeitung von mehreren Dateien unter Verwendung einer Gruppierung
<a name="monitor-debug-oom-fix"></a>

Sie können die Verarbeitung mehrerer Dateien korrigieren, indem Sie die *Gruppierungsfeature* in AWS Glue anwenden. Die Gruppierung wird automatisch aktiviert, wenn Sie dynamische Frames verwenden und wenn das Eingabe-Dataset eine große Anzahl von Dateien (mehr als 50.000) enthält. Die Gruppierung ermöglicht es Ihnen, mehrere Dateien zu einer Gruppe zusammenzufassen, und erlaubt es einer Aufgabe, die gesamte Gruppe statt einer einzelnen Datei zu bearbeiten. Infolgedessen speichert der Spark-Treiber deutlich weniger Status im Speicher, um weniger Aufgaben zu verfolgen. Weitere Informationen zum manuellen Aktivieren der Gruppierung für Ihre Datasets finden Sie unter [Zusammenfassen von Eingabedateien in größeren Gruppen beim Lesen](grouping-input-files.md).

Um das Speicherprofil des AWS Glue-Auftrags zu überprüfen, müssen Sie den folgenden Code mit aktivierter Gruppierung profilieren:

```
df = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://input_path"], "recurse":True, 'groupFiles': 'inPartition'}, format="json")
datasink = glueContext.write_dynamic_frame.from_options(frame = df, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet", transformation_ctx = "datasink")
```

Sie können das Speicherprofil und die ETL-Datenbewegung im AWS Glue-Auftragsprofil überwachen.

Der Treiber wird über die gesamte Laufzeit des AWS Glue-Auftrags unterhalb der Schwelle von 50 Prozent Speicherverbrauch ausgeführt. Die Executors streamen die Daten von Amazon S3, verarbeiten sie und schreiben sie in Amazon S3. Dadurch verbrauchen sie zu jedem Zeitpunkt weniger als 5 Prozent Speicherplatz.

![\[Das Speicherprofil zeigt, dass das Problem behoben ist.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-memoryprofile-fixed.png)


Das folgende Datenbewegungsprofil zeigt die Gesamtzahl der Amazon-S3-Bytes, die beim Auftragsfortschritt in der letzten Minute von allen Executors [gelesen](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.read_bytes) und [geschrieben](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.write_bytes) wurden. Beide folgen einem ähnlichen Muster, da die Daten über alle Executors gestreamt werden. Der Auftrag verarbeitet alle eine Million Dateien in weniger als drei Stunden.

![\[Das Datenbewegungsprofil zeigt, dass das Problem behoben ist.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-etlmovement.png)


## Debuggen einer OOM-Ausnahme eines Executors
<a name="monitor-profile-debug-oom-executor"></a>

In diesem Szenario erfahren Sie, wie Sie OOM-Ausnahmen debuggen, die in Apache Spark Executors auftreten können. Der folgende Code verwendet den Spark MySQL-Reader, um eine große Tabelle mit etwa 34 Millionen Zeilen in einen Spark DataFrame einzulesen. Anschließend schreibt es ihn im Parquet-Format in Amazon S3. Sie können die Verbindungseigenschaften angeben und die Standardkonfigurationen von Spark verwenden, um die Tabelle zu lesen.

```
val connectionProperties = new Properties()
connectionProperties.put("user", user)
connectionProperties.put("password", password)
connectionProperties.put("Driver", "com.mysql.jdbc.Driver")
val sparkSession = glueContext.sparkSession
val dfSpark = sparkSession.read.jdbc(url, tableName, connectionProperties)
dfSpark.write.format("parquet").save(output_path)
```

### Visualisieren der profilierten Metriken auf der AWS Glue-Konsole
<a name="monitor-debug-oom-visualize-2"></a>

Wenn die Steigung des Speicherauslastungsdiagramms positiv ist und 50 Prozent überschreitet und der Auftrag fehlschlägt, bevor die nächste Metrik ausgegeben wird, wird dies wahrscheinlich durch aufgebrauchten Speicher verursacht. Das folgende Diagramm zeigt, dass innerhalb einer Minute der Ausführung die [durchschnittliche Speicherauslastung](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.usage) in allen Executors schnell über 50 Prozent steigt. Die Nutzung erreicht bis zu 92 Prozent und der Container, der den Executor ausführt, wird von Apache Hadoop YARN beendet. 

![\[Die durchschnittliche Speicherauslastung in allen Executors.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-2-memoryprofile.png)


Wie die folgende Grafik zeigt, wird immer ein [einzelner Executor](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberAllExecutors) ausgeführt, bis der Auftrag fehlschlägt. Dies liegt daran, dass ein neuer Executor gestartet wird, um den beendeten Executor zu ersetzen. Die Lesevorgänge der JDBC-Datenquelle sind standardmäßig nicht parallelisiert, da dies eine Partitionierung der Tabelle für eine Spalte und das Öffnen mehrerer Verbindungen erforderlich machen würde. Dies bewirkt, dass nur ein Executor die vollständige Tabelle sequenziell liest.

![\[Die Auftragsausführung zeigt, dass ein einzelner Executor aktiv ist, bis der Auftrag fehlschlägt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-2-execution.png)


Wie die folgende Grafik zeigt, versucht Spark viermal, eine neue Aufgabe zu starten, bevor der Auftrag fehlschlägt. Sie sehen das [Speicherprofil](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.used) von drei Executors. Jeder Executor verbraucht schnell seinen gesamten Arbeitsspeicher. Der vierte Executor hat nicht mehr genügend Speicherplatz, und der Auftrag schlägt fehl. Aus diesem Grund wird die Metrik nicht sofort gemeldet.

![\[Die Speicherprofile der Executors.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-2-exec-memprofile.png)


Sie können anhand der Fehlerzeichenfolge auf der AWS Glue-Konsole bestätigen, dass der Auftrag aufgrund von OOM-Ausnahmen fehlgeschlagen ist, wie im folgenden Bild gezeigt.

![\[Die Fehlermeldung auf der AWS Glue-Konsole.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-2-errorstring.png)


**Jobausgabeprotokolle:** Weitere Informationen zur Bestätigung Ihrer Feststellung einer Executor-OOM-Ausnahme finden Sie in den CloudWatch Protokollen. Wenn Sie nach **Error** suchen, finden Sie zuerst die vier Executors, die etwa in denselben Zeitfenstern beendet wurden, wie auf dem Metriken-Dashboard gezeigt. Alle werden von YARN beendet, wenn sie ihre Speicherlimits überschreiten.

Executor 1

```
18/06/13 16:54:29 WARN YarnAllocator: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:54:29 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:54:29 ERROR YarnClusterScheduler: Lost executor 1 on ip-10-1-2-175.ec2.internal: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:54:29 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, ip-10-1-2-175.ec2.internal, executor 1): ExecutorLostFailure (executor 1 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
```

Executor 2

```
18/06/13 16:55:35 WARN YarnAllocator: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:55:35 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:55:35 ERROR YarnClusterScheduler: Lost executor 2 on ip-10-1-2-16.ec2.internal: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:55:35 WARN TaskSetManager: Lost task 0.1 in stage 0.0 (TID 1, ip-10-1-2-16.ec2.internal, executor 2): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
```

Executor 3

```
18/06/13 16:56:37 WARN YarnAllocator: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:56:37 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:56:37 ERROR YarnClusterScheduler: Lost executor 3 on ip-10-1-2-189.ec2.internal: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:56:37 WARN TaskSetManager: Lost task 0.2 in stage 0.0 (TID 2, ip-10-1-2-189.ec2.internal, executor 3): ExecutorLostFailure (executor 3 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
```

Executor 4

```
18/06/13 16:57:18 WARN YarnAllocator: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:57:18 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:57:18 ERROR YarnClusterScheduler: Lost executor 4 on ip-10-1-2-96.ec2.internal: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
18/06/13 16:57:18 WARN TaskSetManager: Lost task 0.3 in stage 0.0 (TID 3, ip-10-1-2-96.ec2.internal, executor 4): ExecutorLostFailure (executor 4 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.5 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
```

### Korrigieren der Einstellung der Abrufgröße unter Verwendung dynamischer AWS Glue-Frames
<a name="monitor-debug-oom-fix-2"></a>

Der Executor hatte beim Lesen der JDBC-Tabelle keinen Speicher mehr zur Verfügung, da die Standardkonfiguration für die Spark JDBC-Abrufgröße Null ist. Dies bedeutet, dass der JDBC-Treiber auf dem Spark Executor versucht, die 34 Millionen Zeilen aus der Datenbank zusammen abzurufen und zwischenzuspeichern, obwohl Spark die Zeilen einzeln durchläuft. Mit Spark können Sie dieses Szenario zu vermeiden, indem Sie den Parameter für die Abrufgröße auf einen Standardwert ungleich Null setzen.

Sie können dieses Problem auch beheben, indem Sie stattdessen dynamische AWS Glue-Frames verwenden. Dynamische Frames verwenden standardmäßig eine Abrufgröße von 1.000 Zeilen. Dieser Wert ist in der Regel ausreichend. Dies bewirkt, dass der Executor nicht mehr als 7 Prozent des gesamten Speichers verbraucht. Der AWS Glue-Auftrag wird in weniger als zwei Minuten mit nur einem einzigen Executor ausgeführt. Dies wird während die Verwendung von dynamischen Frames von AWS Glue als Ansatz empfohlen. Es ist aber auch möglich, eine Abrufgröße mit der Apache-Spark-Eigenschaft `fetchsize` festzulegen. Weitere Informationen finden Sie im [Spark SQL DataFrames and Datasets Guide](https://spark.apache.org/docs/2.2.0/sql-programming-guide.html#jdbc-to-other-databases).

```
val (url, database, tableName) = {
 ("jdbc_url", "db_name", "table_name")
 } 
val source = glueContext.getSource(format, sourceJson)
val df = source.getDynamicFrame
glueContext.write_dynamic_frame.from_options(frame = df, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet", transformation_ctx = "datasink")
```

**Normal profilierte Metriken:** Der [Executor-Speicher](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.jvm.heap.usage) mit dynamischen AWS Glue-Frames übersteigt nie den sicheren Schwellenwert, wie in der folgenden Abbildung dargestellt. Er streamt die Zeilen aus der Datenbank und speichert jeweils nur 1.000 Zeilen im JDBC-Treiber. Es tritt keine Ausnahme aufgrund von Speichermangel auf.

![\[Die AWS Glue-Konsole zeigt, dass der Executor-Speicher unter der sicheren Schwelle liegt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-oom-2-memoryprofile-fixed.png)


# Debugging von anspruchsvolle Phasen und Straggler-Aufgaben
<a name="monitor-profile-debug-straggler"></a>

Mit dem AWS Glue-Aufgabenprofiling können Sie anspruchsvolle Phasen und Straggler-Aufgaben in Ihren ETL-Aufträgen (Extrahieren, Transformieren und Laden) identifizieren. Eine Straggler-Aufgabe dauert viel länger als der Rest der Aufgaben in einer Phase eines AWS Glue-Auftrags. Dies bewirkt, dass die Phase länger dauert, was auch die gesamte Ausführungszeit des Auftrags verzögert.

## Zusammenführung von kleinen Eingabedateien zu größeren Ausgabedateien
<a name="monitor-profile-debug-straggler-scenario-1"></a>

Eine Straggler-Aufgabe kann auftreten, wenn eine uneinheitliche Verteilung der Arbeit auf die verschiedenen Aufgaben gibt, oder wenn eine Datenverzerrung dazu führt, dass eine Aufgabe mehr Daten verarbeiten muss.

Sie können den folgenden Code profilieren (ein gemeinsames Muster in Apache Spark), um eine große Anzahl von kleinen Dateien zu größeren Ausgabedateien zusammenzuführen. In diesem Beispiel besteht das Eingabe-Dataset aus 32 GB mit Gzip komprimierten JSON-Dateien. Das Ausgabe-Dataset umfasst ca. 190 GB nicht komprimierte JSON-Dateien. 

Der profilierte Code sieht wie folgt aus:

```
datasource0 = spark.read.format("json").load("s3://input_path")
df = datasource0.coalesce(1)
df.write.format("json").save(output_path)
```

### Visualisieren der profilierten Metriken auf der AWS Glue-Konsole
<a name="monitor-debug-straggler-visualize"></a>

Sie können Ihren Auftrags profilieren, um vier verschiedene Metrik-Gruppen zu überprüfen:
+ ETL-Datenbewegung
+ Datenmischung über Executors hinweg
+ Auftragsausführung
+ Arbeitsspeicherprofil

**ETL-Datenbewegung**: Im Profil **ETL Data Movement (ETL-Datenbewegung)** werden die Bytes von allen Executors in der ersten Phase, die innerhalb der ersten sechs Minuten abgeschlossen wird, relativ schnell [gelesen](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.read_bytes). Die gesamte Auftragsausführung dauert jedoch etwa eine Stunde, vor allem durch die [Schreibvorgänge](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.write_bytes) für die Daten.

![\[Graph, der das Profil der ETL-Datenbewegung zeigt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-straggler-1.png)


**Datenmischung über Executors hinweg:** Die Anzahl der [gelesenen](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.shuffleLocalBytesRead) und [geschriebenen Bytes](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.shuffleBytesWritten) während des Mischens zeigt auch eine hohe Zahl, bevor Phase 2 endet, wie durch die Metriken **Job Execution (Auftragsausführung)** und **Data Shuffle (Datenmischung)** gezeigt. Nachdem die Daten aus allen Executors gemischt wurden, werden die Lese- und Schreiboperationen nur noch von Executor Nummer 3 ausgeführt.

![\[Die Metriken für das Mischen der Daten über alle Executors hinweg.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-straggler-2.png)


**Auftragsausführung:** Wie im folgenden Graphen gezeigt, sind alle anderen Executors im Leerlauf und werden schließlich zum Zeitpunkt 10:09 aufgegeben. Zu diesem Zeitpunkt verringert sich die Gesamtanzahl der Executors auf nur einen. Dies zeigt deutlich, dass der Executor Nummer 3 aus der Straggler-Aufgabe besteht, die die längste Ausführungszeit benötigt und zum größten Teil zur Auftragsausführungszeit beiträgt.

![\[Die Ausführungs-Metriken für die aktiven Executors.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-straggler-3.png)


**Speicherprofil:** Nachdem den ersten beiden Phasen verbraucht nur noch [Executor Nummer 3](monitoring-awsglue-with-cloudwatch-metrics.md#glue.executorId.jvm.heap.used) aktiv Arbeitsspeicher zur Verarbeitung der Daten. Die restlichen Executors sind einfach im Leerlauf oder wurden kurz nach Abschluss der ersten beiden Phasen aufgegeben. 

![\[Die Metriken für das Arbeitsspeicherprofil nach der ersten zwei Phasen.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-straggler-4.png)


### Beheben von Straggling-Executors unter Verwendung der Gruppierung
<a name="monitor-debug-straggler-fix"></a>

Mit der *Gruppierungsfeature* in AWS Glue können Sie Straggling-Executors vermeiden. Verwenden Sie die Gruppierung, um die Daten gleichmäßig auf alle Executors zu verteilen und Dateien zu größeren Dateien zusammenzufassen, indem Sie alle verfügbaren Executors auf dem Cluster verwenden. Weitere Informationen finden Sie unter [Zusammenfassen von Eingabedateien in größeren Gruppen beim Lesen](grouping-input-files.md).

Um die ETL-Datenbewegungen des AWS Glue-Auftrags zu überprüfen, müssen Sie den folgenden Code mit aktivierter Gruppierung profilieren:

```
df = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://input_path"], "recurse":True, 'groupFiles': 'inPartition'}, format="json")
datasink = glueContext.write_dynamic_frame.from_options(frame = df, connection_type = "s3", connection_options = {"path": output_path}, format = "json", transformation_ctx = "datasink4")
```

**ETL-Datenbewegung:** Die Datenschreibvorgänge werden nun parallel zu den Datenlesevorgängen während der gesamten Ausführungszeit des Auftrags gestreamt. Dies bewirkt, dass der Auftrag innerhalb von acht Minuten abgeschlossen wird, viel schneller als zuvor.

![\[Die ETL-Datenbewegungen zeigen, dass das Problem behoben ist.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-straggler-5.png)


**Datenmischung über Executors hinweg:** Da die Eingabedateien während des Lesens über die Gruppierungsfeature zusammengeführt werden, gibt es nach dem Lesen der Daten keine kostspielige Datenmischung.

![\[Die Metriken zur Datenmischung zeigen, dass das Problem behoben ist.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-straggler-6.png)


**Auftragsausführung:** Die Auftragsausführungsmetriken zeigen, dass die Gesamtanzahl der aktiven Executors, die ausgeführt werden und Daten verarbeiten, relativ konstant bleibt. Es gibt keine einzelnen Straggler in dem Auftrag. Alle Executors sind aktiv und werden nicht aufgegeben, bis zum der Auftrag abgeschlossen ist. Da es keine zwischenzeitliche Datenmischung zwischen den Executors gibt, gibt es nur eine einzige Phase in dem Auftrag.

![\[Das Widget mit den Metriken für die Auftragsausführung zeigt, dass keine Straggler im Auftrag vorhanden sind.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-straggler-7.png)


**Speicherprofil:** Die Metriken zeigen die [aktive Speicherbelegung](monitoring-awsglue-with-cloudwatch-metrics.md#glue.executorId.jvm.heap.used) für alle Executors – dies bestätigt, dass Aktivitäten auf allen Executors vorliegen. Da die Daten parallel gestreamt und ausgegeben werden, ist der gesamte Speicherbedarf aller Executors etwa gleich groß und liegt weit unter der sicheren Schwelle für alle Executors.

![\[Die Speicherprofilmetriken zeigen die aktive Speicherbelegung über alle Executors.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-straggler-8.png)


# Überwachen des Fortschritts mehrerer Aufträge
<a name="monitor-debug-multiple"></a>

Sie können mehrere AWS Glue Jobs zusammen profilieren und den Datenfluss zwischen ihnen überwachen. Dies ist ein gängiges Workflow-Muster und erfordert die Überwachung des Fortschritts einzelner Aufträge, des Datenverarbeitungsrückstands, der Datenwiederaufbereitung und der Auftragslesezeichen.

**Topics**
+ [Profilierter Code](#monitor-debug-multiple-profile)
+ [Visualisieren der profilierten Metriken auf der AWS Glue-Konsole](#monitor-debug-multiple-visualize)
+ [Korrektur der Dateiverarbeitung](#monitor-debug-multiple-fix)

## Profilierter Code
<a name="monitor-debug-multiple-profile"></a>

In diesem Workflow haben Sie zwei Aufträge: einen Eingangsauftrag und einen Ausgangsauftrag. Die Ausführung des Eingangsauftrags ist für alle 30 Minuten eingeplant, wofür ein regelmäßiger Auslöser verwendet wird. Die Ausführung des Ausgangsauftrags ist nach jeder erfolgreichen Ausführung des Eingangsauftrags eingeplant. Diese geplanten Aufträge werden unter Verwendung von Auftragsauslöser kontrolliert.

![\[Screenshot der Konsole mit den Auftragsauslösern, die die Einplanung von Eingangs- und Ausgangsaufträgen kontrollieren.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-multiple-1.png)


**Eingangsauftrag**: Dieser Auftrag liest Daten von einem Amazon Simple Storage Service (Amazon S3)-Speicherort, transformiert sie mit `ApplyMapping` und schreibt sie an einen Amazon-S3-Staging--Speicherort. Der folgende Code ist profilierter Code für den Eingangsauftrag:

```
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": ["s3://input_path"], "useS3ListImplementation":True,"recurse":True}, format="json")
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [map_spec])
datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": staging_path, "compression": "gzip"}, format = "json")
```

**Ausgangsauftrag**: Dieser Auftrag liest die Ausgabe des Eingangsauftrags vom Staging-Speicherort in Amazon S3, transformiert sie wieder und schreibt sie an ein Ziel:

```
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [staging_path], "useS3ListImplementation":True,"recurse":True}, format="json")
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [map_spec])
datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "json")
```

## Visualisieren der profilierten Metriken auf der AWS Glue-Konsole
<a name="monitor-debug-multiple-visualize"></a>

Das folgende Dashboard überlagert die geschriebenen Bytes der Amazon-S3-Metrik vom Eingangsauftrag mit den gelesenen Bytes der Amazon-S3-Metrik auf derselben Zeitachse für den Ausgangsauftrag. Die Zeitachse zeigt verschiedenen Auftragsausführungen der Eingangs- und Ausgangsaufträge. Der Eingangsauftrag (rot markiert) startet alle 30 Minuten. Der Ausgangsauftrag (braun dargestellt) beginnt bei Abschluss des Eingangsauftrags mit einer maximalen Nebenläufigkeit von 1. 

![\[Graph, der die gelesenen und geschriebenen Daten zeigt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-multiple-4.png)


In diesem Beispiel sind die [Auftragslesezeichen](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuations.html) nicht aktiviert. Es werden keine Transformationskontexte verwendet, um Auftragslesezeichen im Skriptcode zu aktivieren. 

**Job History (Auftragsverlauf)**: Die Eingangs- und Ausgangsaufträge haben mehrere Ausführungen, wie auf der Registerkarte **History (Verlauf)** gezeigt, beginnend um 12:00 PM.

Der Eingangsauftrag in der AWS Glue-Konsole sieht wie folgt aus:

![\[Screenshot der Konsole mit der Registerkarte History (Verlauf) des Eingangsauftrags.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-multiple-2.png)


Das folgende Bild zeigt den Ausgangsauftrag:

![\[Screenshot der Konsole mit der Registerkarte History (Verlauf) des Ausgangsauftrags.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-multiple-3.png)


**First job runs (Erste Auftragsausführungen)**: Wie im folgenden Graphen für gelesene und geschriebene Datenbytes dargestellt, zeigen die ersten Auftragsausführungen der Eingangs- und Ausgangsaufträge zwischen 12:00 und 12:30 Uhr ungefähr die gleiche Fläche unter den Kurven. Diese Flächen stellen die vom Eingangsauftrag geschriebenen Amazon-S3-Bytes und die vom Ausgangsauftrag gelesenen Amazon-S3-Bytes dar. Diese Daten werden auch durch das Verhältnis von geschriebenen Amazon-S3-Bytes (summiert über 30 Minuten – die Auftragsauslösefrequenz für den Eingangsauftrag) bestätigt. Der Datenpunkt für das Verhältnis für die Eingangsauftragsausführung, die um 12:00 Uhr PM gestartet wurde, ist ebenfalls 1.

Der folgende Graph zeigt das Datenflussverhältnis für alle Auftragsausführungen:

![\[Graph, der das Datenflussverhältnis zeigt: geschriebenen Bytes und gelesene Bytes.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-multiple-5.png)


**Second job runs (Zweite Auftragsausführungen)**: In der zweiten Auftragsausführung gibt es eine klare Differenz zwischen der Anzahl der vom Ausgangsauftrag gelesenen Bytes im Vergleich zu der Anzahl der vom Eingangsauftrag geschriebenen Bytes. (Vergleichen Sie die Fläche unter der Kurve der beiden Auftragsausführungen für den Ausgangsauftrag oder vergleichen Sie die Flächen der zweiten Ausführung der Eingangs- und Ausgangsaufträge.) Das Verhältnis der gelesenen und geschriebenen Bytes zeigt, dass der Ausgangsauftrag in der zweiten Spanne von 30 Minuten von 12:30 bis 13:00 Uhr etwa die 2,5-fache Menge der vom Eingangsauftrag geschriebenen Daten gelesen hat. Der Grund hierfür ist, dass der Ausgangsauftrag die Ausgabe der ersten Auftragsausführung des Eingangsauftrags erneut verarbeitet hat, weil keine Auftragslesezeichen aktiviert waren. Ein Verhältnis von über 1 zeigt, dass es einen zusätzlichen Rückstand an Daten gibt, die von dem Ausgangsauftrag verarbeitet wurde.

**Third job runs (Dritte Auftragsausführungen)**: Der Eingangsauftrag ist relativ konsistent in Bezug auf die Anzahl der geschriebenen Bytes (siehe Fläche unter der roten Kurven). Die dritte Auftragsausführung des Eingangsauftrags ist jedoch länger gelaufen als erwartet (siehe langer Auslauf der roten Kurve). Dies hat zur Folge, dass die dritte Auftragsausführung des Ausgangsauftrags zu spät gestartet wurde. Die dritte Auftragsausführung verarbeitet nur ein Bruchteil der akkumulierten Daten am Staging-Speicherort in den verbleibenden 30 Minuten zwischen 13:00 und 13:30 Uhr. Das Verhältnis des Bytestroms zeigt, dass sie nur 0,83 der von der dritten Auftragsausführung des Eingabeauftrags geschriebenen Daten verarbeitet hat (siehe Verhältnis um 13.00 Uhr).

**Overlap of Input and Output jobs (Überlappende Eingangs- und Ausgangsaufträge)**: Die vierte Auftragsausführung des Eingangsauftrags startete um 13:30 gemäß den Zeitplan, bevor die dritte Auftragsausführung des Ausgangsauftrags abgeschlossen wurde. Es gibt eine partielle Überschneidung zwischen diesen beiden Auftragsausführungen. Die dritte Auftragsausführung des Ausgangsauftrags erfasst nur die Dateien, die am Staging-Speicherort von Amazon S3 aufgelistet sind, als sie etwa um 13:17 Uhr begonnen hat. Dies umfasst alle Datenausgaben aus den ersten Auftragsausführungen des Eingangsauftrags. Das tatsächliche Verhältnis um 13:30 ist etwa 2,75. Die dritte Auftragsausführung des Ausgangsauftrags hat etwa das 2,75-fache der von der vierten Auftragsausführung von 13:30 bis 14:00 Uhr geschriebenen Daten verarbeitet.

Wie diese Bilder zeigen, verarbeitet der Ausgangsauftrag Daten vom Staging-Standort aus allen vorherigen Auftragsausführungen des Eingangsauftrags erneut. Dies hat zur Folge, dass die vierte Auftragsausführung für den Ausgangsauftrag die längste ist und sich mit der gesamten fünften Auftragsausführung des Eingangsauftrags überlappt.

## Korrektur der Dateiverarbeitung
<a name="monitor-debug-multiple-fix"></a>

Sie sollten sicherstellen, dass der Ausgangsauftrag nur die Dateien verarbeitet, die von den vorherigen Auftragsausführungen des Ausgangsauftrags nicht verarbeitet wurden. Dazu aktivieren Sie die Auftragslesezeichen und legen Sie den Transformationskontext im Ausgangsauftrag wie folgt fest:

```
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [staging_path], "useS3ListImplementation":True,"recurse":True}, format="json", transformation_ctx = "bookmark_ctx")
```

Bei aktivierten Auftragslesezeichen verarbeitet der Ausgangsauftrag die Daten am Staging-Speicherort aus allen vorherigen Auftragsausführungen des Eingangsauftrags nicht erneut. In der folgenden Abbildung mit den gelesenen und geschriebenen Daten ist die Fläche unter der braunen Kurve relativ konsistent und ähnlich den roten Kurven. 

![\[Graph, der die gelesenen und geschriebenen Daten als rote und braune Linien zeigt.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-multiple-6.png)


Auch die Verhältnisse des Byteflusses bleiben etwa bei 1, da keine zusätzlichen Daten verarbeitet werden.

![\[Graph, der das Datenflussverhältnis zeigt: geschriebenen Bytes und gelesene Bytes\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-multiple-7.png)


Eine Auftragsausführung für den Ausgangsauftrag startet und erfasst die Dateien am Staging-Speicherort, bevor die nächste Eingangsauftragsausführung gestartet wird, womit weitere Daten am Staging-Standort abgelegt werden. Solange dies fortgesetzt wird, verarbeitet sie nur die Dateien, die von der vorherigen Eingangsauftragsausführung erfasst wurden, und das Verhältnis bleibt etwa 1.

![\[Graph, der das Datenflussverhältnis zeigt: geschriebenen Bytes und gelesene Bytes\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-multiple-7.png)


Angenommen, der Eingangsauftrag dauert länger als erwartet, und der Ausgangsauftrag erfasst aus diesem Grund Dateien am Staging-Standort von zwei Eingangsauftragsausführungen. Das Verhältnis wird dann höher als 1 für diese Ausgangsauftragausführung. Die folgenden Auftragsausführungen des Ausgangsauftrags verarbeiten jedoch keine Dateien, die bereits von den vorherigen Auftragsausführungen des Ausgangsauftrags verarbeitet wurden.

# Überwachung für die DPU-Kapazitätsplanung
<a name="monitor-debug-capacity"></a>

Sie können Job-Metriken verwenden AWS Glue , um die Anzahl der Datenverarbeitungseinheiten (DPUs) zu schätzen, die zur Skalierung eines AWS Glue Jobs verwendet werden können.

**Anmerkung**  
Diese Seite trifft nur auf AWS Glue-Versionen 0.9 und 1.0 zu. Spätere Versionen von AWS Glue enthalten Funktionen zur Kosteneinsparung, die zusätzliche Überlegungen bei der Kapazitätsplanung mit sich bringen. 

**Topics**
+ [Profilierter Code](#monitor-debug-capacity-profile)
+ [Visualisieren der profilierten Metriken auf der AWS Glue-Konsole](#monitor-debug-capacity-visualize)
+ [Bestimmen der optimalen DPU-Kapazität](#monitor-debug-capacity-fix)

## Profilierter Code
<a name="monitor-debug-capacity-profile"></a>

Das folgende Skript liest eine Amazon Simple Storage Service (Amazon S3)-Partition mit 428 gezippten JSON-Dateien. Das Skript wendet ein Mapping an, um die Feldnamen zu ändern, und konvertiert und schreibt sie in Amazon S3 im Apache-Parquet-Format. Sie stellen 10 DPUs standardmäßig bereit und führen diesen Job aus. 

```
datasource0 = glueContext.create_dynamic_frame.from_options(connection_type="s3", connection_options = {"paths": [input_path], "useS3ListImplementation":True,"recurse":True}, format="json")
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(map_spec])
datasink2 = glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": output_path}, format = "parquet")
```

## Visualisieren der profilierten Metriken auf der AWS Glue-Konsole
<a name="monitor-debug-capacity-visualize"></a>

**Job-Run 1:** In diesem Job-Run zeigen wir, wie Sie herausfinden können, ob DPUs im Cluster zu wenig Provisioning vorhanden ist. Die Auftragsausführungsfunktionalität in AWS Glue zeigt die [Gesamtzahl der aktiven Executors](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberAllExecutors), die [Anzahl der abgeschlossenen Phasen](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.aggregate.numCompletedStages) und die [Anzahl der maximal benötigten Executors](monitoring-awsglue-with-cloudwatch-metrics.md#glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors).

Die Anzahl der maximal benötigten Executors wird berechnet, indem die Gesamtzahl der laufenden Aufgaben und anstehenden Aufgaben addiert und durch die Aufgaben pro Executor dividiert wird. Dieses Ergebnis ist ein Maß für die Gesamtanzahl der Executors, die erforderlich sind, um die aktuelle Last zu erfüllen. 

Im Gegensatz dazu misst die Anzahl der aktiven Executors, wie viele aktive Apache-Spark-Aufgaben ausgeführt werden. Im weiteren Verlauf des Auftrags können sich die maximal benötigten Executors ändern und gehen in der Regel gegen Ende des Auftrags zurück, da die Warteschlange der anstehenden Aufgaben abnimmt.

Die horizontale rote Linie in der folgenden Grafik zeigt die Anzahl der maximal zugewiesenen Executoren, die von der Anzahl der Executoren abhängt, DPUs die Sie dem Job zuweisen. In diesem Fall weisen Sie dem ausgeführten Job 10 DPUs zu. Eine DPU ist für die Verwaltung reserviert. Neun DPUs führen jeweils zwei Executors aus und ein Executor ist für den Spark-Treiber reserviert. Der Spark-Treiber wird in der primären Anwendung ausgeführt. Die Anzahl der maximalen zugewiesenen Executors ist also 2\$1 9 – 1 = 17 Executors.

![\[Die Auftragsmetriken, die die aktiven Executors und die maximal benötigten Executors zeigen.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-capacity-1.png)


Wie der Graph zeigt, beginnt die Anzahl der maximal benötigten Executors bei 107 zu Beginn des Auftrags, während die Anzahl der aktiven Executors bei 17 bleibt. Dies entspricht der Anzahl der maximal zugewiesenen Executoren mit 10. DPUs Das Verhältnis zwischen den maximal benötigten Executors und den maximal zugewiesenen Executors (zu beiden wird für den Spark-Treiber 1 addiert) ergibt den Faktor für die zu niedrig ausgelegte Bereitstellung: 108/18 = 6x. Sie können 6 (unter dem Provisioning Ratio) \$19 (aktuelle DPU-Kapazität — 1) \$1 1 DPUs = 55 bereitstellen, um den Job so DPUs zu skalieren, dass er mit maximaler Parallelität ausgeführt und schneller abgeschlossen wird. 

Die AWS Glue -Konsole zeigt die detaillierten Auftragsmetriken als statische Linie an, die die ursprüngliche Anzahl der maximal zugeteilten Executors darstellt. Die Konsole berechnet die maximal zugeteilten Executors aus der Auftragsdefinition für die Metriken. Im Gegensatz dazu berechnet die Konsole für detaillierte Messwerte zur Auftragsausführung die maximal zugewiesenen Executoren aus der Job-Run-Konfiguration, insbesondere die für die Job-Ausführung zugewiesenen. DPUs Um Metriken für eine einzelne Auftragsausführung anzuzeigen, wählen Sie die Auftragsausführung und anschließend **View run metrics (Ausführungsmetriken anzeigen)** aus.

![\[Die Auftragsmetriken, die die ETL-Datenbewegung zeigen.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-capacity-2.png)


Bei der Betrachtung der [gelesenen](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.read_bytes) und [geschriebenen](monitoring-awsglue-with-cloudwatch-metrics.md#glue.ALL.s3.filesystem.write_bytes) Amazon-S3-Bytes erkennen Sie, dass der Auftrag alle sechs Minuten parallel Daten aus Amazon S3 streamt und schreibt. Alle Kerne auf den zugewiesenen DPUs Kernen lesen und schreiben in Amazon S3. Die maximale Anzahl an benötigten Executors von 107 entspricht auch der Anzahl der Dateien im Amazon-S3-Eingangspfad 428. Jeder Executor können vier Spark-Aufgaben zur Verarbeitung von vier Eingangsdateien (gezippte JSON-Dateien) starten.

## Bestimmen der optimalen DPU-Kapazität
<a name="monitor-debug-capacity-fix"></a>

Basierend auf den Ergebnissen der vorherigen Auftragsausführung können Sie die Gesamtzahl der zugewiesenen Aufgaben DPUs auf 55 erhöhen und so die Leistung des Auftrags überprüfen. Der Auftrag wird in weniger als drei Minuten abgeschlossen – der Hälfte der Zeit, die zuvor erforderlich war. Die Auftragsskalierung erfolgt in diesem Fall nicht linear, da es sich um einen kurzen Auftrag handelt.. Jobs mit langlebigen Aufgaben oder einer großen Anzahl von Aufgaben (eine große Anzahl von maximal benötigten Executoren) profitieren von einer close-to-linear DPU-Scale-Out-Leistungssteigerung.

![\[Grafik, die die Zunahme der Gesamtzahl der zugewiesenen Aufgaben zeigt DPUs\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-capacity-3.png)


Wie die folgende Abbildung zeigt, erreicht die Gesamtzahl der aktiven Executors die maximale Anzahl zugewiesener Executors107. Ebenso liegt die maximale Anzahl benötigter Executors nie über den maximal zugewiesenen Executors. Die maximale Anzahl erforderlicher Executors wird anhand der Anzahl der aktiven und ausstehenden Aufgaben berechnet, sie könnte also kleiner sein als die Anzahl der aktiven Executors. Dies liegt daran, dass es Executors geben kann, die für einen kurzen Zeitraum teilweise oder vollständig im Leerlauf sind und noch nicht außer Betrieb genommen wurden.

![\[Graph, der die Gesamtzahl aktiver Executors zeigt, die die maximal zugewiesene Anzahl erreicht.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-capacity-4.png)


Dieser Auftrag nutzt sechsmal mehr Executors für parallele Lese- und Schreibvorgänge in Amazon S3. Dies hat zur Folge, dass diese Auftragsausführung mehr Amazon-S3-Bandbreite für Lese- und Schreibvorgänge verwendet und schneller fertiggestellt wird. 

### Identifizieren Sie übermäßig bereitgestellte DPUs
<a name="monitor-debug-capacity-over"></a>

Als Nächstes können Sie feststellen, ob eine weitere Skalierung des Jobs mit 100 DPUs (99 \$1 2 = 198 Executoren) hilfreich ist. Wie der folgende Graph zeigt, dauert die Fertigstellung des Auftrags immer noch drei Minuten. Ebenso kann der Job nicht über 107 Executoren ( DPUsKonfiguration 55) hinaus skaliert werden, und die verbleibenden 91 Executoren sind überprovisioniert und werden überhaupt nicht verwendet. Dies zeigt, dass eine Erhöhung der Anzahl von Executoren DPUs möglicherweise nicht immer zu einer Verbesserung der Leistung führt, wie anhand der maximal benötigten Anzahl von Executoren deutlich wird.

![\[Aus der Grafik geht hervor, dass die Arbeitsleistung nicht immer steigt, wenn die Anzahl der DPUs\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/monitor-debug-capacity-5.png)


### Vergleich von Zeitunterschieden
<a name="monitor-debug-capacity-time"></a>

Die drei in der folgenden Tabelle aufgeführten Auftragsausführungen fassen die Ausführungszeiten für 10 DPUs DPUs, 55 und 100 DPUs Jobs zusammen. Sie finden die DPU-Kapazität zur Verbesserung der Auftragsausführungszeit unter Verwendung der Schätzungen, die Sie bei der Überwachung der ersten Auftragsausführung eingerichtet haben.


| Auftrags-ID | Anzahl der DPUs | Execution time (Ausführungszeit) | 
| --- | --- | --- | 
| jr\$1c894524c8ef5048a4d9... | 10 | 6 Minuten | 
| jr\$11a466cf2575e7ffe6856... | 55 | 3 Minuten | 
| jr\$134fa1ed4c6aa9ff0a814... | 100 | 3 Minuten | 

# Generative KI-Fehlerbehebung für Apache Spark in AWS Glue
<a name="troubleshoot-spark"></a>

 Generative KI-Fehlerbehebung für Apache Spark-Jobs in AWS Glue ist eine neue Funktion, mit der Dateningenieure und Wissenschaftler Probleme in ihren Spark-Anwendungen mühelos diagnostizieren und beheben können. Mithilfe von Machine Learning und Technologien für generative KI analysiert dieses Feature Probleme in Spark-Aufträgen und bietet eine detaillierte Ursachenanalyse sowie umsetzbare Empfehlungen zur Lösung dieser Probleme. Die generative KI-Fehlerbehebung für Apache Spark ist für Jobs verfügbar, die auf AWS Glue Version 4.0 und höher ausgeführt werden. 


|  | 
| --- |
|  Transformieren Sie Ihre Apache Spark-Fehlerbehebung mit unserem KI-gestützten Troubleshooting-Agenten, der jetzt alle wichtigen Bereitstellungsmodi unterstützt, darunter AWS Glue, Amazon EMR-EC2, Amazon EMR-Serverless und Amazon AI Notebooks. SageMaker Dieser leistungsstarke Agent macht komplexe Debugging-Prozesse überflüssig, indem er Interaktionen in natürlicher Sprache, Workload-Analysen in Echtzeit und intelligente Codeempfehlungen zu einem nahtlosen Erlebnis kombiniert. Einzelheiten zur Implementierung finden Sie unter [Was ist der Apache Spark Troubleshooting Agent for Amazon EMR.](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/spark-troubleshoot.html) Sehen Sie sich die zweite Demonstration unter Beispiele [zur Fehlerbehebung mit dem Troubleshooting-Agenten](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/spark-troubleshooting-using-troubleshooting-agent.html) für AWS Glue an.  | 

## Wie funktioniert die Fehlerbehebung mit generativer KI für Apache Spark?
<a name="troubleshoot-spark-how-it-works"></a>

 Für Ihre fehlgeschlagenen Spark-Jobs analysiert Generative AI Troubleshooting die Job-Metadaten und die genauen Metriken und Protokolle, die mit der Fehlersignatur Ihres Jobs verknüpft sind, um eine Ursachenanalyse zu erstellen, und empfiehlt spezifische Lösungen und bewährte Methoden zur Behebung von Jobfehlern. 

## Einrichten der Fehlerbehebung mit generativer KI für Apache Spark für Ihre Aufträge
<a name="w2aac37c11c12c33c13"></a>

### Konfigurieren von IAM-Berechtigungen
<a name="troubleshoot-spark-iam-permissions"></a>

 Um Benutzern, die von Spark Troubleshooting für Ihre Jobs in AWS Glue APIs verwendet werden, Berechtigungen zu gewähren, sind entsprechende IAM-Berechtigungen erforderlich. Sie können Berechtigungen erhalten, indem Sie Ihrer IAM-Identität (z. B. einem Benutzer, einer Rolle oder einer Gruppe) die folgende benutzerdefinierte AWS Richtlinie zuordnen. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:StartCompletion",
        "glue:GetCompletion"
      ],
      "Resource": [
        "arn:aws:glue:*:*:completion/*",
        "arn:aws:glue:*:*:job/*"
      ]
    }
  ]
}
```

------

**Anmerkung**  
 Die folgenden beiden APIs werden in der IAM-Richtlinie verwendet, um diese Erfahrung über die AWS Glue Studio-Konsole zu aktivieren: `StartCompletion` und`GetCompletion`. 

### Zuweisen von Berechtigungen
<a name="troubleshoot-spark-assigning-permissions"></a>

 Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu: 
+  Für Benutzer und Gruppen in IAM Identity Center: Erstellen Sie einen Berechtigungssatz. Befolgen Sie die Anweisungen unter [Erstellen eines Berechtigungssatzes](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) im IAM-Identity-Center-Benutzerhandbuch. 
+  Für Benutzer, die in IAM über einen Identitätsanbieter verwaltet werden: Erstellen Sie eine Rolle für den Identitätsverbund. Befolgen Sie die Anweisungen unter [Erstellen einer Rolle für einen externen Identitätsanbieter (Verbund)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html) im IAM-Benutzerhandbuch. 
+  Für IAM-Benutzer: Erstellen Sie eine Rolle, die Ihr Benutzer annehmen kann. Folgen Sie den Anweisungen unter [Erstellen einer Rolle für einen IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) im IAM-Benutzerhandbuch. 

## Durchführen einer Fehlerbehebungsanalyse von einer fehlgeschlagenen Auftragsausführung
<a name="troubleshoot-spark-run-analysis"></a>

 Sie können über mehrere Pfade in der AWS Glue-Konsole auf die Fehlerbehebungsfunktion zugreifen. So machen Sie die ersten Schritte: 

### Option 1: Von der Seite mit der Auftragsliste
<a name="troubleshoot-spark-from-jobs-list"></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 die Option **ETL-Aufträge** aus. 

1.  Suchen Sie Ihren fehlgeschlagenen Auftrag in der Auftragsliste. 

1.  Wählen Sie die Registerkarte **Ausführungen** im Abschnitt mit den Auftragsdetails. 

1.  Klicken Sie auf die fehlgeschlagene Auftragsausführung, die Sie analysieren möchten. 

1.  Wählen Sie **Fehlerbehebung mit KI** aus, um die Analyse zu starten. 

1.  Wenn die Analyse zur Fehlerbehebung abgeschlossen ist, können Sie die Ursachenanalyse und die Empfehlungen auf der Registerkarte **Fehlerbehebungsanalyse** am unteren Bildschirmrand anzeigen. 

![\[Das GIF stellt die durchgängige Implementierung einer fehlgeschlagenen Ausführung mit ausgeführtem KI-Feature dar.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/troubleshoot_spark_option_1_jobs_list.gif)


### Option 2: Verwenden der Seite „Überwachung der Auftragsausführung“
<a name="troubleshoot-spark-job-run-monitoring-page"></a>

1.  Navigieren Sie zur Seite zur **Überwachung der Auftragsausführung**. 

1.  Suchen Sie nach der fehlgeschlagenen Auftragsausführung. 

1.  Wählen Sie die Dropdown-Liste **Aktionen** aus. 

1.  Wählen Sie **Problembehandlung mit KI** aus. 

![\[Das GIF stellt die durchgängige Implementierung einer fehlgeschlagenen Ausführung mit ausgeführtem KI-Feature dar.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/troubleshoot_spark_option_2_job_monitoring.gif)


### Option 3: Von der Seite mit den Details der Auftragsausführung
<a name="troubleshoot-spark-job-run-details-page"></a>

1.  Navigieren Sie zur Detailseite der fehlgeschlagenen Auftragsausführung, indem Sie entweder auf der Registerkarte **Ausführungen** auf **Details anzeigen** zu einer fehlgeschlagenen Ausführung klicken oder die Auftragsausführung auf der Seite **Überwachung der Auftragsausführung** auswählen. 

1.  Suchen Sie auf der Seite mit den Details der Auftragsausführung die Registerkarte **Fehlerbehebungsanalyse**. 

## Unterstützte Kategorien zur Fehlerbehebung
<a name="troubleshoot-spark-supported-troubleshooting-categories"></a>

 Dieser Service konzentriert sich auf drei Hauptkategorien von Problemen, auf die Dateningenieure und Entwickler in ihren Spark-Anwendungen häufig stoßen: 
+  **Fehler bei der Einrichtung und beim Zugriff auf Ressourcen:** Beim Ausführen von Spark-Anwendungen in AWS Glue gehören Fehler bei der Einrichtung und beim Zugriff auf Ressourcen zu den häufigsten, aber schwierig zu diagnostizierenden Problemen. Diese Fehler treten häufig auf, wenn Ihre Spark-Anwendung versucht, mit AWS Ressourcen zu interagieren, aber auf Berechtigungsprobleme, fehlende Ressourcen oder Konfigurationsprobleme stößt. 
+  **Speicherprobleme mit Spark-Treibern und -Executors:** Speicherbezogene Fehler in Apache-Spark-Aufträgen können komplex zu diagnostizieren und zu beheben sein. Diese Fehler treten häufig auf, wenn Ihre Datenverarbeitungsanforderungen die verfügbaren Speicherressourcen überschreiten, entweder im Treiberknoten oder in den Executor-Knoten. 
+  **Probleme mit der Spark-Festplattenkapazität:** Speicherbedingte Fehler in AWS Glue Spark-Jobs treten häufig bei Shuffle-Vorgängen, beim Verschütten von Daten oder bei umfangreichen Datentransformationen auf. Diese Fehler können besonders problematisch sein, weil sie möglicherweise erst auftreten, wenn Ihr Auftrag eine Weile ausgeführt wurde, wodurch möglicherweise wertvolle Rechenzeit und Ressourcen verschwendet werden. 
+  **Fehler bei der Ausführung von Abfragen:** Abfragefehler in Spark SQL und DataFrame Vorgängen können schwierig zu beheben sein, da Fehlermeldungen möglicherweise nicht eindeutig auf die Ursache hinweisen und Abfragen, die mit kleinen Datensätzen einwandfrei funktionieren, plötzlich in großem Umfang fehlschlagen können. Diese Fehler werden noch schwieriger, wenn sie tief in komplexen Transformationspipelines auftreten, wo das eigentliche Problem eher auf Datenqualitätsprobleme in früheren Phasen als auf die Abfragelogik selbst zurückzuführen sein kann. 

**Anmerkung**  
 Bevor Sie vorgeschlagene Änderungen in Ihrer Produktionsumgebung implementieren, sollten Sie die vorgeschlagenen Änderungen sorgfältig prüfen. Der Service bietet Empfehlungen, die auf Mustern und bewährten Methoden basieren. Ihr spezieller Anwendungsfall erfordert jedoch möglicherweise zusätzliche Überlegungen. 

## Unterstützte -Regionen
<a name="troubleshoot-spark-supported-regions"></a>

Generative KI-Fehlerbehebung für Apache Spark ist in den folgenden Regionen verfügbar:
+ **Afrika**: Kapstadt (af-south-1)
+ **Asien-Pazifik**: Hongkong (ap-east-1), Tokio (ap-northeast-1), Seoul (ap-northeast-2), Osaka (ap-northeast-3), Mumbai (ap-south-1), Singapur (ap-southeast-1), Sydney (ap-southeast-2) und Jakarta (ap-southeast-3)
+ **Europa**: Frankfurt (eu-central-1), Stockholm (eu-nord-1), Mailand (eu-south-1), Irland (eu-west-1), London (eu-west-2) und Paris (eu-west-3)
+ **Naher Osten**: Bahrain (me-south-1) und VAE (me-central-1)
+ **Nordamerika**: Kanada (ca-central-1)
+ **Südamerika**: São Paulo (sa-east-1)
+ **Vereinigte Staaten**: Nord-Virginia (us-east-1), Ohio (us-east-2), Nordkalifornien (US-West-1) und Oregon (US-West-2)

# Materialisierte Ansichten mit AWS Glue verwenden
<a name="materialized-views"></a>

AWS Glue Version 5.1 und höher unterstützt die Erstellung und Verwaltung materialisierter Apache Iceberg-Ansichten im AWS Glue-Datenkatalog. Eine materialisierte Ansicht ist eine verwaltete Tabelle, die das vorberechnete Ergebnis einer SQL-Abfrage im Apache Iceberg-Format speichert und schrittweise aktualisiert wird, wenn sich die zugrunde liegenden Quelltabellen ändern. Sie können materialisierte Ansichten verwenden, um Pipelines zur Datentransformation zu vereinfachen und die Abfrageleistung für komplexe analytische Workloads zu beschleunigen.

Wenn Sie mit Spark in AWS Glue eine materialisierte Ansicht erstellen, werden die Ansichtsdefinition und die Metadaten im AWS Glue-Datenkatalog gespeichert. Die vorberechneten Ergebnisse werden als Apache Iceberg-Tabellen in Amazon S3 S3-Tabelles-Buckets oder Amazon S3 S3-Allzweck-Buckets in Ihrem Konto gespeichert. Der AWS Glue-Datenkatalog überwacht automatisch Quelltabellen und aktualisiert materialisierte Ansichten mithilfe einer verwalteten Recheninfrastruktur.

**Topics**
+ [So funktionieren materialisierte Ansichten mit Glue AWS](#materialized-views-how-they-work)
+ [Voraussetzungen](#materialized-views-prerequisites)
+ [Konfiguration von Spark für die Verwendung materialisierter Ansichten](#materialized-views-configuring-spark)
+ [Erstellen von materialisierten Ansichten](#materialized-views-creating)
+ [Abfragen materialisierter Ansichten](#materialized-views-querying)
+ [Aktualisieren materialisierter Ansichten](#materialized-views-refreshing)
+ [Materialisierte Ansichten verwalten](#materialized-views-managing)
+ [Berechtigungen für materialisierte Ansichten](#materialized-views-permissions)
+ [Überwachung von Materialized View-Vorgängen](#materialized-views-monitoring)
+ [Beispiel: Vollständiger Workflow](#materialized-views-complete-workflow)
+ [Überlegungen und Einschränkungen](#materialized-views-considerations-limitations)

## So funktionieren materialisierte Ansichten mit Glue AWS
<a name="materialized-views-how-they-work"></a>

Materialisierte Ansichten lassen sich über die Iceberg-Unterstützung von Apache Spark in AWS Glue-Jobs und AWS Glue Studio-Notebooks in AWS Glue integrieren. Wenn Sie Ihre Spark-Sitzung für die Verwendung des AWS Glue-Datenkatalogs konfigurieren, können Sie materialisierte Ansichten mithilfe der Standard-SQL-Syntax erstellen. Der Spark-Optimierer kann Abfragen automatisch so umschreiben, dass sie materialisierte Ansichten verwenden, wenn sie eine bessere Leistung bieten, sodass der Anwendungscode nicht manuell geändert werden muss.

Der AWS Glue-Datenkatalog behandelt alle betrieblichen Aspekte der Wartung von Materialized Views, einschließlich:
+ Erkennung von Änderungen in Quelltabellen mithilfe der Metadatenebene von Apache Iceberg
+ Planung und Ausführung von Aktualisierungsvorgängen mithilfe von Managed Spark Compute
+ Feststellen, ob eine vollständige oder eine inkrementelle Aktualisierung auf der Grundlage der Datenänderungen durchgeführt werden soll
+ Speichern vorberechneter Ergebnisse im Apache Iceberg-Format für den Zugriff mit mehreren Engines

Sie können materialisierte Ansichten von AWS Glue mit denselben Spark-SQL-Schnittstellen abfragen, die Sie für normale Tabellen verwenden. Auf die vorberechneten Daten kann auch von anderen Diensten wie Amazon Athena und Amazon Redshift aus zugegriffen werden.

## Voraussetzungen
<a name="materialized-views-prerequisites"></a>

Um materialisierte Ansichten mit AWS Glue zu verwenden, benötigen Sie:
+ Ein -Konto
+ AWS Glue Version 5.1 oder höher
+ Quelltabellen im Apache Iceberg-Format, registriert im AWS Glue Data Catalog
+ AWS Lake Formation für Quelltabellen und Zieldatenbanken konfigurierte Berechtigungen
+ Ein S3-Tabelles-Bucket oder ein S3-Allzweck-Bucket, bei dem AWS Lake Formation zum Speichern von Materialized View-Daten registriert ist
+ Eine IAM-Rolle mit Berechtigungen für den Zugriff auf AWS Glue Data Catalog und Amazon S3

## Konfiguration von Spark für die Verwendung materialisierter Ansichten
<a name="materialized-views-configuring-spark"></a>

Um materialisierte Ansichten in AWS Glue zu erstellen und zu verwalten, konfigurieren Sie Ihre Spark-Sitzung mit den erforderlichen Iceberg-Erweiterungen und Katalogeinstellungen. Die Konfigurationsmethode hängt davon ab, ob Sie Glue-Jobs oder AWS AWS Glue Studio-Notizbücher verwenden.

### Konfiguration von AWS Glue-Jobs
<a name="materialized-views-configuring-glue-jobs"></a>

Wenn Sie einen AWS Glue-Job erstellen oder aktualisieren, fügen Sie die folgenden Konfigurationsparameter als Job-Parameter hinzu:

#### Für S3-Tabellen-Buckets
<a name="materialized-views-s3-tables-buckets"></a>

```
job = glue.create_job(
    Name='materialized-view-job',
    Role='arn:aws:iam::111122223333:role/GlueServiceRole',
    Command={
        'Name': 'glueetl',
        'ScriptLocation': 's3://amzn-s3-demo-bucket/scripts/mv-script.py',
        'PythonVersion': '3'
    },
    DefaultArguments={
        '--enable-glue-datacatalog': 'true',
        '--conf': 'spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions '
        '--conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog '
                  '--conf spark.sql.catalog.glue_catalog.type=glue '
                  '--conf spark.sql.catalog.glue_catalog.warehouse=s3://amzn-s3-demo-bucket/warehouse '
                  '--conf spark.sql.catalog.glue_catalog.glue.region=us-east-1 '
                  '--conf spark.sql.catalog.glue_catalog.glue.id=111122223333 '
                  '--conf spark.sql.catalog.glue_catalog.glue.account-id=111122223333 ',
                  '--conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true ',
                  '--conf spark.sql.catalog.s3t_catalog=org.apache.iceberg.spark.SparkCatalog '
                  '--conf spark.sql.catalog.s3t_catalog.type=glue '
                  '--conf spark.sql.catalog.s3t_catalog.glue.id=111122223333:s3tablescatalog/my-table-bucket ',
                  '--conf spark.sql.catalog.s3t_catalog.glue.account-id=111122223333 ',
                  '--conf spark.sql.catalog.s3t_catalog.glue.lakeformation-enabled=true ',
                  '--conf spark.sql.catalog.s3t_catalog.warehouse=s3://amzn-s3-demo-bucket/mv-warehouse '
                  '--conf spark.sql.catalog.s3t_catalog.glue.region=us-east-1 '
                  '--conf spark.sql.defaultCatalog=s3t_catalog '
                  '--conf spark.sql.optimizer.answerQueriesWithMVs.enabled=true '
                  '--conf spark.sql.materializedViews.metadataCache.enabled=true'
    },
    GlueVersion='5.1'
)
```

#### Für S3-Allzweck-Buckets
<a name="materialized-views-s3-general-purpose-buckets"></a>

```
job = glue.create_job(
    Name='materialized-view-job',
    Role='arn:aws:iam::111122223333:role/GlueServiceRole',
    Command={
        'Name': 'glueetl',
        'ScriptLocation': 's3://amzn-s3-demo-bucket/scripts/mv-script.py',
        'PythonVersion': '3'
    },
    DefaultArguments={
        '--enable-glue-datacatalog': 'true',
        '--conf': 'spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions '
                  '--conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog '
                  '--conf spark.sql.catalog.glue_catalog.type=glue '
                  '--conf spark.sql.catalog.glue_catalog.warehouse=s3://amzn-s3-demo-bucket/warehouse '
                  '--conf spark.sql.catalog.glue_catalog.glue.region=us-east-1 '
                  '--conf spark.sql.catalog.glue_catalog.glue.id=111122223333 ',
                  '--conf spark.sql.catalog.glue_catalog.glue.account-id=111122223333 ',
                  '--conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true ',
                  '--conf spark.sql.defaultCatalog=glue_catalog '
                  '--conf spark.sql.optimizer.answerQueriesWithMVs.enabled=true '
                  '--conf spark.sql.materializedViews.metadataCache.enabled=true'
    },
    GlueVersion='5.1'
)
```

### Konfiguration von AWS Glue Studio-Notebooks
<a name="materialized-views-configuring-glue-studio-notebooks"></a>

Konfigurieren Sie in AWS Glue Studio-Notizbüchern Ihre Spark-Sitzung mit dem Befehl %%configure magic am Anfang Ihres Notizbuchs:

```
%%configure
{
    "conf": {
        "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
        "spark.sql.catalog.glue_catalog": "org.apache.iceberg.spark.SparkCatalog",
        "spark.sql.catalog.glue_catalog.type": "glue",
        "spark.sql.catalog.glue_catalog.warehouse": "s3://amzn-s3-demo-bucket/warehouse",
        "spark.sql.catalog.glue_catalog.glue.region": "us-east-1",
        "spark.sql.catalog.glue_catalog.glue.id": "111122223333",
        "spark.sql.catalog.glue_catalog.glue.account-id": "111122223333",
        "spark.sql.catalog.glue_catalog.glue.lakeformation-enabled": "true",
        "spark.sql.defaultCatalog": "glue_catalog",
        "spark.sql.optimizer.answerQueriesWithMVs.enabled": "true",
        "spark.sql.materializedViews.metadataCache.enabled": "true"
    }
}
```

### Aktivierung der inkrementellen Aktualisierung
<a name="materialized-views-enabling-incremental-refresh"></a>

Um die inkrementelle Aktualisierungsoptimierung zu aktivieren, fügen Sie Ihren Jobparametern oder Ihrer Notebook-Konfiguration die folgenden Konfigurationseigenschaften hinzu:

```
--conf spark.sql.optimizer.incrementalMVRefresh.enabled=true
--conf spark.sql.optimizer.incrementalMVRefresh.deltaThresholdCheckEnabled=false
```

### Konfigurationsparameter
<a name="materialized-views-configuration-parameters"></a>

Die folgenden Konfigurationsparameter steuern das Verhalten der materialisierten Ansicht:
+ `spark.sql.extensions`— Aktiviert Iceberg Spark-Sitzungserweiterungen, die für die Unterstützung von Materialized Views erforderlich sind.
+ `spark.sql.optimizer.answerQueriesWithMVs.enabled`— Ermöglicht das automatische Umschreiben von Abfragen zur Verwendung materialisierter Ansichten. Auf true setzen, um diese Optimierung zu aktivieren.
+ `spark.sql.materializedViews.metadataCache.enabled`— Ermöglicht das Zwischenspeichern von Metadaten der materialisierten Ansicht zur Abfrageoptimierung. Auf „true“ setzen, um die Leistung beim Umschreiben von Abfragen zu verbessern.
+ `spark.sql.optimizer.incrementalMVRefresh.enabled`— Aktiviert die inkrementelle Aktualisierungsoptimierung. Auf true setzen, um nur geänderte Daten während Aktualisierungsvorgängen zu verarbeiten.
+ `spark.sql.optimizer.answerQueriesWithMVs.decimalAggregateCheckEnabled`— Steuert die Validierung von dezimalen Aggregatoperationen beim Umschreiben von Abfragen. Auf „false“ setzen, um bestimmte Prüfungen auf Dezimalüberlauf zu deaktivieren.

## Erstellen von materialisierten Ansichten
<a name="materialized-views-creating"></a>

Sie erstellen materialisierte Ansichten mit der SQL-Anweisung CREATE MATERIALIZED VIEW in AWS Glue-Jobs oder -Notebooks. Die View-Definition spezifiziert die Transformationslogik als eine SQL-Abfrage, die auf eine oder mehrere Quelltabellen verweist.

### Erstellen einer grundlegenden materialisierten Ansicht in AWS Glue-Jobs
<a name="materialized-views-creating-basic-glue-jobs"></a>

Das folgende Beispiel zeigt die Erstellung einer materialisierten Ansicht in einem AWS Glue-Job-Skript, wobei vollqualifizierte Tabellennamen mit dreiteiliger Benennungskonvention in der Ansichtsdefinition verwendet werden:

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# Create materialized view
spark.sql("""
    CREATE MATERIALIZED VIEW customer_orders
    AS 
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM glue_catalog.sales.orders
    GROUP BY customer_name
""")
```

### Erstellen einer materialisierten Ansicht mit automatischer Aktualisierung
<a name="materialized-views-creating-automatic-refresh"></a>

Um die automatische Aktualisierung zu konfigurieren, geben Sie bei der Erstellung der Ansicht einen Aktualisierungszeitplan an. Verwenden Sie dabei vollqualifizierte Tabellennamen mit dreiteiliger Benennungskonvention in der Ansichtsdefinition:

```
spark.sql("""
    CREATE MATERIALIZED VIEW customer_orders
    SCHEDULE REFRESH EVERY 1 HOUR
    AS 
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM glue_catalog.sales.orders
    GROUP BY customer_name
""")
```

### Erstellen einer materialisierten Ansicht mit katalogübergreifenden Verweisen
<a name="materialized-views-creating-cross-catalog"></a>

Wenn sich Ihre Quelltabellen in einem anderen Katalog als Ihre materialisierte Ansicht befinden, verwenden Sie vollqualifizierte Tabellennamen mit dreiteiliger Benennungskonvention sowohl im Ansichtsnamen als auch in der Ansichtsdefinition:

```
spark.sql("""
    CREATE MATERIALIZED VIEW s3t_catalog.analytics.customer_summary
    AS 
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM glue_catalog.sales.orders
    GROUP BY customer_name
""")
```

### Materialisierte Ansichten in AWS Glue Studio-Notizbüchern erstellen
<a name="materialized-views-creating-glue-studio-notebooks"></a>

In AWS Glue Studio-Notizbüchern können Sie den magischen Befehl %%sql verwenden, um materialisierte Ansichten zu erstellen, wobei Sie vollqualifizierte Tabellennamen mit dreiteiliger Benennungskonvention in der Ansichtsdefinition verwenden:

```
%%sql
CREATE MATERIALIZED VIEW customer_orders
AS 
SELECT 
    customer_name, 
    COUNT(*) as order_count, 
    SUM(amount) as total_amount 
FROM glue_catalog.sales.orders
GROUP BY customer_name
```

## Abfragen materialisierter Ansichten
<a name="materialized-views-querying"></a>

Nachdem Sie eine materialisierte Ansicht erstellt haben, können Sie sie wie jede andere Tabelle mit Standard-SQL-SELECT-Anweisungen in Ihren AWS Glue-Jobs oder -Notizbüchern abfragen.

### Abfragen in AWS Glue-Jobs
<a name="materialized-views-querying-glue-jobs"></a>

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# Query materialized view
result = spark.sql("SELECT * FROM customer_orders")
result.show()
```

### Abfragen in AWS Glue Studio-Notizbüchern
<a name="materialized-views-querying-glue-studio-notebooks"></a>

```
%%sql
SELECT * FROM customer_orders
```

### Automatisches Umschreiben von Abfragen
<a name="materialized-views-automatic-query-rewrite"></a>

Wenn das automatische Umschreiben von Abfragen aktiviert ist, analysiert der Spark-Optimierer Ihre Abfragen und verwendet automatisch materialisierte Ansichten, wenn diese die Leistung verbessern können. Wenn Sie beispielsweise die folgende Abfrage ausführen:

```
result = spark.sql("""
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM orders
    GROUP BY customer_name
""")
```

Der Spark-Optimierer schreibt diese Abfrage automatisch neu, sodass sie die materialisierte Ansicht customer\$1orders verwendet, anstatt die Tabelle mit den Basisbestellungen zu verarbeiten, vorausgesetzt, die materialisierte Ansicht ist aktuell.

### Überprüfung des automatischen Umschreibens von Abfragen
<a name="materialized-views-verifying-automatic-query-rewrite"></a>

Verwenden Sie den Befehl EXPLAIN EXTENDED, um zu überprüfen, ob eine Abfrage das automatische Umschreiben von Abfragen verwendet:

```
spark.sql("""
    EXPLAIN EXTENDED
    SELECT customer_name, COUNT(*) as order_count, SUM(amount) as total_amount 
    FROM orders
    GROUP BY customer_name
""").show(truncate=False)
```

Suchen Sie im Ausführungsplan nach dem Namen der materialisierten Ansicht in der BatchScan Operation. Wenn der Plan BatchScan glue\$1catalog.analytics.customer\$1orders statt glue\$1catalog.sales.orders anzeigt, wurde die Abfrage automatisch so umgeschrieben, dass sie die BatchScan materialisierte Ansicht verwendet.

Beachten Sie, dass das automatische Umschreiben von Abfragen einige Zeit in Anspruch nimmt, bis der Spark-Metadatencache gefüllt ist, nachdem eine materialisierte Ansicht erstellt wurde. Dieser Vorgang ist in der Regel innerhalb von 30 Sekunden abgeschlossen.

## Aktualisieren materialisierter Ansichten
<a name="materialized-views-refreshing"></a>

Sie können materialisierte Ansichten mit zwei Methoden aktualisieren: vollständige Aktualisierung oder inkrementelle Aktualisierung. Bei der vollständigen Aktualisierung wird die gesamte materialisierte Ansicht anhand aller Basistabellendaten neu berechnet, während bei der inkrementellen Aktualisierung nur die Daten verarbeitet werden, die sich seit der letzten Aktualisierung geändert haben.

### Manuelle vollständige Aktualisierung von AWS Glue-Jobs
<a name="materialized-views-manual-full-refresh-glue-jobs"></a>

So führen Sie eine vollständige Aktualisierung einer materialisierten Ansicht durch:

```
spark.sql("REFRESH MATERIALIZED VIEW customer_orders FULL")

# Verify updated results
result = spark.sql("SELECT * FROM customer_orders")
result.show()
```

### Manuelles inkrementelles Aktualisieren von AWS Glue-Jobs
<a name="materialized-views-manual-incremental-refresh-glue-jobs"></a>

Um eine inkrementelle Aktualisierung durchzuführen, stellen Sie sicher, dass die inkrementelle Aktualisierung in Ihrer Spark-Sitzungskonfiguration aktiviert ist, und führen Sie dann Folgendes aus:

```
spark.sql("REFRESH MATERIALIZED VIEW customer_orders")

# Verify updated results
result = spark.sql("SELECT * FROM customer_orders")
result.show()
```

Der AWS Glue-Datenkatalog bestimmt anhand der Ansichtsdefinition und der Menge der geänderten Daten automatisch, ob eine inkrementelle Aktualisierung möglich ist. Wenn eine inkrementelle Aktualisierung nicht möglich ist, wird der Vorgang auf eine vollständige Aktualisierung zurückgesetzt.

### Aktualisierung in AWS Glue Studio-Notizbüchern
<a name="materialized-views-refreshing-glue-studio-notebooks"></a>

Verwenden Sie in Notizbüchern den magischen Befehl %%sql:

```
%%sql
REFRESH MATERIALIZED VIEW customer_orders FULL
```

### Die Ausführung der inkrementellen Aktualisierung wird überprüft
<a name="materialized-views-verifying-incremental-refresh"></a>

Um zu bestätigen, dass die inkrementelle Aktualisierung erfolgreich ausgeführt wurde, aktivieren Sie die Debug-Protokollierung in Ihrem AWS Glue-Job:

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext
import logging

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# Enable debug logging
logger = logging.getLogger('org.apache.spark.sql')
logger.setLevel(logging.DEBUG)

# Execute refresh
spark.sql("REFRESH MATERIALIZED VIEW customer_orders")
```

Suchen Sie in den AWS Glue-Jobprotokollen nach der folgenden Meldung:

```
DEBUG RefreshMaterializedViewExec: Executed Incremental Refresh
```

## Materialisierte Ansichten verwalten
<a name="materialized-views-managing"></a>

AWS Glue bietet SQL-Befehle für die Verwaltung des Lebenszyklus materialisierter Ansichten in Ihren Jobs und Notizbüchern.

### Beschreibung einer materialisierten Ansicht
<a name="materialized-views-describing"></a>

So zeigen Sie Metadaten zu einer materialisierten Ansicht an, einschließlich ihrer Definition, ihres Aktualisierungsstatus und des Zeitstempels der letzten Aktualisierung:

```
spark.sql("DESCRIBE EXTENDED customer_orders").show(truncate=False)
```

### Eine materialisierte Ansicht ändern
<a name="materialized-views-altering"></a>

So ändern Sie den Aktualisierungszeitplan einer vorhandenen materialisierten Ansicht:

```
spark.sql("""
    ALTER MATERIALIZED VIEW customer_orders 
    ADD SCHEDULE REFRESH EVERY 2 HOURS
""")
```

Um die automatische Aktualisierung zu entfernen:

```
spark.sql("""
    ALTER MATERIALIZED VIEW customer_orders 
    DROP SCHEDULE
""")
```

### Löschen einer materialisierten Ansicht
<a name="materialized-views-dropping"></a>

Um eine materialisierte Ansicht zu löschen:

```
spark.sql("DROP MATERIALIZED VIEW customer_orders")
```

Dieser Befehl entfernt die Definition der materialisierten Ansicht aus dem AWS Glue-Datenkatalog und löscht die zugrunde liegenden Iceberg-Tabellendaten aus Ihrem S3-Bucket.

### Materialisierte Ansichten auflisten
<a name="materialized-views-listing"></a>

Um alle materialisierten Ansichten in einer Datenbank aufzulisten:

```
spark.sql("SHOW VIEWS FROM analytics").show()
```

## Berechtigungen für materialisierte Ansichten
<a name="materialized-views-permissions"></a>

Um materialisierte Ansichten zu erstellen und zu verwalten, müssen Sie Berechtigungen konfigurieren AWS Lake Formation . Die IAM-Rolle, die die materialisierte Ansicht erstellt (die Definer-Rolle), erfordert spezielle Berechtigungen für Quelltabellen und Zieldatenbanken.

### Erforderliche Berechtigungen für die Definer-Rolle
<a name="materialized-views-required-permissions-definer-role"></a>

Die Definiererrolle muss über die folgenden Lake Formation Formation-Berechtigungen verfügen:
+ Für Quelltabellen — SELECT- oder ALL-Berechtigungen ohne Zeilen-, Spalten- oder Zellenfilter
+ In der Zieldatenbank — CREATE\$1TABLE-Berechtigung
+ Über den AWS Glue-Datenkatalog — GetTable und CreateTable API-Berechtigungen

Wenn Sie eine materialisierte Ansicht erstellen, wird der ARN der Definiererrolle in der Ansichtsdefinition gespeichert. Der AWS Glue-Datenkatalog übernimmt diese Rolle bei der Ausführung automatischer Aktualisierungsvorgänge. Wenn die Definer-Rolle den Zugriff auf Quelltabellen verliert, schlagen Aktualisierungsvorgänge fehl, bis die Berechtigungen wiederhergestellt sind.

### IAM-Berechtigungen für AWS Glue-Jobs
<a name="materialized-views-iam-permissions-glue-jobs"></a>

Für die IAM-Rolle Ihres AWS Glue-Jobs sind die folgenden Berechtigungen erforderlich:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetCatalog",
                "glue:GetCatalogs",
                "glue:GetTable",
                "glue:GetTables",
                "glue:CreateTable",
                "glue:UpdateTable",
                "glue:DeleteTable",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "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": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:*:*:*:/aws-glue/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:GetDataAccess"
            ],
            "Resource": "*"
        }
    ]
}
```

Die Rolle, die Sie für die automatische Aktualisierung von Materialized View verwenden, muss über die iam: PassRole -Berechtigung für die Rolle verfügen.

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::111122223333:role/materialized-view-role-name"
      ]
    }
  ]
}
```

Damit Glue die materialisierte Ansicht automatisch für Sie aktualisiert, muss die Rolle außerdem über die folgende Vertrauensrichtlinie verfügen, die es dem Dienst ermöglicht, die Rolle zu übernehmen.

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::111122223333:role/materialized-view-role-name"
      ]
    }
  ]
}
```

Wenn die Materialized View in S3 Tables Buckets gespeichert ist, müssen Sie der Rolle außerdem die folgende Berechtigung hinzufügen.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3tables:PutTableMaintenanceConfiguration"
      ],
      "Resource": "arn:aws:s3tables:*:123456789012:*"
    }
  ]
}
```

### Zugriff auf materialisierte Ansichten gewähren
<a name="materialized-views-granting-access"></a>

Um anderen Benutzern Zugriff auf die Abfrage einer materialisierten Ansicht zu gewähren, verwenden Sie, AWS Lake Formation um die SELECT-Berechtigung für die Materialized View-Tabelle zu gewähren. Benutzer können die Materialized View abfragen, ohne direkten Zugriff auf die zugrunde liegenden Quelltabellen zu benötigen.

Ausführliche Informationen zur Konfiguration von Lake Formation Formation-Berechtigungen finden Sie unter Erteilen und Widerrufen von Berechtigungen für Datenkatalogressourcen im AWS Lake Formation Entwicklerhandbuch.

## Überwachung von Materialized View-Vorgängen
<a name="materialized-views-monitoring"></a>

Der AWS Glue-Datenkatalog veröffentlicht Metriken und Protokolle für Aktualisierungsvorgänge von Materialized Views auf Amazon CloudWatch. Sie können den Aktualisierungsstatus, die Dauer und das verarbeitete Datenvolumen anhand von CloudWatch Metriken überwachen.

### Job-Logs anzeigen
<a name="materialized-views-viewing-job-logs"></a>

So zeigen Sie Logs für AWS Glue-Jobs an, die materialisierte Ansichten erstellen oder aktualisieren:

1. Öffnen Sie die AWS Glue-Konsole.

1. Wählen Sie im Navigationsbereich Jobs aus.

1. Wählen Sie Ihren Job aus und wählen Sie Läufe aus.

1. Wählen Sie einen bestimmten Lauf aus und wählen Sie Protokolle, um die CloudWatch Protokolle anzuzeigen.

### Alarme einrichten
<a name="materialized-views-setting-up-alarms"></a>

Um Benachrichtigungen zu erhalten, wenn Aktualisierungsvorgänge fehlschlagen oder die erwartete Dauer überschreiten, erstellen Sie CloudWatch Alarme für Materialized View-Metriken. Sie können EventBridge Amazon-Regeln auch so konfigurieren, dass automatische Antworten auf Aktualisierungsereignisse ausgelöst werden.

## Beispiel: Vollständiger Workflow
<a name="materialized-views-complete-workflow"></a>

Das folgende Beispiel zeigt einen vollständigen Arbeitsablauf für die Erstellung und Verwendung einer materialisierten Ansicht in AWS Glue.

### Beispiel für ein AWS Glue-Jobskript
<a name="materialized-views-example-glue-job-script"></a>

```
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

# Create database and base table
spark.sql("CREATE DATABASE IF NOT EXISTS sales")
spark.sql("USE sales")

spark.sql("""
    CREATE TABLE IF NOT EXISTS orders (
        id INT,
        customer_name STRING,
        amount DECIMAL(10,2),
        order_date DATE
    )
""")

# Insert sample data
spark.sql("""
    INSERT INTO orders VALUES 
        (1, 'John Doe', 150.00, DATE('2024-01-15')),
        (2, 'Jane Smith', 200.50, DATE('2024-01-16')),
        (3, 'Bob Johnson', 75.25, DATE('2024-01-17'))
""")

# Create materialized view
spark.sql("""
    CREATE MATERIALIZED VIEW customer_summary
    AS 
    SELECT 
        customer_name, 
        COUNT(*) as order_count, 
        SUM(amount) as total_amount 
    FROM glue_catalog.sales.orders
    GROUP BY customer_name
""")

# Query the materialized view
print("Initial materialized view data:")
spark.sql("SELECT * FROM customer_summary").show()

# Insert additional data
spark.sql("""
    INSERT INTO orders VALUES 
        (4, 'Jane Smith', 350.00, DATE('2024-01-18')),
        (5, 'Bob Johnson', 100.25, DATE('2024-01-19'))
""")

# Refresh the materialized view
spark.sql("REFRESH MATERIALIZED VIEW customer_summary FULL")

# Query updated results
print("Updated materialized view data:")
spark.sql("SELECT * FROM customer_summary").show()

job.commit()
```

### Beispiel für ein AWS Glue Studio-Notizbuch
<a name="materialized-views-example-glue-studio-notebook"></a>

```
%%configure
{
    "conf": {
        "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
        "spark.sql.catalog.glue_catalog": "org.apache.iceberg.spark.SparkCatalog",
        "spark.sql.catalog.glue_catalog.type": "glue",
        "spark.sql.catalog.glue_catalog.warehouse": "s3://amzn-s3-demo-bucket/warehouse",
        "spark.sql.catalog.glue_catalog.glue.region": "us-east-1",
        "spark.sql.catalog.glue_catalog.glue.id": "111122223333",
        "spark.sql.catalog.glue_catalog.glue.account-id": "111122223333",
        "spark.sql.catalog.glue_catalog.glue.lakeformation-enabled": "true",
        "spark.sql.defaultCatalog": "glue_catalog",
        "spark.sql.optimizer.answerQueriesWithMVs.enabled": "true",
        "spark.sql.materializedViews.metadataCache.enabled": "true"
    }
}
```

```
%%sql
CREATE DATABASE IF NOT EXISTS sales
```

```
%%sql
USE sales
```

```
%%sql
CREATE TABLE IF NOT EXISTS orders (
    id INT,
    customer_name STRING,
    amount DECIMAL(10,2),
    order_date DATE
)
```

```
%%sql
INSERT INTO orders VALUES 
    (1, 'John Doe', 150.00, DATE('2024-01-15')),
    (2, 'Jane Smith', 200.50, DATE('2024-01-16')),
    (3, 'Bob Johnson', 75.25, DATE('2024-01-17'))
```

```
%%sql
CREATE MATERIALIZED VIEW customer_summary
AS 
SELECT 
    customer_name, 
    COUNT(*) as order_count, 
    SUM(amount) as total_amount 
FROM glue_catalog.sales.orders
GROUP BY customer_name
```

```
%%sql
SELECT * FROM customer_summary
```

```
%%sql
INSERT INTO orders VALUES 
    (4, 'Jane Smith', 350.00, DATE('2024-01-18')),
    (5, 'Bob Johnson', 100.25, DATE('2024-01-19'))
```

```
%%sql
REFRESH MATERIALIZED VIEW customer_summary FULL
```

```
%%sql
SELECT * FROM customer_summary
```

## Überlegungen und Einschränkungen
<a name="materialized-views-considerations-limitations"></a>

Beachten Sie Folgendes, wenn Sie materialisierte Ansichten mit AWS Glue verwenden:
+ Materialisierte Ansichten erfordern AWS Glue Version 5.1 oder höher.
+ Quelltabellen müssen Apache Iceberg-Tabellen sein, die im AWS Glue-Datenkatalog registriert sind. Apache Hive-, Apache Hudi- und Delta Lake-Tabellen der Linux Foundation werden beim Start nicht unterstützt.
+ Quelltabellen müssen sich in derselben Region und demselben Konto wie die materialisierte Ansicht befinden.
+ Alle Quelltabellen müssen von gesteuert werden. AWS Lake Formation Reine IAM-Berechtigungen und hybrider Zugriff werden nicht unterstützt.
+ Materialisierte Ansichten können nicht auf AWS Glue Data Catalog-Ansichten, Multidialektansichten oder andere materialisierte Ansichten als Quelltabellen verweisen.
+ Die Rolle des View Definers muss vollen Lesezugriff (SELECT- oder ALL-Berechtigung) auf alle Quelltabellen haben, ohne dass Zeilen-, Spalten- oder Zellfilter angewendet werden.
+ Materialisierte Ansichten stimmen letztendlich mit Quelltabellen überein. Während des Aktualisierungsfensters können Abfragen veraltete Daten zurückgeben. Führen Sie die manuelle Aktualisierung aus, um sofortige Konsistenz zu gewährleisten.
+ Das minimale automatische Aktualisierungsintervall beträgt eine Stunde.
+ Die inkrementelle Aktualisierung unterstützt eine eingeschränkte Teilmenge von SQL-Vorgängen. Die Viewdefinition muss ein einzelner SELECT-FROM-WHERE-GROUP BY-HAVING-Block sein und darf keine Mengenoperationen, Unterabfragen, das DISTINCT-Schlüsselwort in SELECT oder Aggregatfunktionen, Fensterfunktionen oder Joins außer INNER JOIN enthalten.
+ Die inkrementelle Aktualisierung unterstützt keine benutzerdefinierten Funktionen oder bestimmte integrierte Funktionen. Nur eine Teilmenge der integrierten Funktionen von Spark SQL wird unterstützt.
+ Beim automatischen Umschreiben von Abfragen werden nur materialisierte Ansichten berücksichtigt, deren Definitionen zu einer eingeschränkten SQL-Teilmenge gehören, ähnlich den Beschränkungen für inkrementelle Aktualisierungen.
+ Bezeichner, die andere Sonderzeichen als alphanumerische Zeichen und Unterstriche enthalten, werden in CREATE MATERIALIZED VIEW-Abfragen nicht unterstützt. Dies gilt für alle Bezeichnertypen, einschließlich catalog/namespace/table Namen, Spalten- und Strukturfeldnamen sowie Aliase. CTEs
+ Spalten in materialisierten Ansichten, die mit dem Präfix \$1\$1ivm beginnen, sind für die Verwendung durch das System reserviert. Amazon behält sich das Recht vor, diese Spalten in future Versionen zu ändern oder zu entfernen.
+ Die Klauseln SORT BY, LIMIT, OFFSET, CLUSTER BY und ORDER BY werden in Definitionen von Materialized View nicht unterstützt.
+ Regions- und kontenübergreifende Quelltabellen werden nicht unterstützt.
+ Für Tabellen, auf die in der View-Abfrage verwiesen wird, muss eine dreiteilige Benennungskonvention verwendet werden (z. B. glue\$1catalog.my\$1db.my\$1table), da bei der automatischen Aktualisierung keine standardmäßigen Katalog- und Datenbankeinstellungen verwendet werden.
+ Vollständige Aktualisierungsvorgänge überschreiben die gesamte Tabelle und sorgen dafür, dass vorherige Snapshots nicht mehr verfügbar sind.
+ Nichtdeterministische Funktionen wie rand () oder current\$1timestamp () werden in Definitionen materialisierter Ansichten nicht unterstützt.

# AWS Glue Typen von Arbeitern
<a name="worker-types"></a>

## -Übersicht
<a name="worker-types-overview"></a>

AWS Glue bietet mehrere Arbeitstypen, um unterschiedlichen Workload-Anforderungen gerecht zu werden, von kleinen Streaming-Jobs bis hin zu umfangreichen, speicherintensiven Datenverarbeitungsaufgaben. Dieser Abschnitt enthält umfassende Informationen zu allen verfügbaren Worker-Typen, ihren Spezifikationen und Nutzungsempfehlungen.

### Kategorien von Worker-Typen
<a name="worker-type-categories"></a>

AWS Glue bietet zwei Hauptkategorien von Mitarbeitertypen:
+ **G-Worker-Typen**: Allzweck-Datenverarbeitungs-Worker, die für Standard-ETL-Workloads optimiert sind
+ **R-Worker-Typen**: RAM-optimierte Worker, die für arbeitsspeicherintensive Spark-Anwendungen konzipiert wurden

### Datenverarbeitungseinheiten (DPUs)
<a name="data-processing-units"></a>

Die den AWS Glue Arbeitnehmern zur Verfügung stehenden Ressourcen werden in gemessen DPUs. Eine DPU ist ein relatives Maß für die Rechenleistung, die sich aus 4 V CPUs Rechenkapazität und 16 GB Arbeitsspeicher zusammensetzt.

**Speicheroptimiert DPUs (M-DPUs)**: Worker vom Typ R verwenden M-DPUs, wodurch im Vergleich zum Standard die doppelte Speicherzuweisung für eine bestimmte Größe bereitgestellt wird. DPUs Das bedeutet, dass eine Standard-DPU 16 GB Arbeitsspeicher bereitstellt, während eine M-DPU in R-Worker-Typen 32 GB Arbeitsspeicher bereitstellt, der für speicherintensive Spark-Anwendungen optimiert ist.

## Verfügbare Worker-Typen
<a name="available-worker-types"></a>

### G.1X
<a name="g1x-standard-worker"></a>
+ **DPU**: 1 DPU (4 VCPUs, 16 GB Speicher)
+ **Speicher**: 94 GB Festplatte (ca. 44 GB frei)
+ **Anwendungsfall**: Datentransformationen, Verknüpfungen und Abfragen – skalierbar und kostengünstig für die meisten Aufträge

### G.2X
<a name="g2x-standard-worker"></a>
+ **DPU**: 2 DPU (8 VCPUs, 32 GB Speicher)
+ **Speicher**: 138 GB Festplatte (ca. 78 GB frei)
+ **Anwendungsfall**: Datentransformationen, Verknüpfungen und Abfragen – skalierbar und kostengünstig für die meisten Aufträge

### G.4X
<a name="g4x-large-worker"></a>
+ **DPU**: 4 DPU (16 VCPUs, 64 GB Speicher)
+ **Speicher**: 256 GB Festplatte (ca. 230 GB frei)
+ **Anwendungsfall**: Anspruchsvolle Transformationen, Aggregationen, Zusammenführungen und Abfragen

### G.8X
<a name="g8x-extra-large-worker"></a>
+ **DPU**: 8 DPU (32 VCPUs, 128 GB Speicher)
+ **Speicher**: 512 GB Festplatte (ca. 485 GB frei)
+ **Anwendungsfall**: Anspruchsvolle Transformationen, Aggregationen, Zusammenführungen und Abfragen

### G.12X
<a name="g12x-very-large-worker"></a>
+ **DPU**: 12 DPU (48 VCPUs, 192 GB Speicher)
+ **Speicher**: 768 GB Festplatte (ca. 741 GB frei)
+ **Anwendungsfall**: Sehr große und ressourcenintensive Workloads, die eine erhebliche Rechenkapazität erfordern

### G.16X
<a name="g16x-maximum-worker"></a>
+ **DPU**: 16 DPU (64 VCPUs, 256 GB Speicher)
+ **Speicher**: 1.024 GB Festplatte (ca. 996 GB frei)
+ **Anwendungsfall**: Größte und ressourcenintensivste Workloads, die eine maximale Rechenkapazität erfordern

### R.1X — Speicheroptimiert\$1
<a name="r1x-memory-optimized-small"></a>
+ **DPU: 1 M-DPU** (4 V, 32 GB Speicher) CPUs
+ **Anwendungsfall**: Speicherintensive Workloads mit häufigen Fehlern oder hohen Ratio-Anforderungen out-of-memory memory-to-CPU

### R.2X — Speicheroptimiert\$1
<a name="r2x-memory-optimized-medium"></a>
+ **DPU: 2 M-DPU** (8 V, 64 GB Speicher) CPUs
+ **Anwendungsfall**: Speicherintensive Workloads mit häufigen Fehlern oder hohen Ratio-Anforderungen out-of-memory memory-to-CPU

### R.4X — Speicheroptimiert\$1
<a name="r4x-memory-optimized-large"></a>
+ **DPU: 4 M-DPU** (16 V, 128 GB Speicher) CPUs
+ **Anwendungsfall**: Große speicherintensive Workloads mit häufigen Fehlern oder hohen Verhältnisanforderungen out-of-memory memory-to-CPU

### R.8X — Speicheroptimiert\$1
<a name="r8x-memory-optimized-extra-large"></a>
+ **DPU: 8 M-DPU (**32 V, 256 GB Speicher) CPUs
+ **Anwendungsfall**: Sehr große speicherintensive Workloads mit häufigen Fehlern oder hohen Verhältnisanforderungen out-of-memory memory-to-CPU

**\$1** Bei diesen Workern kann es zu einer höheren Startlatenz kommen. Versuchen Sie, das Problem wie folgt zu beheben:
+ Warten Sie einige Minuten und senden Sie Ihren Auftrag erneut.
+ Senden Sie einen neuen Auftrag mit einer geringeren Anzahl von Workern.
+ Senden Sie einen neuen Auftrag mit einem anderen Worker-Typ oder einer anderen Worker-Größe.

## Tabelle mit Worker-Typ-Spezifikationen
<a name="worker-type-specifications"></a>


**Worker-Typ-Spezifikationen**  

| Worker-Typ | DPU pro Knoten | vCPU | Speicher (GB) | Festplatte (GB) | Ungefährer freier Festplattenspeicher (GB) | Spark-Executors pro Knoten | 
| --- | --- | --- | --- | --- | --- | --- | 
| G.1X | 1 | 4 | 16 | 94 | 44 | 1 | 
| G.2X | 2 | 8 | 32 | 138 | 78 | 1 | 
| G.4X | 4 | 16 | 64 | 256 | 230 | 1 | 
| G.8X | 8 | 32 | 128 | 512 | 485 | 1 | 
| G.12X | 12 | 48 | 192 | 768 | 741 | 1 | 
| G.16X | 16 | 64 | 256 | 1024 | 996 | 1 | 
| R 1X | 1 | 4 | 32 | 94 | 44 | 1 | 
| R 2X | 2 | 8 | 64 | 138 | 78 | 1 | 
| R 4X | 4 | 16 | 128 | 256 | 230 | 1 | 
| R 8 X | 8 | 32 | 256 | 512 | 485 | 1 | 

*Hinweis*: R-Worker-Typen haben RAM-optimierte Konfigurationen mit Spezifikationen, die für speicherintensive Workloads optimiert sind.

## Wichtige Überlegungen
<a name="important-considerations"></a>

### Startlatenz
<a name="startup-latency"></a>

**Wichtig**  
Die Worker-Typen G.12X und G.16X sowie alle R-Worker-Typen (R.1X bis R.8X) haben ggf. eine höhere Startlatenz. Versuchen Sie, das Problem wie folgt zu beheben:  
Warten Sie einige Minuten und senden Sie Ihren Auftrag erneut.
Senden Sie einen neuen Auftrag mit einer geringeren Anzahl von Workern.
Senden Sie einen neuen Auftrag mit einem anderen Worker-Typ und einer anderen Worker-Größe.

## Auswählen des richtigen Worker-Typs
<a name="choosing-right-worker-type"></a>

### Für Standard-ETL-Workloads
<a name="standard-etl-workloads"></a>
+ **G.1X oder G.2X**: Am kostengünstigsten für typische Datentransformationen, Verknüpfungen und Abfragen
+ **G.4X oder G.8X**: Für anspruchsvollere Workloads mit größeren Datensätzen

### Für umfangreiche Workloads
<a name="large-scale-workloads"></a>
+ **G.12X**: Sehr große Datensätze, die erhebliche Rechenressourcen erfordern
+ **G.16X**: Maximale Rechenkapazität für die anspruchsvollsten Workloads

### Für speicherintensive Workloads
<a name="memory-intensive-workloads"></a>
+ **R.1X oder R.2X**: Kleine bis mittlere speicherintensive Aufträge
+ **R.4X oder R.8X**: Große speicherintensive Workloads mit häufigen OOM-Fehlern (Out of Memory)

## Überlegungen zur Kostenoptimierung
<a name="cost-optimization-considerations"></a>
+ **Standard-G-Worker**: Stellen ein ausgewogenes Verhältnis aus Datenverarbeitungs-, Arbeitsspeicher- und Netzwerkressourcen bereit, die dann zu geringeren Kosten für eine Vielzahl unterschiedlicher Workloads verwendet werden können
+ **R-Worker**: Spezialisiert auf speicherintensive Aufgaben mit schneller Leistung bei Workloads, die große Datensätze im Arbeitsspeicher verarbeiten

## Best Practices
<a name="best-practices"></a>

### Richtlinien für die Auswahl von Workern
<a name="worker-selection-guidelines"></a>

1. **Beginnen Sie mit Standard-Workern** (G.1X, G.2X) für die meisten Workloads

1. **Verwenden Sie R-Worker** bei häufigen out-of-memory Fehlern oder Workloads mit speicherintensiven Vorgängen wie Zwischenspeichern, Mischen und Aggregieren

1. **Ziehen Sie die Worker G.12X/G.16X** für rechenintensive Workloads in Betracht, die maximale Ressourcen erfordern

1. **Berücksichtigen Sie Kapazitätsengpässe**, wenn Sie neue Worker-Typen in zeitkritischen Workflows verwenden

### Leistungsoptimierung
<a name="performance-optimization"></a>
+  CloudWatch Überwachen Sie Kennzahlen, um die Ressourcennutzung besser zu verstehen
+ Verwenden entsprechender Worker-Anzahlen basierend auf der Datengröße und Komplexität
+ Erwägen von Strategien zur Datenpartitionierung, um die Effizienz der Worker zu optimieren

# Streaming-ETL-Aufträge in AWS Glue
<a name="add-job-streaming"></a>

Sie können Streaming-Aufträge für ETL-Aufträge (Extract, Transform, Load) erstellen, die kontinuierlich ausgeführt werden und Daten aus Streaming-Quellen wie Amazon Kinesis Data Streams, Apache Kafka und Amazon Managed Streaming für Apache Kafka (Amazon MSK) konsumieren. Die Aufträge bereinigen und transformieren die Daten und laden die Ergebnisse dann in Amazon-S3-Data-Lakes oder JDBC-Datenspeicher.

Darüber hinaus können Sie Daten zu Amazon Kinesis Data Streams erstellen. Diese Funktion ist nur beim Schreiben von AWS Glue Skripten verfügbar. Weitere Informationen finden Sie unter [Kinesis-Verbindungen](aws-glue-programming-etl-connect-kinesis-home.md). 

Standardmäßig verarbeitet und schreibt AWS Glue Daten in 100-Sekunden-Fenstern. Dadurch können Daten effizient verarbeitet und Aggregationen für Daten ausgeführt werden, die später als erwartet eintreffen. Sie können diese Fenstergröße ändern, um die Aktualität oder Aggregationsgenauigkeit zu erhöhen. AWS Glue-Streaming-Aufträge verwenden Checkpoints anstelle von Auftragslesezeichen, um die gelesenen Daten zu verfolgen.

**Anmerkung**  
AWS Glue rechnet Streaming-ETL-Aufträge, während der Ausführung stündlich ab.

In diesem Video werden die Kostenprobleme beim Streamen von ETL und die Funktionen zur Kosteneinsparung in AWS Glue beschrieben.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/6ggTFOtfUxU/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/6ggTFOtfUxU)


Die Erstellung eines Streaming-ETL-Auftrags umfasst die folgenden Schritte:

1. Erstellen Sie für eine Apache-Kafka-Streaming-Quelle eine AWS Glue-Verbindung mit der Kafka-Quelle oder dem Amazon-MSK-Cluster.

1. Erstellen Sie manuell eine Data-Catalog-Tabelle für die Streaming-Quelle.

1. Erstellen Sie einen ETL-Auftrag für die Streaming-Datenquelle. Definieren Sie streamingspezifische Auftragseigenschaften und geben Sie Ihr eigenes Skript an oder ändern Sie optional das generierte Skript.

Weitere Informationen finden Sie unter [ETL einstreamen AWS Glue](components-overview.md#streaming-etl-intro).

Wenn Sie einen Streaming-ETL-Auftrag für Amazon Kinesis Data Streams erstellen, müssen Sie keineAWS Glue-Verbindung erstellen. Wenn jedoch eine Verbindung an den AWS Glue-Streaming-ETL-Auftrag angefügt ist, der Kinesis Data Streams als Quelle enthält, dann ist ein VPC-Endpunkt (Virtual Private Cloud) für Kinesis erforderlich. Weitere Informationen finden Sie unter [Erstellung eines Schnittstellenendpunkts](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) im *Benutzerhandbuch für Amazon VPC*. Wenn Sie einen Amazon-Kinesis-Data-Streams-Stream in einem anderen Konto angeben, müssen Sie die Rollen und Richtlinien einrichten, um den kontenübergreifenden Zugriff zu ermöglichen. Weitere Informationen finden Sie unter [Beispiel: Aus einem Kinesis Stream in einem anderen Konto lesen](https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html).

AWS Glue-Streaming-ETL-Aufträge können komprimierte Daten automatisch erkennen, die Streaming-Daten transparent dekomprimieren, die üblichen Transformationen an der Eingangsquelle durchführen und in den Ausgabespeicher laden. 

AWS Glue unterstützt die automatische Dekomprimierung für die folgenden Komprimierungstypen angesichts des Eingabeformats:


| Komprimierungsart | Avro-Datei | Avro-Datum | JSON | CSV | Grok | 
| --- | --- | --- | --- | --- | --- | 
| BZIP2 | Ja | Ja | Ja | Ja | Ja | 
| GZIP | Nein | Ja | Ja | Ja | Ja | 
| SNAPPY | Ja (rohes Snappy) | Ja (gerahmtes Snappy) | Ja (gerahmtes Snappy) | Ja (gerahmtes Snappy) | Ja (gerahmtes Snappy) | 
| XZ | Ja | Ja | Ja | Ja | Ja | 
| ZSTD | Ja | Nein | Nein | Nein | Nein | 
| DEFLATE | Ja | Ja | Ja | Ja | Ja | 

**Topics**
+ [Erstellen einer AWS Glue-Verbindung für einen Apache-Kafka-Datenstrom](#create-conn-streaming)
+ [Erstellen einer Data-Catalog-Tabelle für eine Streaming-Quelle](#create-table-streaming)
+ [Hinweise und Einschränkungen für Avro-Streaming-Quellen](#streaming-avro-notes)
+ [Anwenden von Grok-Mustern auf Streaming-Quellen](#create-table-streaming-grok)
+ [Definieren von Auftragseigenschaften für einen Streaming-ETL-Auftrag](#create-job-streaming-properties)
+ [Hinweise zu und Einschränkungen für Streaming-ETL](#create-job-streaming-restrictions)

## Erstellen einer AWS Glue-Verbindung für einen Apache-Kafka-Datenstrom
<a name="create-conn-streaming"></a>

Um das Lesen aus einem Apache-Kafka-Stream zu ermöglichen, müssen Sie eine AWS Glue-Verbindung erstellen. 

**So erstellen Sie eine AWS Glue-Verbindung für eine Kafka-Quelle (Konsole)**

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 unter **Data catalog** die Option **Connections (Verbindungen)** aus.

1. Wählen Sie **Add connection (Verbindung hinzufügen)** und geben Sie auf der Seite **Set up your connection’s properties (Einrichten der Verbindungseigenschaften)** einen Verbindungsnamen ein.
**Anmerkung**  
Weitere Informationen zum Angeben von Verbindungseigenschaften finden Sie unter [Eigenschaften der AWS Glue -Verbindung](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-connections).

1. Wählen Sie für **Verbindungstyp** den Eintrag **Kafka**.

1. Geben Sie für **Kafka-Bootstrap-Server URLs** den Host und die Portnummer für die Bootstrap-Broker für Ihren Amazon MSK-Cluster oder Apache Kafka-Cluster ein. Verwenden Sie nur TLS-Endpunkte (Transport Layer Security (TLS)) zum Herstellen der ersten Verbindung mit dem Kafka-Cluster. Nur–Text-Endpunkte werden nicht unterstützt.

   Im Folgenden finden Sie eine Beispielliste mit Host-Port-Nummerpaaren für einen Amazon-MSK-Cluster.

   ```
   myserver1.kafka.us-east-1.amazonaws.com:9094,myserver2.kafka.us-east-1.amazonaws.com:9094,
   myserver3.kafka.us-east-1.amazonaws.com:9094
   ```

   Weitere Informationen zum Abrufen der Bootstrap-Broker-Informationen finden Sie unter [Abrufen der Bootstrap Broker für einen Amazon-MSK-Cluster](https://docs.aws.amazon.com/msk/latest/developerguide/msk-get-bootstrap-brokers.html) im *Amazon Managed Streaming for Apache-Kafka-Entwicklerhandbuch*. 

1. Wenn Sie eine sichere Verbindung zur Kafka-Datenquelle wünschen, wählen Sie **SSL-Verbindung erforderlich** und geben für **Standort des privaten CA-Zertifikats von Kafka** einen gültigen Amazon S3 Pfad zu einem benutzerdefinierten SSL-Zertifikat ein.

   Für eine SSL-Verbindung zu selbstverwaltetem Kafka ist das benutzerdefinierte Zertifikat obligatorisch. Es ist optional für Amazon MSK.

   Weitere Informationen zur Angabe eines benutzerdefinierten Zertifikats für Kafka finden Sie unter [AWS Glue Eigenschaften der SSL-Verbindung](connection-properties.md#connection-properties-SSL).

1. Verwenden Sie AWS Glue Studio oder die AWS CLI, um eine Kafka-Client-Authentifizierungsmethode anzugeben. Um darauf zuzugreifen, AWS Glue Studio wählen Sie im **ETL-Menü** im linken Navigationsbereich **AWS Glue**aus.

   Weitere Informationen über Kafka-Client-Authentifizierungsmethoden finden Sie unter [AWS Glue-Kafka-Verbindungseigenschaften für die Client-Authentifizierung](#connection-properties-kafka-client-auth).

1. Geben Sie optional eine Beschreibung ein und wählen Sie dann **Next (Weiter)**.

1. Geben Sie für einen Amazon-MSK-Cluster die Virtual Private Cloud (VPC), das Subnetz und die Sicherheitsgruppe an. Für selbstverwaltetes Kafka sind die VPC-Informationen optional.

1. Klicken Sie auf **Next (Weiter)**, um alle Verbindungseigenschaften zu überprüfen, und wählen Sie dann **Finish (Abschließen)**.

Weitere Informationen zu AWS Glue-Verbindungen finden Sie unter [Herstellen einer Verbindung zu Daten](glue-connections.md).

### AWS Glue-Kafka-Verbindungseigenschaften für die Client-Authentifizierung
<a name="connection-properties-kafka-client-auth"></a>

**SASL/GSSAPI (Kerberos)-Authentifizierung**  
Wenn Sie diese Authentifizierungsmethode wählen, können Sie Kerberos-Eigenschaften angeben.

**Kerberos-Keytab**  
Wählen Sie den Speicherort der Keytab-Datei aus. Ein Keytab speichert Langzeitschlüssel für ein oder mehrere Prinzipale. Weitere Informationen finden Sie unter [MIT-Kerberos-Dokumentation: Keytab](https://web.mit.edu/kerberos/krb5-latest/doc/basic/keytab_def.html). 

**Kerberos krb5.conf-Datei**  
Wählen Sie die krb5.conf-Datei aus. Dies enthält den Standardbereich (ein logisches Netzwerk, ähnlich einer Domain, das eine Gruppe von Systemen unter demselben KDC definiert) und den Standort des KDC-Servers. Weitere Informationen finden Sie in der [MIT-Kerberos-Dokumentation: krb5.conf](https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html). 

**Kerberos-Prinzipal und Kerberos-Dienstname**  
Geben Sie den Kerberos-Prinzipal und den Dienstnamen ein. Weitere Informationen finden Sie unter [MIT Kerberos-Dokumentation: Kerberos-Prinzipal](https://web.mit.edu/kerberos/krb5-1.5/krb5-1.5.4/doc/krb5-user/What-is-a-Kerberos-Principal_003f.html). 

**SASL/SCRAM-SHA-512-Authentifizierung**  
 Wenn Sie diese Authentifizierungsmethode wählen, können Sie Anmeldeinformationen zur Authentifizierung angeben. 

**AWS Secrets Manager**  
Suchen Sie im Suchfeld nach Ihrem Token, indem Sie den Namen oder ARN eingeben. 

**Benutzername und Passwort des Anbieters direkt**  
Suchen Sie im Suchfeld nach Ihrem Token, indem Sie den Namen oder ARN eingeben. 

**SSL-Client-Authentifizierung**  
Wenn Sie diese Authentifizierungsmethode wählen, können Sie den Standort des Kafka-Client-Keystores auswählen, indem Sie Amazon S3 durchsuchen. Optional können Sie das Kennwort für den Kafka-Client-Keystore und das Kafka-Client-Schlüsselkennwort eingeben. 

**IAM-Authentifizierung**  
Diese Authentifizierungsmethode erfordert keine zusätzlichen Spezifikationen und ist nur anwendbar, wenn die Streaming-Quelle MSK Kafka ist. 

**SASL/PLAIN-Authentifizierung**  
Wenn Sie diese Authentifizierungsmethode wählen, können Sie Anmeldeinformationen zur Authentifizierung angeben. 

## Erstellen einer Data-Catalog-Tabelle für eine Streaming-Quelle
<a name="create-table-streaming"></a>

Eine Datenkatalogtabelle, die die Eigenschaften des Quelldatenstroms, einschließlich des Datenschemas, angibt, kann manuell für eine Streaming-Quelle erstellt werden. Diese Tabelle wird als Datenquelle für den Streaming-ETL-Auftrag verwendet. 

Wenn Sie das Schema der Daten im Quelldatenstrom nicht kennen, können Sie die Tabelle ohne Schema erstellen. Wenn Sie dann den Streaming-ETL-Auftrag erstellen, können Sie die AWS Glue-Schema-Erkennungsfunktion verwenden. AWS Glue ermittelt das Schema aus den Streaming-Daten.

Verwenden Sie die [AWS GlueKonsole](https://console.aws.amazon.com/glue/), die AWS Command Line Interface (AWS CLI) oder die AWS Glue API, um die Tabelle zu erstellen. Weitere Informationen zur manuellen Erstellung einer Tabelle mit der AWS Glue-Konsole finden Sie unter [Erstellen von Tabellen](tables-described.md).

**Anmerkung**  
Sie können die AWS Lake Formation Konsole nicht verwenden, um die Tabelle zu erstellen. Sie müssen die AWS Glue Konsole verwenden.

Beachten Sie auch die folgenden Informationen für Streaming-Quellen im Avro-Format oder für Protokolldaten, auf die Sie Grok-Muster anwenden können. 
+ [Hinweise und Einschränkungen für Avro-Streaming-Quellen](#streaming-avro-notes)
+ [Anwenden von Grok-Mustern auf Streaming-Quellen](#create-table-streaming-grok)

**Topics**
+ [Kinesis-Datenquelle](#kinesis-source)
+ [Kafka-Datenquelle](#kafka-source)
+ [Quelle der AWS Glue Schema Registry-Tabelle](#schema-registry-table)

### Kinesis-Datenquelle
<a name="kinesis-source"></a>

Legen Sie beim Erstellen der Tabelle die folgenden Streaming-ETL-Eigenschaften fest (Konsole).

**Quelltyp**  
**Kinesis**

**Für eine Kinesis-Quelle im selben Konto:**    
**Region**  
Die AWS Region, in der sich der Amazon Kinesis Data Streams Streams-Service befindet. Der Name der Region und des Kinesis-Streams werden zusammen in einen Stream-ARN übersetzt.  
Beispiel: https://kinesis.us-east-1.amazonaws.com  
**Kinesis-Streamname**  
Der Stream-Name wie unter [Erstellen eines Streams](https://docs.aws.amazon.com/streams/latest/dev/kinesis-using-sdk-java-create-stream.html) im* Entwicklerhandbuch zu Amazon Kinesis Data Streams* beschrieben.

**Informationen zu einer Kinesis-Quelle in einem anderen Konto finden Sie in [diesem Beispiel](https://docs.aws.amazon.com/kinesisanalytics/latest/java/examples-cross.html) zum Einrichten der Rollen und Richtlinien, um den kontenübergreifenden Zugriff zu ermöglichen. Konfigurieren Sie diese Einstellungen:**    
**ARN streamen**  
Der ARN des Kinesis-Datenstroms, mit dem der Verbraucher registriert ist. Weitere Informationen finden Sie unter [Amazon Resource Names (ARNs) und AWS Service Namespaces](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in der. *Allgemeine AWS-Referenz*  
**Angenommene ARN-Rolle**  
Der angenommene Amazon-Ressourcenname (ARN) der Rolle.  
**Sitzungsname (optional)**  
Ein Bezeichner für die Sitzung der angenommenen Rolle.  
Verwenden Sie den Namen der Rollensitzung, um eine Sitzung eindeutig zu identifizieren, wenn dieselbe Rolle von verschiedenen Prinzipalen oder aus unterschiedlichen Gründen übernommen wird. In kontenübergreifenden Szenarien ist der Name der Rollensitzung für das Konto sichtbar und kann von dem Konto protokolliert werden, dem die Rolle gehört. Der Rollensitzungsname wird auch im ARN des übernommenen Rollenprinzipals verwendet. Das bedeutet, dass nachfolgende kontoübergreifende API-Anfragen, die die temporären Sicherheitsanmeldedaten verwenden, den Namen der Rollensitzung für das externe Konto in ihren Protokollen offenlegen. AWS CloudTrail 

**Streaming-ETL-Eigenschaften für Amazon Kinesis Data Streams festlegen (AWS Glue-API oder AWS CLI)**
+ Um Streaming-ETL-Eigenschaften für eine Kinesis-Quelle in demselben Konto einzurichten, geben Sie die `streamName`- und `endpointUrl`-Parameter in der `StorageDescriptor`-Struktur der `CreateTable`-API-Operation oder dem `create_table`-CLI-Befehl an.

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamName": "sample-stream",
  		"endpointUrl": "https://kinesis.us-east-1.amazonaws.com"
  	}
  	...
  }
  ```

  Oder geben Sie den `streamARN` an.  
**Example**  

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream"
  	}
  	...
  }
  ```
+ Um Streaming-ETL-Eigenschaften für eine Kinesis-Quelle in einem anderen Konto einzurichten, geben Sie die `streamARN`-, `awsSTSRoleARN`- und (optional) `awsSTSSessionName`-Parameter in der `StorageDescriptor`-Struktur der `CreateTable`-API-Operation oder dem `create_table`-CLI-Befehl an.

  ```
  "StorageDescriptor": {
  	"Parameters": {
  		"typeOfData": "kinesis",
  		"streamARN": "arn:aws:kinesis:us-east-1:123456789:stream/sample-stream",
  		"awsSTSRoleARN": "arn:aws:iam::123456789:role/sample-assume-role-arn",
  		"awsSTSSessionName": "optional-session"
  	}
  	...
  }
  ```

### Kafka-Datenquelle
<a name="kafka-source"></a>

Legen Sie beim Erstellen der Tabelle die folgenden Streaming-ETL-Eigenschaften fest (Konsole).

**Quelltyp**  
 **Kafka**

**Für eine Kafka-Quelle:**    
**Themenname**  
Der Topic-Name wie in Kafka angegeben.  
**Connection (Verbindung)**  
Eine AWS Glue-Verbindung, die auf eine Kafka-Quelle verweist, wie unter [Erstellen einer AWS Glue-Verbindung für einen Apache-Kafka-Datenstrom](#create-conn-streaming) beschrieben.

### Quelle der AWS Glue Schema Registry-Tabelle
<a name="schema-registry-table"></a>

Um AWS Glue Schema Registry für Streaming-Aufträge zu verwenden, folgen Sie den Anweisungen unter [Anwendungsfall: AWS Glue Data Catalog](schema-registry-integrations.md#schema-registry-integrations-aws-glue-data-catalog), um eine Schema Registry-Tabelle zu erstellen oder zu aktualisieren.

Derzeit unterstützt AWS Glue Streaming nur das Avro-Format der Glue Schema Registry, wobei die Schemainferenz auf `false` eingestellt ist.

## Hinweise und Einschränkungen für Avro-Streaming-Quellen
<a name="streaming-avro-notes"></a>

Die folgenden Hinweise und Einschränkungen gelten für Streaming-Quellen im Avro-Format:
+ Wenn die Schemaerkennung aktiviert ist, muss das Avro-Schema in die Nutzlast einbezogen werden. Wenn diese Option deaktiviert ist, sollte die Nutzlast nur Daten enthalten.
+ Einige Avro-Datentypen werden in Dynamic Frames nicht unterstützt. Sie können diese Datentypen nicht angeben, wenn Sie das Schema auf der Seite **Definieren eines Schemas** im Tabellenerstellungs-Assistenten der AWS Glue-Konsole definieren. Während der Schemaerkennung werden nicht unterstützte Typen im Avro-Schema wie folgt in unterstützte Typen konvertiert:
  + `EnumType => StringType`
  + `FixedType => BinaryType`
  + `UnionType => StructType`
+ Wenn Sie das Tabellenschema auf der Seite **Definieren eines Schemas** in der Konsole definieren, ist der implizierte Stammelementtyp für das Schema `record`. Wenn Sie einen anderen Stammelementtyp als `record` möchten, zum Beispiel `array` oder `map`, können Sie das Schema nicht mithilfe der Seite **Definieren eines Schemas** angeben. Stattdessen müssen Sie diese Seite überspringen und das Schema entweder als Tabelleneigenschaft oder im ETL-Skript angeben.
  + Um das Schema in den Tabelleneigenschaften anzugeben, füllen Sie den Assistenten zum Erstellen von Tabellen aus, bearbeiten Sie die Tabellendetails und fügen Sie unter **Tabelleneigenschaften** ein neues Schlüssel-Wert-Paar hinzu. Verwenden Sie den Schlüssel `avroSchema` und geben Sie ein Schema-JSON-Objekt für den Wert ein, wie im folgenden Screenshot gezeigt.  
![\[Unter der Überschrift Tabelleneigenschaften gibt es zwei Spalten mit Textfeldern. Die linke Spaltenüberschrift ist Schlüssel und die rechte Spaltenüberschrift ist Wert. Das key/value Paar in der ersten Zeile ist das classification/avro. The key/value Paar in der zweiten Zeile avroSchema/ {"type“ :"array“, "items“ :"string "}.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/table_properties_avro.png)
  + Um das Schema im ETL-Skript anzugeben, ändern Sie die `datasource0`-Zuweisungsanweisung und fügen Sie den Schlüssel `avroSchema` zum Argument `additional_options` hinzu, wie in den folgenden Python- und Scala-Beispielen gezeigt.

------
#### [ Python ]

    ```
    SCHEMA_STRING = ‘{"type":"array","items":"string"}’
    datasource0 = glueContext.create_data_frame.from_catalog(database = "database", table_name = "table_name", transformation_ctx = "datasource0", additional_options = {"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema": SCHEMA_STRING})
    ```

------
#### [ Scala ]

    ```
    val SCHEMA_STRING = """{"type":"array","items":"string"}"""
    val datasource0 = glueContext.getCatalogSource(database = "database", tableName = "table_name", redshiftTmpDir = "", transformationContext = "datasource0", additionalOptions = JsonOptions(s"""{"startingPosition": "TRIM_HORIZON", "inferSchema": "false", "avroSchema":"$SCHEMA_STRING"}""")).getDataFrame()
    ```

------

## Anwenden von Grok-Mustern auf Streaming-Quellen
<a name="create-table-streaming-grok"></a>

Sie können einen Streaming-ETL-Auftrag für eine Protokolldatenquelle erstellen und Grok-Muster verwenden, um die Protokolle in strukturierte Daten zu konvertieren. Der ETL-Auftrag verarbeitet die Daten dann als strukturierte Datenquelle. Sie geben die Grok-Muster an, die angewendet werden sollen, wenn Sie die Data-Catalog-Tabelle für die Streaming-Quelle erstellen.

Informationen zu Grok-Mustern und benutzerdefinierten Musterzeichenfolgenwerten finden Sie unter [Angepasste Grok-Classifier schreiben](custom-classifier.md#custom-classifier-grok).

**So fügen Sie der Data-Catalog-Tabelle (Konsole) Grok-Muster hinzu**
+ Verwenden Sie den Assistenten zum Erstellen von Tabellen, und erstellen Sie die Tabelle mit den in [Erstellen einer Data-Catalog-Tabelle für eine Streaming-Quelle](#create-table-streaming) angegebenen Parametern. Geben Sie als Datenformat Grok an, füllen Sie das Feld **Grok-Muster** aus und fügen Sie optional benutzerdefinierte Muster unter **Benutzerdefinierte Muster (optional)** hinzu.  
![\[*\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/grok-data-format-create-table.png)

  Drücken Sie nach jedem benutzerdefinierten Muster auf **Eingabe**.

**Um Grok-Muster zur Datenkatalogtabelle hinzuzufügen (API oder) AWS Glue AWS CLI**
+ Fügen Sie den `GrokPattern`-Parameter und optional den `CustomPatterns`-Parameter zu der `CreateTable`-API-Operation oder dem `create_table`-CLI-Befehl hinzu.

  ```
   "Parameters": {
  ...
      "grokPattern": "string",
      "grokCustomPatterns": "string",
  ...
  },
  ```

  Drücken Sie `grokCustomPatterns` als String aus und verwenden Sie „\$1 n“ als Trennzeichen zwischen Mustern.

  Nachfolgend finden Sie ein Beispiel für die Angabe dieser Parameter.  
**Example**  

  ```
  "parameters": {
  ...
      "grokPattern": "%{USERNAME:username} %{DIGIT:digit:int}",
      "grokCustomPatterns": "digit \d",
  ...
  }
  ```

## Definieren von Auftragseigenschaften für einen Streaming-ETL-Auftrag
<a name="create-job-streaming-properties"></a>

Wenn Sie in der AWS Glue-Konsole einen Streaming-ETL-Auftrag definieren, geben Sie die folgenden Streaming-spezifischen Eigenschaften an. Beschreibungen weiterer Auftragseigenschaften finden Sie unter [Definieren von Auftragseigenschaften für Spark-Aufträge](add-job.md#create-job). 

**IAM role (IAM-Rolle)**  
Geben Sie die AWS Identity and Access Management (IAM-) Rolle an, die für die Autorisierung von Ressourcen verwendet wird, die für die Ausführung des Jobs, den Zugriff auf Streaming-Quellen und den Zugriff auf Zieldatenspeicher verwendet werden.  
Für den Zugriff auf Amazon Kinesis Data Streams hängen Sie die `AmazonKinesisFullAccess` AWS verwaltete Richtlinie an die Rolle an oder fügen Sie eine ähnliche IAM-Richtlinie hinzu, die einen detaillierteren Zugriff ermöglicht. Beispielrichtlinien finden Sie unter [Steuern des Zugriffs auf Amazon Kinesis Data Streams-Ressourcen mithilfe von IAM](https://docs.aws.amazon.com/streams/latest/dev/controlling-access.html).  
Weitere Informationen über die Berechtigungen für die Ausführung von Aufträgen in AWS Glue finden Sie unter [Identitäts- und Zugriffsmanagement für AWS Glue](security-iam.md).

**Typ**  
Wählen Sie **Spark streaming (Spark-Streaming)**.

**AWS Glue-Version**  
Die AWS Glue-Version bestimmt die Versionen von Apache Spark und Python oder Scala, die für den Auftrag verfügbar sind. Treffen Sie eine Auswahl, die die für den Auftrag verfügbare Version von Python oder Scala angibt. AWS Glue Version 2.0 mit Python-3-Unterstützung ist die Standardeinstellung für Streaming-ETL-Aufträge.

**Wartungsfenster**  
Gibt ein Fenster an, in dem ein Streamingauftrag neu gestartet werden kann. Siehe [Wartungsfenster für AWS Glue Streaming](glue-streaming-maintenance.md).

**Zeitüberschreitung von Aufträgen**  
Geben Sie optional eine Dauer in Minuten ein. Der Standardwert ist leer.  
+ Streamingaufträge müssen einen Timeout-Wert von weniger als 7 Tagen oder 10 080 Minuten haben.
+ Wenn der Wert leer gelassen wird, wird der Auftrag nach 7 Tagen neu gestartet, sofern Sie kein Wartungsfenster eingerichtet haben. Wenn Sie ein Wartungsfenster eingerichtet haben, wird der Auftrag während des Wartungsfensters nach 7 Tagen neu gestartet.

**Datenquelle**  
Geben Sie die Tabelle an, die Sie in [Erstellen einer Data-Catalog-Tabelle für eine Streaming-Quelle](#create-table-streaming) erstellt haben.

**Datenziel**  
Führen Sie eine der folgenden Aktionen aus:  
+ Wählen Sie **Create tables in your data target (Tabellen in eigenem Datenziel erstellen)** und geben Sie die folgenden Eigenschaften für das Datenziel an.  
**Datastore**  
Wählen Sie Amazon S3 oder JDBC.  
**Format**  
Wählen Sie ein beliebiges Format aus. Für das Streaming werden alle unterstützt.
+ Wählen Sie **Use tables in the data catalog and update your data target (Tabellen im Data Catalog verwenden und Datenziel aktualisieren)** und wählen Sie eine Tabelle für einen JDBC-Datastore.

**Ausgabeschemadefinition**  
Führen Sie eine der folgenden Aktionen aus:  
+ Klicken Sie auf **Automatically detect schema of each record (Schema jedes Datensatzes automatisch erkennen)** um die Schemaerkennung zu aktivieren. AWS Glue bestimmt das Schema aus den Streamingdaten.
+ Klicken Sie auf **Specify output schema for all records (Ausgabeschema für alle Datensätze angeben)**, um das Ausgabeschema mithilfe der Transformation „Apply Mapping“ (Mapping anwenden) zu definieren.

**Script**  
Geben Sie optional Ihr eigenes Skript an oder ändern Sie das generierte Skript, um Operationen auszuführen, die von der Apache-Spark-Engine Structured Streaming unterstützt werden. Informationen zu den verfügbaren Vorgängen finden Sie unter [Operationen](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets) auf Streaming/Datasets. DataFrames

## Hinweise zu und Einschränkungen für Streaming-ETL
<a name="create-job-streaming-restrictions"></a>

Beachten Sie die folgenden Hinweise und Einschränkungen:
+ Auto-Dekomprimierung für das AWS Glue-Streaming von ETL-Aufträgen ist nur für die unterstützten Komprimierungstypen verfügbar. Beachten Sie auch das Folgende:
  + Das gerahmte Snappy bezieht sich auf das offizielle [Rahmen-Format](https://github.com/google/snappy/blob/main/framing_format.txt) für Snappy.
  + Deflate wird in der Glue-Version 3.0 unterstützt, nicht in der Glue-Version 2.0.
+ Wenn Sie die Schemaerkennung verwenden, können Sie keine Joins von Streamingdaten ausführen.
+ AWS Glue-Streaming von ETL-Aufträgen unterstützt nicht den Union-Datentyp für AWS Glue-Schemaregistrierung im Avro-Format.
+ Ihr ETL-Skript kann die nativen Transformationen von Apache Spark Structured Streaming in AWS Glue verwenden. Weitere Informationen finden Sie unter [Operationen beim Streamen DataFrames /Datasets auf](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets) der Apache Spark-Website oder. [AWS Glue PySpark transformiert Referenz](aws-glue-programming-python-transforms.md)
+ AWS Glue verwendet für das Streaming von ETL-Aufträgen Checkpoints zum Nachverfolgen der gelesenen Daten. Daher wird ein Auftrag, der angehalten und neu gestartet wurde, an dem Punkt fortgesetzt, an dem er im Stream beendet wurde. Wenn Sie Daten neu verarbeiten möchten, können Sie den Checkpoint-Ordner löschen, auf den im Skript verwiesen wird.
+ Auftragslesezeichen werden nicht unterstützt.
+ Zur Verwendung des erweiterten Fan-Out-Features von Kinesis Data Streams in Ihrem Auftrag lesen Sie [Verwendung von erweitertem Fan-Out in Kinesis-Streaming-Aufträgen](aws-glue-programming-etl-connect-kinesis-efo.md).
+ Wenn Sie eine Data Katalog-Tabelle verwenden, die aus AWS Glue Schema Registry erstellt wurde, wenn eine neue Schemaversion verfügbar wird, müssen Sie Folgendes tun, um das neue Schema widerzuspiegeln:

  1. Stoppen Sie die mit der Tabelle verknüpften Aufträge.

  1. Aktualisieren Sie das Schema für die Data Catalog-Tabelle.

  1. Starten Sie die mit der Tabelle verknüpften Aufträge neu.

# Datensatzabgleich mit AWS Lake Formation FindMatches
<a name="machine-learning"></a>

**Anmerkung**  
Der Datensatzabgleich ist derzeit in den folgenden Regionen der AWS Glue Konsole nicht verfügbar: Naher Osten (VAE), Europa (Spanien), Asien-Pazifik (Jakarta) und Europa (Zürich).

AWS Lake Formation bietet Funktionen für maschinelles Lernen, mit denen Sie benutzerdefinierte Transformationen zur Bereinigung Ihrer Daten erstellen können. Derzeit ist eine Transformation mit dem Namen verfügbar. FindMatches Die FindMatches Transformation ermöglicht es Ihnen, doppelte oder übereinstimmende Datensätze in Ihrem Datensatz zu identifizieren, selbst wenn die Datensätze keinen gemeinsamen eindeutigen Bezeichner haben und keine Felder exakt übereinstimmen. Dazu müssen Sie keinen Code schreiben oder wissen, wie maschinelles Lernen funktioniert. FindMatches kann bei vielen verschiedenen Problemen nützlich sein, wie zum Beispiel: 
+ **Abgleichen von Kunden**: Verknüpfen von Kundendatensätzen über verschiedene Kundendatenbanken hinweg, auch wenn viele Kundenfelder in den Datenbanken nicht exakt übereinstimmen (z. B. unterschiedliche Schreibweise der Namen, Adressunterschiede, fehlende oder ungenaue Daten usw.).
+ **Abgleichen von Produkten**: Abgleichen von Produkten in Ihrem Katalog mit anderen Produktquellen, beispielsweise des Produktkatalogs mit dem Katalog eines Wettbewerbers, wobei Einträge unterschiedlich strukturiert sind.
+ **Verbesserung der Betrugserkennung**: Identifizieren von doppelten Kundenkonten, um zu bestimmen, wann ein neu erstelltes Konto mit einem zuvor bekannten betrügerischen Benutzer übereinstimmt (oder übereinstimmen könnte).
+ **Andere Übereinstimmungsprobleme**: Übereinstimmung von Adressen, Filmen, Teilelisten usw. Wenn ein Mensch sich Ihre Datenbankzeilen ansehen und feststellen könnte, dass sie übereinstimmen, besteht im Allgemeinen eine sehr gute Chance, dass die FindMatches Transformation Ihnen helfen kann.

 Sie können diese Transformationen erstellen, wenn Sie einen Auftrag erstellen. Die von Ihnen erstellte Transformation basiert auf einem Quelldatenspeicherschema und Beispieldaten aus dem Quelldatensatz, denen Sie Labels zuweisen (wir bezeichnen diesen Prozess als „Trainieren” einer Transformation). Die von Ihnen mit einem Label versehenen Datensätze müssen im Quelldatensatz vorhanden sein. In diesem Prozess generieren wir eine Datei, die Sie labeln und dann wieder hochladen, woraus die Transformation in gewisser Weise lernen würde. Nachdem Sie Ihre Transformation gelernt haben, können Sie sie von Ihrem Spark-basierten AWS Glue Job (PySpark oder Scala Spark) aus aufrufen und in anderen Skripten mit einem kompatiblen Quelldatenspeicher verwenden. 

 Erstellte Transformationen werden in AWS Glue gespeichert. In der AWS Glue Konsole können Sie die von Ihnen erstellten Transformationen verwalten. Im Navigationsbereich unter **Datenintegration und ETL**, **Datenklassifizierungs-Tools > Datensatzabgleich**, können Sie Ihre Machine-Learning-Transformation bearbeiten und weiter unterrichten. Weitere Informationen zum Verwalten von Transformationen in der Konsole finden Sie unter [Arbeiten mit Machine-Learning-Transformationen](console-machine-learning-transforms.md). 

**Anmerkung**  
AWS Glue FindMatches Jobs der Version 2.0 verwenden den Amazon S3 S3-Bucket`aws-glue-temp-<accountID>-<region>`, um temporäre Dateien zu speichern, während die Transformation Daten verarbeitet. Sie können diese Daten, nachdem die Ausführung abgeschlossen wurde, entweder manuell oder durch Festlegen einer Amazon S3-Lebenszyklusregel löschen.

## Arten von Machine Learning-Transformationen
<a name="machine-learning-transforms"></a>

Sie können Machine Learning-Transformationen erstellen, um Ihre Daten zu bereinigen. Sie können diese Transformationen aus Ihrem ETL-Skript heraus aufrufen. Ihre Daten werden von Transformation zu Transformation in einer Datenstruktur namens a *DynamicFrame*weitergeleitet. Dabei handelt es sich um eine Erweiterung von Apache Spark SQL`DataFrame`. Der `DynamicFrame` enthält Ihre Daten und Sie verweisen auf das Schema, um Ihre Daten zu verarbeiten.

Die folgenden Arten von Machine Learning-Transformationen sind verfügbar:

*Suche nach Übereinstimmungen*  
Sucht doppelte Datensätze in den Quelldaten. Zum Trainieren dieser Machine Learning-Transformation kennzeichnen Sie durch entsprechendes Labeling von Beispieldatensätzen, welche Zeilen übereinstimmen. Die Machine Learning-Transformation lernt immer besser, welche Zeilen Übereinstimmungen darstellen sollten, je mehr Sie sie mit gelabelten Beispieldaten trainieren. Abhängig davon, wie Sie die Transformation konfigurieren, ist eine der folgenden Ausgaben möglich:  
+ Eine Kopie der Eingabetabelle sowie eine `match_id`-Spalte mit Werten, die übereinstimmende Gruppen von Datensätzen angeben. Die `match_id`-Spalte ist ein beliebiger Bezeichner. Alle Datensätze mit derselben `match_id` wurden als übereinstimmend identifiziert. Datensätze mit anderer `match_id`stimmen nicht überein.
+ Eine Kopie der Eingabetabelle, in der doppelte Zeilen entfernt wurden. Wenn mehrere Duplikate gefunden werden, wird der Datensatz mit dem niedrigsten Primärschlüssel beibehalten.

*Inkrementelle Übereinstimmungen finden*  
Die Transformation „Übereinstimmungen suchen“ kann auch konfiguriert werden, um Übereinstimmungen in den vorhandenen und inkrementellen Frames zu finden und als Ausgabe eine Spalte zurückzugeben, die eine eindeutige ID pro Übereinstimmungsgruppe enthält.   
Weitere Informationen finden Sie unter: [Inkrementelle Übereinstimmungen finden](machine-learning-incremental-matches.md)

### Verwenden der FindMatches Transformation
<a name="machine-learning-find-matches"></a>

Sie können mit der `FindMatches`-Transformation nach doppelten Datensätzen in den Quelldaten suchen. Zur Unterstützung beim Trainieren der Transformation wird eine Labeling-Datei generiert oder zur Verfügung gestellt.

**Anmerkung**  
Derzeit werden `FindMatches`-Transformationen, die einen benutzerdefinierten Verschlüsselungsschlüssel verwenden, in den folgenden Regionen nicht unterstützt:  
Asien Pazifik (Osaka) – `ap-northeast-3`

 Um mit der FindMatches Transformation zu beginnen, können Sie die folgenden Schritte ausführen. Ein ausführlicheres und detaillierteres Beispiel finden Sie im **AWS Big Data-Blog**: [Harmonisieren Sie die Nutzung von Daten AWS Glue und maschinelles Lernen, um AWS Lake Formation FindMatches eine 360-Grad-Ansicht für Kunden zu erstellen](https://aws.amazon.com/blogs/big-data/harmonize-data-using-aws-glue-and-aws-lake-formation-findmatches-ml-to-build-a-customer-360-view/). 

#### Erste Schritte mit der Transformation zur Suche nach Übereinstimmungen
<a name="machine-learning-find-mathes-workflow"></a>

Führen Sie als Einstieg in die `FindMatches`-Transformation die folgenden Schritte aus:

1. Erstellen Sie im eine Tabelle AWS Glue Data Catalog für die Quelldaten, die bereinigt werden sollen. Weitere Informationen zum Erstellen eines Crawlers finden Sie unter [Arbeiten mit Crawlern in der AWS Glue-Konsole](https://docs.aws.amazon.com/glue/latest/dg/console-crawlers.html).

   Wenn es sich bei Ihren Quelldaten um eine textbasierte Datei handelt, wie z. B. eine CSV-Datei (durch Kommas voneinander getrennte Werte), berücksichtigen Sie Folgendes: 
   + Bewahren Sie die CSV-Datei Ihres Eingabedatensatzes und die Labeling-Datei in separaten Ordnern auf. Andernfalls sieht der AWS Glue-Crawler sie möglicherweise als mehrere Teile derselben Tabelle an und legt die Tabellen in Data Catalog nicht richtig an. 
   + Außer für CSV-Dateien, die ausschließlich ASCII-Zeichen enthalten, stellen Sie sicher, dass für die CSV-Dateien UTF-8 ohne BOM-Codierung (Byte Order Mark, Markierung der Bytereihenfolge) verwendet wird. Microsoft Excel fügt am Anfang der UTF-8-CSV-Dateien häufig eine BOM ein. Um diese zu entfernen, öffnen Sie die CSV-Datei in einem Texteditor und speichern Sie sie mit der Option **UTF-8 without BOM (UTF-8 ohne BOM)** neu. 

1. Erstellen Sie in der AWS Glue-Konsole einen Auftrag und wählen Sie als Transformationstyp **Find matches (Übereinstimmungen suchen)** aus.
**Wichtig**  
Die Datenquellentabelle, die Sie für den Auftrag auswählen, darf nicht mehr als 100 Spalten enthalten.

1. Weisen Sie AWS Glue an, eine Labeling-Datei zu generieren, indem Sie **Generate labeling file (Labeling-Datei generieren)** auswählen. AWS Glue verwendet den ersten Durchgang bei der Gruppierung ähnlicher Datensätze für jede `labeling_set_id`, sodass Sie diese Gruppierungen überprüfen können. Sie kennzeichnen Übereinstimmungen in der Spalte `label`.
   + Wenn Sie bereits über eine Labeling-Datei, also ein Beispiel von Datensätzen mit übereinstimmenden Zeilen, verfügen, laden Sie die Datei in Amazon Simple Storage Service (Amazon S3) hoch. Weitere Informationen über das Format der Labeling-Datei finden Sie unter [Format der Labeling-Datei](#machine-learning-labeling-file). Fahren Sie mit Schritt 4 fort.

1. Laden Sie die Labeling-Datei herunter und labeln Sie die Datei wie im Abschnitt [Labeling](#machine-learning-labeling) beschrieben.

1. Laden Sie die korrigierte Labeling-Datei hoch. AWS Glue führt Aufgaben zum Trainieren der Transformation in Bezug auf die Suche nach Übereinstimmungen aus.

   Wählen Sie auf der Seite mit der Liste **Machine learning transforms (Maschine Learning-Transformationen)** die Registerkarte **History (Verlauf)** aus. Diese Seite gibt an, wann AWS Glue die folgenden Aufgaben ausführt:
   + **Import labels (Labels importieren)**
   + **Export labels (Labels exportieren)**
   + **Generate labels (Labels generieren)**
   + **Estimate quality (Qualität beurteilen)**

1. Um eine bessere Transformation zu erstellen, können Sie die gelabelte Datei iterativ herunterladen, kennzeichnen und wieder hochladen. Bei den anfänglichen Ausführungen werden möglicherweise sehr viel mehr Datensätze falsch zugeordnet. Aber Sie können die Lernfähigkeit von AWS Glue durch fortgesetztes Überprüfen der Labeling-Datei trainieren.

1. Beurteilen und optimieren Sie Ihre Transformation, indem Sie die Leistung und Ergebnisse der Suche nach Übereinstimmungen beurteilen. Weitere Informationen finden Sie unter [Optimieren von Machine Learning-Transformationen in AWS Glue](add-job-machine-learning-transform-tuning.md).

#### Labeling
<a name="machine-learning-labeling"></a>

Wenn `FindMatches` eine Labeling-Datei generiert, werden Datensätze aus Ihrer Quelltabelle ausgewählt. `FindMatches` erkennt basierend auf vorherigem Training die wertvollsten Datensätze, von denen es lernen kann.

Unter *Labeling* ist das Bearbeiten einer Labeling-Datei (z. B. einer Tabellenkalkulation wie aus Microsoft Excel) und das Hinzufügen von Kennungen oder Labels zur Spalte `label` zu verstehen, in der übereinstimmende und nicht übereinstimmende Datensätze identifiziert werden. Es ist wichtig, dass in Ihren Quelldaten klar und konsistent definiert ist, woran eine Übereinstimmung zu erkennen ist. `FindMatches` lernt davon, welche Datensätze von Ihnen als Übereinstimmungen angesehen werden, sowie anhand Ihrer Entscheidungen, wie doppelte Datensätze zu finden sind.

Wenn eine Labeling-Datei von `FindMatches` geniert wird, werden ca. 100 Datensätze angelegt. Diese 100 Datensätze sind in der Regel in 10 *Labeling-Sätze* unterteilt, wobei jeder Labeling-Satz durch eine eindeutige `labeling_set_id` identifiziert wird, die von `FindMatches` generiert wird. Jeder Labeling-Satz sollte unabhängig von den anderen Labeling-Sätzen als separate Labeling-Aufgabe betrachtet werden. Ihre Aufgabe besteht darin, übereinstimmende und nicht übereinstimmende Datensätze innerhalb jedes Labeling-Satzes zu identifizieren.

##### Tipps zum Bearbeiten von Labeling-Dateien in einer Tabellenkalkulation
<a name="machine-learning-labeling-tips"></a>

Beim Bearbeiten der Labeling-Datei in einer Tabellenkalkulationsanwendung sollten Sie Folgendes berücksichtigen:
+ Die Datei wird möglicherweise nicht mit vollständig erweiterten Spaltenfeldern geöffnet. Sie müssen möglicherweise die Spalten `labeling_set_id` und `label` erweitern, um den Inhalt in diesen Zellen sichtbar zu machen.
+ Wenn die Primärschlüsselspalte eine Zahl ist, z. B. ein `long`-Datentyp, legt die Kalkulationstabelle sie möglicherweise als Zahl aus und ändert den Wert. Dieser Schlüssewertl muss als Text behandelt werden. Um dieses Problem zu beheben, formatieren Sie alle Zellen in der Primärschlüsselspalte als **Text data (Textdaten)**.

#### Format der Labeling-Datei
<a name="machine-learning-labeling-file"></a>

Die Labeling-Datei, die von AWS Glue generiert wird, um Ihre `FindMatches`-Transformation zu trainieren, verwendet das folgende Format. Wenn Sie Ihre eigene Datei für AWS Glue generieren, muss sie ebenfalls diesem Format folgen:
+ Sie ist eine CSV-Datei (durch Kommas voneinander getrennte Werte). 
+ Sie muss in `UTF-8` codiert sein. Wenn Sie die Datei mit Microsoft Windows bearbeiten, wird sie möglicherweise mit `cp1252` codiert.
+ Sie muss sich an einem Amazon-S3-Speicherort befinden, damit sie an AWS Glue übergeben werden kann.
+ Sie sollten eine moderate Anzahl an Zeilen für jede Labeling-Aufgabe verwenden. Es werden 10–20 Zeilen pro Aufgabe empfohlen, obwohl 2–30 Zeilen pro Aufgabe zulässig sind. Aufgaben, die größer als 50 Zeilen sind, werden nicht empfohlen und können zu schlechten Ergebnissen oder Systemausfällen führen.
+ Wenn Sie bereits Daten mit Labeling haben, die aus Paaren von Datensätzen bestehen, die als „Übereinstimmung“ oder „Keine Übereinstimmung“ gekennzeichnet sind, ist dies in Ordnung. Diese Paare mit Labeling können als Labeling-Sätze der Größe 2 dargestellt werden. Bezeichnen Sie in diesem Fall beide Datensätze beispielsweise mit dem Buchstaben „A“, wenn sie übereinstimmen, aber bezeichnen Sie einen als „A“ und einen als „B“, wenn sie nicht übereinstimmen.
**Anmerkung**  
 Aufgrund ihrer zusätzlichen Spalten weist die Labeling-Datei ein anderes Schema als die Datei mit den Quelldaten auf. Platzieren Sie die Labeling-Datei in einem anderen Ordner als die CSV-Eingabedatei der Transformation, sodass der AWS Glue-Crawler sie beim Erstellen von Tabellen in Data Catalog nicht berücksichtigt. Andernfalls repräsentieren die vom AWS Glue-Crawler erstellten Tabellen Ihre Daten möglicherweise nicht richtig. 
+ Die ersten beiden Spalten (`labeling_set_id`, `label`) werden für AWS Glue benötigt. Die verbleibenden Spalten müssen mit dem Schema der zu verarbeitenden Daten übereinstimmen.
+ Sie identifizieren für jede `labeling_set_id` alle übereinstimmenden Datensätze unter Verwendung desselben Labels. Ein Label ist eine eindeutige Zeichenfolge, die in die Spalte `label` platziert wird. Wir raten zur Verwendung von Labels mit einfachen Zeichen, z. B. A, B, C usw. Labels unterscheiden zwischen Groß- und Kleinschreibung und werden in die Spalte `label` eingegeben.
+ Zeilen, die dieselbe `labeling_set_id` und dasselbe Label enthalten, werden als Übereinstimmung bezeichnet.
+ Zeilen, die dieselbe `labeling_set_id` und ein anderes Label enthalten, werden als *nicht* übereinstimmend bezeichnet.
+ Zeilen, die eine andere `labeling_set_id` enthalten, werden so gewertet, dass sie keine Informationen für oder gegen eine Übereinstimmung enthalten.

  Nachfolgend finden Sie ein Beispiel für das Kennzeichnen der Daten mit Labels:    
<a name="table-labeling-data"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/machine-learning.html)
+ Im obigen Beispiel identifizieren wir John/Johnny/Jon Doe as being a match and we teach the system that these records do not match Jane Smith. Separately, we teach the system that Richard and Rich Jones are the same person, but that these records are not a match to Sarah Jones/Jones -Walker und Richie Jones Jr.
+ Wie Sie sehen, ist der Umfang der Labels auf die `labeling_set_id` beschränkt. Labels überschreiten daher keine `labeling_set_id`-Grenzen. Beispiel: Label „A“ für `labeling_set_id` 1 hat keinen Bezug zu Label „A“ für `labeling_set_id` 2.
+ Wenn ein Datensatz keine Übereinstimmungen innerhalb eines Labeling-Satzes enthält, weisen Sie ihm ein eindeutiges Label zu. Jane Smith entspricht beispielsweise keinem Datensatz im Beschriftungssatz ABC123, sodass es der einzige Datensatz in diesem Beschriftungssatz mit der Bezeichnung B ist.
+ Der Beschriftungssatz "GHI678" zeigt, dass ein Beschriftungssatz nur aus zwei Datensätzen bestehen kann, denen dieselbe Bezeichnung zugewiesen wurde, um zu zeigen, dass sie übereinstimmen. Ähnlich zeigt „XYZABC“ zwei Datensätze mit unterschiedlichen Labels, um zu zeigen, dass sie nicht übereinstimmen.
+ Beachten Sie, dass manchmal ein Labeling-Satz keine Übereinstimmungen enthalten kann (d. h. Sie geben jedem Datensatz im Labeling-Satz ein anderes Label), oder ein Labeling-Satz könnte „alle gleich“ sein (Sie haben allen das gleiche Label gegeben). Dies ist in Ordnung, solange Ihre Labeling-Sätze zusammen Beispiele für Datensätze enthalten, die nach Ihren Kriterien „identisch“ sind und nicht.

**Wichtig**  
Vergewissern Sie sich, dass die IAM-Rolle, die Sie an AWS Glue übergeben, Zugriff auf den Amazon-S3-Bucket mit der Labeling-Datei hat. Laut Konvention erteilen AWS Glue-Richtlinien die Berechtigung für Amazon-S3-Buckets oder -Ordner, deren Namen das Präfix **aws-glue-** enthalten. Wenn sich die Labeling-Dateien an einem anderen Speicherort befinden, fügen Sie der IAM-Rolle die Berechtigung für diesen Speicherort hinzu.

# Optimieren von Machine Learning-Transformationen in AWS Glue
<a name="add-job-machine-learning-transform-tuning"></a>

Sie können Ihre Machine Learning-Transformationen in AWS Glue optimieren, um die Ergebnisse Ihrer Datenbereinigungsaufträge zur Erreichung Ihrer Ziele zu verbessern. Zur Verbesserung der Transformation können Sie ihr beibringen, eine Menge von Kennzeichnungen zu generieren, Kennzeichnungen hinzufügen und diese Schritte dann so oft wiederholen, bis die gewünschten Ergebnisse erzielt werden. Sie können eine Optimierung auch durch das Ändern einiger Machine-Learning-Parameter herbeiführen. 

Weitere Informationen zu Machine Learning-Transformationen finden Sie unter [Datensatzabgleich mit AWS Lake Formation FindMatches](machine-learning.md).

**Topics**
+ [Machine Learning-Messungen](machine-learning-terminology.md)
+ [Entscheidung zwischen Präzision und Sensitivität](machine-learning-precision-recall-tradeoff.md)
+ [Entscheidung zwischen Genauigkeit und Kosten](machine-learning-accuracy-cost-tradeoff.md)
+ [Schätzen der Qualität von Übereinstimmungen mithilfe von Match-Konfidenzwerten](match-scoring.md)
+ [Schulen der Transformation zum Suchen von Übereinstimmungen](machine-learning-teaching.md)

# Machine Learning-Messungen
<a name="machine-learning-terminology"></a>

Um die Messungen zu verstehen, die zur Optimierung der Machine Learning-Transformation verwendet werden, sollten Sie mit der folgenden Terminologie vertraut sein:

**Tatsächliches Positiv (TP)**  
Eine Datenübereinstimmung, die die Transformation korrekterweise ermittelt hat, manchmal auch als *Treffer* bezeichnet.

**Tatsächliches Negativ (TN)**  
Eine Nicht-Übereinstimmung der Daten, die die Transformation korrekterweise abgelehnt hat.

**Falsches Positiv (FP)**  
Eine Nicht-Übereinstimmung der Daten, die die Transformation fälschlicherweise als Übereinstimmung klassifiziert hat, manchmal auch als *Fehlalarm* bezeichnet.

**Falsches Negativ (FN)**  
Eine Übereinstimmung in den Daten, die die Transformation nicht gefunden hat, manchmal auch als *Miss* bezeichnet.

Weitere Informationen zur Terminologie, die beim Machine Learning verwendet wird, finden Sie unter[Confusion matrix](https://en.wikipedia.org/wiki/Confusion_matrix) in Wikipedia.

Zur Optimierung Ihrer Machine Learning-Transformationen können Sie den Wert der folgenden Messungen innerhalb der **Advanced properties (Erweiterten Eigenschaften)** der Transformation ändern.
+ **Precision (Genauigkeit)** misst, wie gut die Transformation echte positive Ergebnisse unter der Gesamtzahl der Datensätze findet, die sie als positiv identifiziert (echte positive und falsche positive). Weitere Informationen finden Sie unter [Precision and recall](https://en.wikipedia.org/wiki/Precision_and_recall) in Wikipedia.
+ **Recall (Sensitivität)** misst, wie gut die Transformation die tatsächlichen Positive aus der Gesamtzahl der Datensätze in den Quelldaten ermittelt. Weitere Informationen finden Sie unter [Precision and recall](https://en.wikipedia.org/wiki/Precision_and_recall) in Wikipedia.
+ **Accuracy (Genauigkeit)** misst, wie gut die Transformation tatsächliche Positive und tatsächliche Negative findet. Eine Erhöhung der Genauigkeit erfordert mehr maschinelle Ressourcen und erhöht die Kosten. Sie resultiert aber auch in einer erhöhten Sensitivität. Weitere Informationen finden Sie unter [Accuracy and precision](https://en.wikipedia.org/wiki/Accuracy_and_precision#In_information_systems) in Wikipedia.
+ **Cost (Kosten)** misst, wie viele Datenverarbeitungsressourcen (und damit Geld) zum Ausführen der Transformation verbraucht werden.

# Entscheidung zwischen Präzision und Sensitivität
<a name="machine-learning-precision-recall-tradeoff"></a>

Jede `FindMatches`-Transformation enthält einen `precision-recall`-Parameter. Sie verwenden diesen Parameter, um einen der folgenden Schritte festzulegen:
+ Wenn Sie sich Gedanken darüber machen, dass die Transformation fälschlicherweise zwei Datensätze als übereinstimmend bezeichnet, obwohl sie tatsächlich nicht übereinstimmen, dann sollten Sie die *Präzision* verstärken. 
+ Wenn Sie sich Gedanken darüber machen, dass die Transformation zwei Datensätze nicht als übereinstimmend erkennt, die tatsächlich übereinstimmen, sollten Sie die *Sensitivität* verstärken.

Sie können diesen Trade-off auf der AWS Glue-Konsole oder mithilfe der Machine Learning-API-Operationen von AWS Glue vornehmen.

**Wann Sie die Präzision erhöhen sollten**  
Erhöhen Sie die Präzision, wenn Sie sich Gedanken über das Risiko machen, dass`FindMatches` übereinstimmenden Datensätze anzeigt, obwohl sie in Wirklichkeit nicht übereinstimmen. Um die Präzision zu erhöhen, wählen Sie einen *höheren* Wert für den Trade-off zwischen Präzision und Sensitivität. Wenn Sie einen höheren Wert einstellen, benötigt die`FindMatches`-Transformation weitere Nachweise für die Entscheidung, ob ein Datensatzpaar übereinstimmt. Die Transformation wird dahingehend optimiert, dass sie feststellt, dass Datensätze nicht übereinstimmen.

Nehmen Sie zum Beispiel an, dass Sie `FindMatches` zur Erkennung von doppelten Elementen in einem Video-Katalog verwenden und einen höheren Wert des Präzisions-Sensitivitäts-Wert für die Transformation eingeben. Wenn Ihre Transformation fälschlicherweise feststellt, dass *Star Wars: Eine neue Hoffnung* identisch ist mit *Star Wars: Das Imperium schlägt zurück*, kann es passieren, dass ein Kunde *Eine neue Hoffnung* möchte und stattdessen *Das Imperium schlägt zurück* angezeigt bekommt. Dies wäre eine schlechte Kundenerfahrung. 

Wenn die Transformation jedoch nicht erkennt, dass *Star Wars: Eine neue Hoffnung* und *Star Wars: Episode IV – Eine neue Hoffnung* identisch sind, ist der Kunde vielleicht zunächst verwirrt, erkennt dann jedoch, dass sie identisch sind. Es wäre zwar ein Fehler, aber weniger schlimm als im vorherigen Szenario.

**Wann Sie die Sensitivität erhöhen sollten**  
Erhöhen Sie die Sensitivität, wenn Sie sich Gedanken über das Risiko machen, dass die `FindMatches`-Transformationsergebnisse möglicherweise einen Datensatz nicht erkennen, der tatsächlich übereinstimmt. Um die Sensitivität zu erhöhen, wählen Sie einen *niedrigeren* Wert für den Präzisions-Sensitivitäts-Trade-off. Bei einem niedrigeren Wert sind für die `FindMatches`-Transformation weniger Nachweise für die Entscheidung erforderlich, dass ein Paar von Datensätzen übereinstimmt. Die Transformation ist dahingehend optimiert, dass sie Datensätze als übereinstimmend ansieht.

Dies kann zum Beispiel eine Priorität für eine Sicherheitsorganisation sein. Angenommen, Sie gleichen eine Liste von Kunden mit bekannten Betrügern ab und es ist wichtig festzustellen, ob ein Kunde ein Betrüger ist. Sie verwenden `FindMatches`, um die Liste der Betrüger mit der Liste der Kunden abzugleichen. Jedes Mal, wenn `FindMatches` eine Übereinstimmung zwischen den beiden Listen feststellt, wird ein menschlicher Prüfer zugewiesen, um zu prüfen, ob es sich bei der betreffenden Person tatsächlich um einen Betrüger handelt. Für Ihre Organisation ist vielleicht eine erhöhte Sensitivität wichtiger als die Präzision. Mit anderen Worten: Sie ziehen eine manuelle Prüfung durch die Auditoren vor und weisen einige Fälle zurück, in denen der Kunde kein Betrüger ist, als das Risiko einzugehen, einen Kunden nicht zu identifizieren, der tatsächlich auf der Betrügerliste steht.

**So verbessern Sie sowohl die Präzision als auch die Sensitivität**  
Die beste Möglichkeit zur Verbesserung der Präzision und Sensitivität besteht darin, mehr Daten zu kennzeichnen. Je mehr Daten Sie kennzeichnen, desto mehr nimmt die allgemeine Genauigkeit der `FindMatches`-Transformation zu und verbessert damit sowohl die Präzision als auch die Sensitivität. Selbst bei der genauesten Transformation gibt es immer einen grauen Bereich, in dem Sie ausprobieren müssen, ob besser die Präzision oder die Sensitivität erhöht oder ein Wert in der Mitte gewählt werden soll. 

# Entscheidung zwischen Genauigkeit und Kosten
<a name="machine-learning-accuracy-cost-tradeoff"></a>

Jede `FindMatches`-Transformation enthält einen `accuracy-cost`-Parameter. Sie können diesen Parameter verwenden, um einen der folgenden Punkte festzulegen:
+ Wenn Sie mehr Wert darauf legen, dass die Transformation korrekt meldet, dass zwei Datensätze übereinstimmen, sollten Sie den Faktor *Genauigkeit* verstärken.
+ Wenn Sie mehr Wert auf die Kosten oder die Geschwindigkeit der Ausführung der Transformation legen, sollten Sie den Faktor *geringere Kosten* verstärken.

Sie können diesen Trade-off auf der AWS Glue-Konsole oder mithilfe der Machine Learning-API-Operationen von AWS Glue vornehmen.

**Wann Sie der Genauigkeit den Vorzug geben sollten**  
Verstärken Sie die Genauigkeit, wenn Sie sich Gedanken über das Risiko machen, dass die `find matches`-Ergebnisse keine Übereinstimmungen enthalten. Um die Genauigkeit zu verstärken, wählen Sie einen *höheren* Genauigkeits-Kosten-Trade-off. Bei einem höheren Wert benötigt die`FindMatches`-Transformation mehr Zeit, um eine gründlichere Suche nach korrekt übereinstimmenden Datensätzen durchzuführen. Beachten Sie, dass dieser Parameter nicht die Wahrscheinlichkeit reduziert, dass ein nicht übereinstimmendes Datensatzpaar als übereinstimmend erkannt wird. Die Transformation ist dahingehend optimiert, dass sie mehr Zeit beim Suchen der Übereinstimmungen aufwendet.

**Wann Sie die Kosten verstärken sollten**  
Verstärken Sie den Faktor „Kosten“, wenn Sie sich über die Kosten für die Ausführung der `find matches`-Transformation Gedanken machen und weniger darüber, wie viele Übereinstimmungen gefunden werden. Um die Kosten zu verstärken, wählen Sie einen *niedrigeren* Genauigkeits-Kosten-Trade-off. Bei einem niedrigeren Wert werden für die Ausführung der `FindMatches`-Transformation weniger Ressourcen benötigt. Die Transformation ist dahingehend optimiert, dass sie weniger Übereinstimmungen findet. Wenn die Ergebnisse bei der Verstärkung der niedrigeren Kosten akzeptabel sind, wählen Sie diese Einstellung.

**So verstärken Sie sowohl den Faktor Genauigkeit als auch geringere Kosten**  
Es benötigt mehr Rechnerzeit, um mehrere Datensatzpaare daraufhin zu prüfen, ob sie möglicherweise übereinstimmen. Wenn Sie die Kosten senken möchten, ohne die Qualität zu mindern, empfehlen wir folgende Schritte: 
+ Entfernen Sie Datensätze in Ihrer Datenquelle, bei denen Ihnen nicht wichtig ist, ob sie übereinstimmen oder nicht.
+ Entfernen Sie Spalten aus Ihrer Datenquelle, bei denen Sie sicher sind, dass sie bei der Entscheidungsfindung, ob ein Datensatzpaar übereinstimmt, nicht wichtig sind. Eine gute Möglichkeit, zu entscheiden, welche Spalten dies betrifft, ist zu überlegen, welche Spalten Ihre eigene Entscheidungsfindung darüber, ob eine Datensatzmenge übereinstimmt, nicht beeinflussen würden.

# Schätzen der Qualität von Übereinstimmungen mithilfe von Match-Konfidenzwerten
<a name="match-scoring"></a>

Übereinstimmungswerte bieten eine Schätzung der Qualität der gefundenen Treffer, FindMatches um zwischen übereinstimmenden Datensätzen zu unterscheiden, bei denen das Modell des maschinellen Lernens sehr sicher, unsicher oder unwahrscheinlich ist. Ein Match-Konfidenzwert liegt zwischen 0 und 1, wobei ein höherer Punktestand eine höhere Ähnlichkeit bedeutet. Durch die Untersuchung von Match-Konfidenzwerten können Sie zwischen Clustern von Übereinstimmungen unterscheiden, in denen das System sehr zuversichtlich ist (die Sie möglicherweise zusammenführen möchten), Clustern, bei denen das System unsicher ist (die Sie möglicherweise von einem Menschen überprüfen lassen wollen) und Clustern, die das System für unwahrscheinlich hält (die Sie möglicherweise ablehnen).

Möglicherweise möchten Sie Ihre Trainingsdaten in Situationen anpassen, in denen Sie einen hohen Match-Konfidenzwert sehen, aber feststellen, dass es keine Übereinstimmungen gibt, oder in denen Sie eine niedrige Punktzahl sehen, aber feststellen, dass es tatsächlich Übereinstimmungen gibt.

Konfidenzwerte sind besonders nützlich, wenn umfangreiche industrielle Datensätze vorliegen, bei denen es nicht möglich ist, jede FindMatches Entscheidung zu überprüfen.

Match-Konfidenzwerte sind in AWS Glue Version 2.0 oder höher verfügbar.

## Generieren von Match-Konfidenzwerten
<a name="specifying-match-scoring"></a>

Sie können Match-Konfidenzwerte generieren, indem Sie beim Aufrufen der `FindMatches`- oder `FindIncrementalMatches`-API den booleschen Wert von `computeMatchConfidenceScores` auf „True“ setzen.

AWS Glue fügt der Ausgabe einen neuen `column match_confidence_score` hinzu.

## Beispiele für Match-Scoring
<a name="match-scoring-examples"></a>

Betrachten Sie beispielsweise die folgenden übereinstimmenden Datensätze:

**Ergebnis >= 0,9**  
Zusammenfassung der übereinstimmenden Datensätze:

```
  primary_id  |   match_id  | match_confidence_score

3281355037663    85899345947   0.9823658302132061
1546188247619    85899345947   0.9823658302132061
```

Details:

![\[Ein Beispiel für eine Routing-Tabelle mit einem Internet-Gateway.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/match_score1.png)


In diesem Beispiel sehen wir , dass zwei Datensätze sehr ähnlich sind und `display_position`, `primary_name` und `street name` gemeinsam haben. 

**Ergebnis >= 0,8 und Ergebnis < 0,9**  
Zusammenfassung der übereinstimmenden Datensätze:

```
  primary_id  |   match_id  | match_confidence_score

309237680432     85899345928   0.8309852373674638
3590592666790    85899345928   0.8309852373674638
343597390617     85899345928   0.8309852373674638
249108124906     85899345928   0.8309852373674638
463856477937     85899345928   0.8309852373674638
```

Details:

![\[Ein Beispiel für eine Routing-Tabelle mit einem Internet-Gateway.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/match_score2.png)


In diesem Beispiel sehen wir, dass diese Datensätze `primary_name` und `country` gemeinsam haben.

**Ergebnis >= 0,6 und Ergebnis < 0,7**  
Zusammenfassung der übereinstimmenden Datensätze:

```
  primary_id  |   match_id  | match_confidence_score

2164663519676    85899345930   0.6971099896480333
 317827595278    85899345930   0.6971099896480333
 472446424341    85899345930   0.6971099896480333
3118146262932    85899345930   0.6971099896480333
 214748380804    85899345930   0.6971099896480333
```

Details:

![\[Ein Beispiel für eine Routing-Tabelle mit einem Internet-Gateway.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/match_score3.png)


In diesem Beispiel sehen wir, dass diese Datensätze nur `primary_name` gemeinsam haben.

 Weitere Informationen finden Sie unter:
+ [Schritt 5: Hinzufügen und Ausführen eines Auftrags mit Ihrer Machine Learning-Transformation](machine-learning-transform-tutorial.md#ml-transform-tutorial-add-job)
+ PySpark: [FindMatches Klasse](aws-glue-api-crawler-pyspark-transforms-findmatches.md)
+ PySpark: [FindIncrementalMatches Klasse](aws-glue-api-crawler-pyspark-transforms-findincrementalmatches.md)
+ Scala: [FindMatches Klasse](glue-etl-scala-apis-glue-ml-findmatches.md)
+ Scala: [FindIncrementalMatches Klasse](glue-etl-scala-apis-glue-ml-findincrementalmatches.md)

# Schulen der Transformation zum Suchen von Übereinstimmungen
<a name="machine-learning-teaching"></a>

Jede `FindMatches`-Transformation muss lernen, was als Übereinstimmung angesehen werden sollte und was nicht. Sie schulen die Transformation, indem Sie einer Datei Kennzeichnungen hinzufügen und Ihre Auswahl zu AWS Glue hochladen. 

Sie können diese Kennzeichnungen in der AWS Glue-Konsole oder mithilfe der AWS Glue Machine Learning-API-Operationen orchestrieren.

**Wie oft soll ich Kennzeichnungen hinzufügen? Wie viele Kennzeichnungen benötige ich?**  
Die Antworten auf diese Fragen sind meistens Ihre eigene Entscheidung. Sie müssen bewerten, ob `FindMatches` die Genauigkeitsstufe liefert, die Sie benötigen, und ob sich der zusätzliche Kennzeichnungsaufwand für Sie lohnt. Die beste Möglichkeit, dies zu entscheiden, besteht darin, die Metriken „Präzision“, „Sensitivität“ und „Fläche unter der Sensitivitätskurve“ zu betrachten, die Sie generieren können, wenn Sie die Option **Estimate quality (Qualität schätzen)** in der AWS Glue-Konsole wählen. Nachdem Sie weitere Aufgabengruppen gekennzeichnet haben, führen Sie diese Metriken erneut aus und überprüfen Sie, ob sie sich verbessert haben. Wenn Sie nach der Kennzeichnung einiger Aufgabengruppen keine Verbesserung der Ihnen wichtigen Metriken feststellen können, hat die Transformationsqualität möglicherweise ein Plateau erreicht.

**Warum werden sowohl die Kennzeichnung „tatsächliches Positiv“ und „tatsächliches Negativ“ benötigt?**  
Die `FindMatches`-Transformation benötigt sowohl positive als auch negative Beispiele, um zu lernen, was für Sie eine Übereinstimmung ist. Wenn Sie von `FindMatches` generierte Trainingsdaten kennzeichnen (z. B. mithilfe der Option**I do not have labels (Ich habe keine Kennzeichnungen)**, versucht `FindMatches`, eine Reihe von „Kennzeichnungsgruppen-IDs“ für Sie zu erstellen. Innerhalb jeder Aufgabe geben Sie einigen Datensätzen dieselbe „Kennzeichnung“ und anderen Datensätzen andere „Kennzeichnungen“. Mit anderen Worten, die Aufgaben sind im Allgemeinen nicht entweder alle gleich oder alle unterschiedlich (aber es ist in Ordnung, wenn eine bestimmte Aufgabe „gleich“ oder „nicht gleich“ ist).

Wenn Sie Ihre `FindMatches`-Transformation mithilfe der Option **Upload Labels from S3 (Kennzeichnungen von S3 hochladen)** schulen, versuchen Sie, sowohl Beispiele für übereinstimmende als auch für nicht übereinstimmende Datensätze einzubeziehen. Es ist akzeptabel, nur einen Typ zu haben. Diese Kennzeichnungen helfen Ihnen, eine genauere `FindMatches`-Transformation aufzubauen, aber Sie müssen trotzdem noch einige der Datensätze, die Sie generieren, mithilfe der Option **Generate labeling file (Kennzeichnungsdatei generieren)** kennzeichnen.

**Wie kann ich erzwingen, dass die Transformation die Übereinstimmungen genau so ermittelt, wie es ihr beigebracht wurde?**  
Die `FindMatches`-Transformation lernt von den Kennzeichnungen, die Sie bereitstellen. Daher kann sie Datensatzpaare generieren, die die bereitgestellten Kennzeichnungen nicht respektieren. Um zu erzwingen, dass die `FindMatches` Transformation Ihre Beschriftungen berücksichtigt, wählen Sie **EnforceProvidedLabels**in **FindMatchesParameter**.

**Welche Techniken können Sie verwenden, wenn eine ML-Transformation Elemente als Übereinstimmungen identifiziert, die keine echten Übereinstimmungen sind?**  
Sie können die folgenden Techniken verwenden:
+ Erhöhen Sie den`precisionRecallTradeoff` auf einen höheren Wert. Dies führt dazu, dass weniger Übereinstimmungen gefunden werden, aber es sollte auch Ihr großes Cluster unterteilen, wenn der erreichte Wert hoch genug ist. 
+ Nehmen Sie die Ausgabezeilen, die den falschen Ergebnissen entsprechen und formatieren sie diese als Kennzeichnungsgruppe (Entfernen der Spalte`match_id` und Hinzufügen der Spalten`labeling_set_id` und `label`). Falls erforderlich, nehmen Sie eine Unterteilung in mehrere Kennzeichnungsgruppen vor, um sicherzustellen, dass sich der Kennzeichner alle Kennzeichnungsgruppen merken kann, während er die Kennzeichnungen zuweist. Anschließend kennzeichnen Sie die übereinstimmenden Datensätze korrekt und laden die Kennzeichnungsdatei hoch und fügen sie den vorhandenen Kennzeichnungen hinzu. Dies kann Ihrer Transformation genügend Informationen geben, wonach sie suchen soll, um das Muster zu verstehen. 
+ (Erweitert) Schauen Sie sich schließlich die Daten an, um festzustellen, ob ein Muster zu erkennen ist, das das System nicht wahrnimmt. Führen Sie eine Vorverarbeitung dieser Daten mithilfe der Standardfunktionen von AWS Glue aus, um die Daten *zu normalisieren*. Markieren Sie das, was der Algorithmus lernen soll, indem Sie Daten trennen, von denen Sie wissen, dass sie in ihren eigenen Spalten eine andere Wichtigkeit haben. Oder erstellen Sie kombinierte Spalten aus Spalten, deren Daten einen Bezug zueinander haben. 

# Arbeiten mit Machine-Learning-Transformationen
<a name="console-machine-learning-transforms"></a>

Sie können AWS Glue damit benutzerdefinierte Transformationen für maschinelles Lernen erstellen, mit denen Sie Ihre Daten bereinigen können. Diese Transformationen können Sie nutzen, wenn Sie einen Auftrag in der AWS Glue -Konsole anlegen. 

Weitere Informationen zum Erstellen einer Machine Learning-Transformation finden Sie unter [Datensatzabgleich mit AWS Lake Formation FindMatches](machine-learning.md).

**Topics**
+ [Transformieren von Eigenschaften](#console-machine-learning-properties)
+ [Hinzufügen und Bearbeiten von Machine Learning-Transformationen](#console-machine-learning-transforms-actions)
+ [Anzeigen von Transformationsdetails](#console-machine-learning-transforms-details)
+ [Transformationen mithilfe von Labels beibringen](#console-machine-learning-transforms-teaching-transforms)

## Transformieren von Eigenschaften
<a name="console-machine-learning-properties"></a>

Um eine bestehende Transformation für maschinelles Lernen einzusehen, 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/) Wählen Sie in der -Konsole im Navigationsbereich unter **Datenintegration und ETL** die Optionen **Datenklassifizierungstools > Datensatzabgleich** aus.

Die Eigenschaften für jede Transformation:

**Namen der Transformation**  
Der eindeutige Name, den Sie der Transformation bei der Erstellung gegeben haben.

**ID (ID)**  
Eine eindeutige Kennung der Transformation. 

**Label count (Anzahl der Beschriftungen)**  
Die Anzahl der Beschriftungen in der Labeling-Datei, die als Unterstützung beim Erstellen der Transformation zur Verfügung gestellt wurde. 

**Status**  
Gibt an, ob die Transformation den Status **Ready (Bereit)** oder **Needs training (Benötigt Training)** hat. Um eine Machine-Learning-Transformation in einem Auftrag erfolgreich ausführen zu können, muss sie den Status **Ready (Bereit)** haben. 

**Erstellt**  
Das Datum, an dem die Transformation erstellt wurde.

**Geändert**  
Das Datum, an dem die Transformation zuletzt aktualisiert wurde.

**Description**  
Die Beschreibung, die für die Transformation bereitgestellt wurde, sofern vorhanden.

**AWS Glue-Version**  
Die verwendete AWS Glue-Version.

**ID ausführen**  
Der eindeutige Name, den Sie der Transformation bei der Erstellung gegeben haben.

**Aufgabentyp**  
Der Typ der Machine Learning-Transformation, z. B. **Find matching records (Übereinstimmende Datensätze suchen)**.

**Status**  
Zeigt den Status der Aufgabenausführung an. Zu den möglichen Status gehören:  
+ Wird gestartet
+ In Ausführung
+ Wird angehalten
+ Angehalten
+ Erfolgreich
+ Fehlgeschlagen
+ Zeitüberschreitung

**Fehler**  
Wenn der Status „Fehlgeschlagen“ lautet, wird eine Fehlermeldung mit einer Beschreibung der Ursache des Fehlers angezeigt.

## Hinzufügen und Bearbeiten von Machine Learning-Transformationen
<a name="console-machine-learning-transforms-actions"></a>

 Sie können eine Transformation auf der AWS Glue-Konsole anzeigen, löschen, einrichten, trainieren oder optimieren. Wählen Sie das Kontrollkästchen neben der Transformation in der Liste aus, wählen Sie dann die Option**Aktion** und anschließend die Aktion, die Sie vornehmen möchten. 

### Erstellen einer neuen ML-Transformation
<a name="w2aac37c11c24c23c11b5"></a>

 Um eine neue Machine-Learning-Transformation hinzuzufügen, wählen Sie **Transformation erstellen**. Folgen Sie den Anweisungen im **Auftrag-hinzufügen**-Assistenten. Weitere Informationen finden Sie unter [Datensatzabgleich mit AWS Lake Formation FindMatches](machine-learning.md). 

#### Schritt 1. Legen Sie Transformationseigenschaften fest.
<a name="w2aac37c11c24c23c11b5b7"></a>

1. Geben Sie den Namen und die Beschreibung ein (optional).

1. Optional können Sie die Sicherheitskonfiguration festlegen. Siehe [Verwenden von Datenverschlüsselung mit Machine-Learning-Transformationen](#ml_transform_sec_config). 

1. Legen Sie optional Einstellungen für die Aufgabenausführung fest. Mithilfe den Einstellungen für die Aufgabenausführung können Sie die Ausführung der Aufgabe individuell anpassen. Wählen Sie den Worker-Typ, die Anzahl der Worker, das Aufgaben-Timeout (in Minuten), die Anzahl der Wiederholungsversuche und die AWS Glue-Version aus.

1. Legen Sie optional Tags fest. Tags sind Bezeichnungen, die Sie einer AWS Ressource zuweisen können. Jedes Tag besteht aus einem Schlüssel und einem optionalen Wert. Tags können verwendet werden, um Ihre Ressource zu durchsuchen und zu filtern oder Ihre AWS Kosten zu verfolgen.

#### Schritt 2. Wählen Sie Tabelle und Primärschlüssel aus.
<a name="w2aac37c11c24c23c11b5b9"></a>

1. Wählen Sie die AWS Glue-Katalogdatenbank und die Tabelle aus.

1. Wählen Sie einen Primärschlüssel aus der ausgewählten Tabelle. Die Primärschlüsselspalte enthält normalerweise eine eindeutige Kennung für jeden Datensatz in der Datenquelle. 

#### Schritt 3. Wählen Sie Optimierungsoptionen aus.
<a name="w2aac37c11c24c23c11b5c11"></a>

1.  Wählen Sie für **Rückruf im Vergleich zu Präzision** den Optimierungswert aus, um die Transformation so abzustimmen, dass Rückruf oder Präzision bevorzugt werden. Standardmäßig ist **Ausgewogen** ausgewählt. Sie können aber auch Rückruf oder Präzision bevorzugen oder **Benutzerdefiniert** auswählen und einen Wert zwischen 0,0 und 1,0 (einschließlich) eingeben. 

1.  Wählen Sie für **Geringere Kosten im Vergleich zu Genauigkeit** den Optimierungswert aus, um niedrigere Kosten oder Genauigkeit zu begünstigen, oder wählen Sie **Benutzerdefiniert** und geben Sie einen Wert zwischen 0,0 und 1,0 (einschließlich) ein. 

1.  Wählen Sie für **Übereinstimmung erzwingen** die Option **Ausgabe zur Übereinstimmung mit Labels erzwingen**, wenn Sie die ML-Transformation trainieren möchten, indem Sie die Ausgabe dazu erzwingen, mit den verwendeten Labels übereinzustimmen. 

#### Schritt 4. Überprüfen und erstellen
<a name="w2aac37c11c24c23c11b5c13"></a>

1.  Überprüfen Sie die Optionen für die Schritte 1 bis 3. 

1.  Wählen Sie **Bearbeiten** für jeden Schritt, der geändert werden muss. Wählen Sie **Transformation erstellen**, um den Assistenten zum Erstellen einer Transformation abzuschließen. 

### Verwenden von Datenverschlüsselung mit Machine-Learning-Transformationen
<a name="ml_transform_sec_config"></a>

Wenn Sie eine Machine-Learning-Transformation zu AWS Glue hinzufügen, können Sie optional eine Sicherheitskonfiguration angeben, die der Datenquelle oder dem Datenziel zugeordnet ist. Wenn der Amazon-S3-Bucket, der zum Speichern der Daten verwendet wird, mit einer Sicherheitskonfiguration verschlüsselt ist, geben Sie beim Erstellen der Transformation dieselbe Sicherheitskonfiguration an.

Sie können sich auch für die serverseitige Verschlüsselung mit AWS KMS (SSE-KMS) entscheiden, um das Modell und die Beschriftungen zu verschlüsseln, um zu verhindern, dass Unbefugte es überprüfen können. Wenn Sie diese Option wählen, werden Sie aufgefordert, den AWS KMS key Namen auszuwählen, oder Sie können **Enter a key ARN** wählen. Wenn Sie den ARN für den KMS-Schlüssel eingeben, wird ein zweites Feld angezeigt, in dem Sie den KMS-Schlüssel-ARN eingeben können.

**Anmerkung**  
Derzeit werden ML-Transformationen, die einen benutzerdefinierten Verschlüsselungsschlüssel verwenden, in den folgenden Regionen nicht unterstützt:  
Asien-Pazifik (Osaka) – `ap-northeast-3`

## Anzeigen von Transformationsdetails
<a name="console-machine-learning-transforms-details"></a>

### Transformationseigenschaften anzeigen
<a name="console-machine-learning-transforms-details"></a>

Die Seite **Transformationseigenschaften** enthält Attribute Ihrer Transformation. Es zeigt Ihnen die Details zur Transformationsdefinition, einschließlich der folgenden:
+ **Transform name (Name der Transformation)** zeigt den Namen der Transformation an.
+ **Type (Typ)** führt die Art der Transformation auf.
+ **Status** zeigt an, ob die Transformation bereit ist, in einem Skript verwendet zu werden.
+ **Force output to match labels (Ausgabe zwingen, Kennzeichnungen zuzuweisen)** zeigt an, ob die Transformation die Ausgabe zwingt, die vom Benutzer bereitgestellten Kennzeichnungen zuzuweisen.
+ **Spark version (Spark-Version)** bezieht sich auf die AWS Glue-Version, die Sie unter **Task run properties (Eigenschaften für die Ausführung einer Aufgabe)** beim Hinzufügen der Transformation ausgewählt haben. AWS Glue 1.0 und Spark 2.4 wird für die meisten Kunden empfohlen. Weitere Informationen finden Sie unter [AWS Glue-Versionen](https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions).

### Registerkarten „Verlauf“, „Qualität schätzen“ und „Tags“
<a name="w2aac37c11c24c23c13b5"></a>

 Zu den Transformationsdetails gehören die Informationen, die Sie beim Erstellen der Transformation definiert haben. Um die Details einer Transformation anzuzeigen, wählen Sie die Transformation in der Liste **Machine learning transforms (Machine Learning-Transformationen)** aus und überprüfen Sie die Informationen auf den folgenden Registerkarten: 
+ Verlauf
+ Schätzen der Qualität
+ Tags (Markierungen)

#### Verlauf
<a name="console-machine-learning-transforms-history"></a>

Die Registerkarte **History (Verlauf)** zeigt den Ausführungsverlauf Ihrer Aufgabe an. Mehrere Arten von Aufgaben werden ausgeführt, um eine Transformation zu schulen. Für jede Aufgabe enthalten die Ausführungsmetriken Folgendes:
+ **Run ID (Ausführungs-ID)** ist ein von AWS Glue erstellter Bezeichner für jede Ausführung dieser Aufgabe.
+ **Task-Type (Aufgabentyp)** zeigt die Art der ausgeführten Aufgabe.
+ **Status** zeigt den Erfolg jeder aufgeführten Aufgabe an, wobei die neueste Aufgabe oben aufgeführt wird.
+ **Error** (Fehler) zeigt die Details einer Fehlermeldung an, wenn die Ausführung nicht erfolgreich war.
+ **Start time (Startzeit)** zeigt das Datum und die Uhrzeit (Ortszeit), an denen die Aufgabe gestartet wurde.
+ **Endzeit** zeigt das Datum und die Uhrzeit (Ortszeit), an denen die Aufgabe beendet wurde.
+ **Logs (Protokolle)** verlinkt sich mit den Protokollen, die für diese Auftragsausführung in `stdout` geschrieben wurden.

  Über den Link **Logs** gelangen Sie zu Amazon CloudWatch Logs. Dort können Sie die Details zu den Tabellen, die in der erstellt wurden, AWS Glue Data Catalog und zu allen aufgetretenen Fehlern einsehen. Sie können den Aufbewahrungszeitraum für Ihre Protokolle auf der CloudWatch Konsole verwalten. Der Standardaufbewahrungszeitraum für Protokolle ist `Never Expire`. Weitere Informationen zum Ändern der Aufbewahrungsdauer finden Sie unter [Ändern der Aufbewahrung von Protokolldaten in CloudWatch Protokollen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#SettingLogRetention) im *Amazon CloudWatch Logs-Benutzerhandbuch*.
+ Die **Label-Datei** zeigt einen Link zu Amazon S3 für eine generierte Beschriftungsdatei.

#### Schätzen der Qualität
<a name="console-machine-learning-transforms-metrics"></a>

 Die Registerkarte **Estimate Quality (Qualität schätzen)** zeigt die Metriken, die Sie verwenden, um die Qualität der Transformation zu messen. Schätzungen werden berechnet, indem die Vorhersagen zur Transformationsübereinstimmung anhand einer Teilmenge Ihrer Daten mit den von Ihnen angegebenen Kennzeichnungen verglichen werden. Diese Schätzungen sind ungefähre Angaben. Sie können die Ausführung der Aufgabe **Estimate quality (Qualität schätzen)** aus dieser Registerkarte aufrufen.

Die Registerkarte **Estimate quality (Qualität schätzen)** zeigt die Metriken der letzten Ausführung von **Estimate quality (Qualität schätzen)** mit den folgenden Eigenschaften:
+ **Area under the Precision-Recall curve (Bereich unter der Präzisions-Sensitivitäts-Kurve)** ist eine einzelne Zahl, die die obere Grenze der Gesamtqualität der Transformation schätzt. Sie ist unabhängig von der Wahl für den Präzisions-Sensitivitäts-Parameter. Höhere Werte weisen darauf hin, dass Sie einen attraktiveren Präzisions-Sensitivitäts-Trade-off haben. 
+ **Precision (Präzision)** schätzt, wie oft die Transformation korrekt ist, wenn sie eine Übereinstimmung prognostiziert.
+ **Recall upper limit (Obergrenze der Sensitivität)** schätzt für eine tatsächliche Übereinstimmung, wie oft die Transformation die Übereinstimmung vorhersagt.
+ **F1** gibt eine Schätzung der Genauigkeit der Transformation zwischen 0 und 1 an, wobei 1 die beste Genauigkeit ist. Weitere Informationen finden Sie unter [F1 score](https://en.wikipedia.org/wiki/F1_score) in Wikipedia.
+ In der Tabelle **Column importance (Bedeutung der Spalte)** werden die Spaltennamen und die Bewertung für die Bedeutung jeder Spalte angezeigt. Anhand der Spaltenbedeutung können Sie verstehen, wie Spalten zu Ihrem Modell beitragen, indem Sie ermitteln, welche Spalten in Ihren Datensätzen am häufigsten für den Abgleich verwendet werden. Diese Daten können Sie dazu veranlassen, Ihr Labelset hinzuzufügen oder zu ändern, um die Bedeutung von Spalten zu erhöhen oder zu verringern.

  Die Spalte „Importance (Bedeutung)“ enthält eine numerische Bewertung für jede Spalte, da eine Dezimalzahl nicht größer als 1,0 ist.

Weitere Informationen zum Verständnis der Qualitätsschätzungen im Vergleich zur tatsächlichen Qualität finden Sie unter [Qualitätsschätzungen versus end-to-end (wahre) Qualität](#console-machine-learning-quality-estimates-true-quality).

Weitere Informationen zum Optimieren der Transformation finden Sie unter [Optimieren von Machine Learning-Transformationen in AWS Glue](add-job-machine-learning-transform-tuning.md).

#### Qualitätsschätzungen versus end-to-end (wahre) Qualität
<a name="console-machine-learning-quality-estimates-true-quality"></a>

AWS Glue schätzt die Qualität Ihrer Transformation, indem dem Machine-Learning-Modell eine Reihe von Datensatzpaaren präsentiert werden, für die Sie übereinstimmende Labels angegeben haben, die das Modell bisher jedoch nicht kannte. Diese Qualitätsschätzungen sind eine Qualitätsfunktion des Machine-Learning-Modells (abhängig von der Anzahl der Datensätze, die Sie für das Trainieren der Transformation gekennzeichnet haben). Der end-to-end oder *wahre* Erinnerungswert (der nicht automatisch durch den berechnet wird`ML transform`) wird auch durch den `ML transform` Filtermechanismus beeinflusst, der eine Vielzahl möglicher Übereinstimmungen mit dem maschinell erlernten Modell vorschlägt. 

Sie können diese Filtermethode hauptsächlich durch Angabe des Optimierungswerts **Niedrigere Kostengenauigkeit** optimieren. Wenn sich der Optimierungswert der **Genauigkeit** annähert, führt das System eine gründlichere und aufwändigere Suche nach möglicherweise übereinstimmenden Datensatzpaaren durch. Es werden mehr Datensatzpaare in Ihr maschinell gelerntes Modell `ML transform` eingespeist, und Ihr end-to-end oder Ihr wahrer Erinnerungswert nähert sich der geschätzten Erinnerungsmetrik. Das hat zur Folge, dass Änderungen in der end-to-end Qualität Ihrer Matches aufgrund von Änderungen beim Kompromiss zwischen Kosten und Genauigkeit Ihrer Treffer in der Regel nicht in der Qualitätsschätzung berücksichtigt werden.

#### Tags (Markierungen)
<a name="w2aac37c11c24c23c13b5c13"></a>

 Tags sind Bezeichnungen, die Sie einer Ressource zuweisen können. AWS Jedes Tag besteht aus einem Schlüssel und einem optionalen Wert. Tags können verwendet werden, um Ihre Ressource zu durchsuchen und zu filtern oder Ihre AWS Kosten zu verfolgen. 

## Transformationen mithilfe von Labels beibringen
<a name="console-machine-learning-transforms-teaching-transforms"></a>

 Sie können Ihrer ML-Transformation mithilfe von Beschriftungen (Beispiele) beibringen, indem Sie auf der Detailseite der ML-Transformation die Option **Transformation beibringen** auswählen. Wenn Sie Ihrem Machine-Learning-Algorithmus Beispiele (sogenannte Labels) beibringen, können Sie vorhandene Labels zur Verwendung auswählen oder eine Labeldatei erstellen. 

![\[Der Screenshot zeigt einen Assistenten zum Einlernen der Transformation mithilfe von Labels.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/machine-learning-teach-transform.png)

+  **Beschriftung** – Wenn Sie über Labels verfügen, wählen Sie **Ich habe Labels**. Wenn Sie keine Labels haben, können Sie trotzdem mit dem nächsten Schritt fortfahren, um eine Label-Datei zu generieren. 
+  **Label-Datei generieren** – AWS Glue extrahiert Datensätze aus Ihren Quelldaten und schlägt potenziell passende Datensätze vor. Sie wählen den Amazon-S3-Bucket aus, in dem die generierte Label-Datei gespeichert werden soll. Wählen Sie **Label-Datei generieren**, um den Vorgang zu starten. Wenn Sie fertig sind, wählen Sie **Label-Datei herunterladen**. Die heruntergeladene Datei enthält eine Spalte für Labels, in die Sie die Labels eintragen können. 
+  **Labels aus Amazon S3 hochladen** – Wählen Sie die fertige Label-Datei aus dem Amazon-S3-Bucket aus, in dem die Label-Datei gespeichert ist. Wählen Sie dann aus, ob Sie die Labels an Ihre vorhandenen Labels anfügen oder Ihre vorhandenen Labels überschreiben möchten. Wählen Sie **Label-Datei aus Amazon S3 hochladen** aus. 

# Tutorial: Erstellen einer Transformation für maschinelles Lernen mit AWS Glue
<a name="machine-learning-transform-tutorial"></a>

Dieses Tutorial führt Sie durch die Aktionen zum Erstellen und Verwalten einer Machine Learning(ML)-Transformation mit AWS Glue. Bevor Sie dieses Tutorial verwenden, sollten Sie mit dem Hinzufügen von Crawlern und Aufträgen und dem Bearbeiten von Skripts mithilfe der AWS Glue-Konsole vertraut sein. Sie sollten auch wissen, wie Dateien gesucht und zur Amazon Simple Storage Service (Amazon S3)-Konsole heruntergeladen werden.

In diesem Beispiel erstellen Sie eine `FindMatches`-Transformation zur Suche nach übereinstimmenden Datensätzen, trainieren sie im Identifizieren übereinstimmender und nicht übereinstimmender Datensätze und verwenden sie in einem AWS Glue-Auftrag. Der AWS Glue-Auftrag schreibt eine neue Amazon-S3-Datei mit einer zusätzlichen Spalte mit dem Namen `match_id`. 

Die in diesem Tutorial verwendeten Quelldaten befinden sich in einer Datei mit dem Namen `dblp_acm_records.csv`. Diese Datei ist eine modifizierte Version akademischer Publikationen (DBLP und ACM), die aus dem [DBLP ACM-Originaldatensatz](https://doi.org/10.3886/E100843V2) verfügbar sind. Die Datei `dblp_acm_records.csv` ist eine CSV-Datei (durch Kommas voneinander getrennte Werte) im UTF-8-Format ohne BOM (Byte-Order Mark, Markierung der Byte-Reihenfolge). 

Eine zweite Datei, `dblp_acm_labels.csv`, ist eine Labeling-Beispieldatei mit übereinstimmenden und nicht übereinstimmenden Datensätzen, mit der die Transformation im Rahmen des Tutorials trainiert wird. 

**Topics**
+ [Schritt 1: Crawlen der Quelldaten](#ml-transform-tutorial-crawler)
+ [Schritt 2: Hinzufügen einer Machine Learning-Transformation](#ml-transform-tutorial-create)
+ [Schritt 3: Trainieren Ihrer Machine Learning-Transformation](#ml-transform-tutorial-teach)
+ [Schritt 4: Beurteilen der Qualität Ihrer Machine Learning-Transformation](#ml-transform-tutorial-estimate-quality)
+ [Schritt 5: Hinzufügen und Ausführen eines Auftrags mit Ihrer Machine Learning-Transformation](#ml-transform-tutorial-add-job)
+ [Schritt 6: Überprüfen der Ausgabedaten von Amazon S3](#ml-transform-tutorial-data-output)

## Schritt 1: Crawlen der Quelldaten
<a name="ml-transform-tutorial-crawler"></a>

Durchforsten Sie zunächst die Amazon-S3-CSV-Quelldatei, um eine entsprechende Metadatendatei in Data Catalog zu erstellen.

**Wichtig**  
Um den Crawler dazu anzuweisen, eine Tabelle für ausschließlich die CSV-Datei zu erstellen, speichern Sie die CSV-Quelldaten in einem anderen Amazon-S3-Ordner als andere Dateien.

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 **Crawlers (Crawler)** und anschließend **Add crawler (Crawler hinzufügen)** aus. 

1. Befolgen Sie die Anweisungen des Assistenten zum Erstellen und Ausführen eines Crawlers mit dem Namen `demo-crawl-dblp-acm` mit Ausgabe zur Datenbank `demo-db-dblp-acm`. Wenn der Assistent ausgeführt wird, erstellen Sie die Datenbank `demo-db-dblp-acm`, sofern sie noch nicht vorhanden ist. Wählen Sie einen Amazon S3 S3-Include-Pfad für Beispieldaten in der aktuellen AWS Region. Für `us-east-1` lautet der Amazon-S3-Include-Pfad zur Quelldatei beispielsweise `s3://ml-transforms-public-datasets-us-east-1/dblp-acm/records/dblp_acm_records.csv`. 

   Wenn der Crawler erfolgreich ist, erstellt er die Tabelle `dblp_acm_records_csv` mit den folgenden Spalten: id (ID), title (Titel), authors (Autoren), venue (Ort), year (Jahr) und source (Quelle).

## Schritt 2: Hinzufügen einer Machine Learning-Transformation
<a name="ml-transform-tutorial-create"></a>

Fügen Sie als Nächstes eine Machine Learning-Transformation hinzu, die auf dem Schema Ihrer Datenquellentabelle basiert, die von dem Crawler mit dem Namen `demo-crawl-dblp-acm` erstellt wurde.

1. Wählen Sie auf der AWS Glue-Konsole im Navigationsbereich unter **Datenintegration und ETL** die Optionen **Datenklassifizierungstools > Datensatzabgleich** und anschließend **Transformation hinzufügen** aus. Folgen Sie dem Assistenten beim Erstellen einer `Find matches`-Transformation mit den folgenden Eigenschaften. 

   1. Geben Sie für **Transform Name (Transformationsname)** den Namen **demo-xform-dblp-acm** ein. Dies ist der Name der Transformation, der bei der Suche nach Übereinstimmungen in den Quelldaten verwendet wird.

   1. Wählen Sie für **IAM role (IAM-Rolle)** eine IAM-Rolle aus, die zum Zugriff auf die Amazon-S3-Quelldaten, Labeling-Datei und AWS Glue-API-Operationen berechtigt ist. Weitere Informationen finden Sie unter [Erstellen einer IAM-Rolle für AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html) im *AWS Glue -Entwicklerhandbuch*.

   1. Wählen Sie als **Datenquelle** die Tabelle mit dem Namen **dblp\$1acm\$1records\$1csv** in der Datenbank aus. **demo-db-dblp-acm**

   1. Wählen Sie für **Primary key (Primärschlüssel)** die Primärschlüsselspalte für die Tabelle **id** aus.

1. Wählen Sie im Assistenten **Finish (Fertig stellen)** und kehren Sie zur Liste **ML transforms (ML-Transformationen)** zurück.

## Schritt 3: Trainieren Ihrer Machine Learning-Transformation
<a name="ml-transform-tutorial-teach"></a>

Als Nächstes trainieren Sie Ihre Machine Learning-Transformation bei der Verwendung der Labeling-Beispieldatei des Tutorials.

Eine Machine Language-Transformation kann erst dann in einem ETL-Auftrag (Extract, Transform and Load, Extrahieren, Transformieren und Laden) verwendet werden, wenn ihr Status **Ready for use (Einsatzbereit)** lautet. Sie müssen Ihre Transformation als Vorbereitung anhand von Beispielen übereinstimmender und nicht übereinstimmender Datensätze darin trainieren, wie übereinstimmende und nicht übereinstimmende Datensätze zu identifizieren sind. Zum Trainieren Ihrer Transformation können Sie **Generate a label file (Eine Labling-Datei generieren)** wählen, Labels hinzufügen und danach **Upload label file (Labeling-Datei hochladen)** wählen. In diesem Tutorial verwenden Sie die Beispiel-Labeling-Datei `dblp_acm_labels.csv`. Weitere Informationen über den Labeling-Prozess finden Sie unter [Labeling](machine-learning.md#machine-learning-labeling).

1. Wählen Sie im Navigationsbereich der AWS Glue-Konsole die Option **Datensatzabgleich** aus.

1. Wählen Sie die `demo-xform-dblp-acm`-Transformation aus und klicken Sie dann auf **Action (Aktion)** und **Teach (Trainieren)**. Befolgen Sie die Anweisungen des Assistenten zum Trainieren Ihrer `Find matches`-Transformation. 

1. Wählen Sie auf der Eigenschaftsseite der Transformation **I have labels (Im Besitz von Labels)**. Wählen Sie einen Amazon S3 S3-Pfad zur Musteretikettierungsdatei in der aktuellen AWS Region. Beispiel: Für `us-east-1` laden Sie die bereitgestellte Labeling-Datei aus dem Amazon-S3-Pfad `s3://ml-transforms-public-datasets-us-east-1/dblp-acm/labels/dblp_acm_labels.csv` mit der Option **overwrite (Überschreiben)**, um vorhandene Labels zu überschreiben. Die Labeling-Datei muss sich in Amazon S3 in derselben Region wie die AWS Glue-Konsole befinden.

   Beim Hochladen einer Labeling-Datei wird in AWS Glue eine Aufgabe zum Hinzufügen oder Überschreiben der Labels gestartet, mit der die Transformation bei der Verarbeitung der Datenquelle trainiert wird.

1. Wählen Sie auf der letzten Seite des Assistenten **Finish (Fertig stellen)** und kehren Sie zur Liste **ML transforms (ML-Transformationen)** zurück.

## Schritt 4: Beurteilen der Qualität Ihrer Machine Learning-Transformation
<a name="ml-transform-tutorial-estimate-quality"></a>

Anschließend können Sie die Qualität Ihrer Machine Learning-Transformation beurteilen. Die Qualität hängt vom Ausmaß des bisher von Ihnen vorgenommenen Labeling ab. Weitere Informationen zur Beurteilung der Qualität finden Sie unter [Schätzen der Qualität](console-machine-learning-transforms.md#console-machine-learning-transforms-metrics).

1. Wählen Sie in der AWS Glue-Konsole im Navigationsbereich unter **Datenintegration und ETL** die Optionen **Datenklassifizierungstools > Datensatzabgleich** aus. 

1. Wählen Sie die Transformation `demo-xform-dblp-acm` und danach die Registerkarte **Estimate quality (Qualität beurteilen)** aus. Diese Registerkarte zeigt die aktuellen Qualitätsbeurteilungen für die Transformation an, sofern verfügbar. 

1. Wählen Sie **Estimate quality (Qualität beurteilen)**, um eine Aufgabe zur Beurteilung der Qualität der Transformation zu starten. Die Genauigkeit der Qualitätsbeurteilung basiert auf dem Labeling der Quelldaten.

1. Navigieren Sie zur Registerkarte **History (Verlauf)**. In diesem Bereich werden Aufgabenausführungen für die Transformation aufgelistet, einschließlich der Aufgabe **Estimating quality (Qualitätsbeurteilung)**. Um weitere Einzelheiten zur Ausführung zur erhalten, wählen Sie **Logs (Protokolle)**. Stellen Sie sicher, dass der Status der Ausführung **Succeeded (Erfolgreich)** lautet, wenn sie beendet ist.

## Schritt 5: Hinzufügen und Ausführen eines Auftrags mit Ihrer Machine Learning-Transformation
<a name="ml-transform-tutorial-add-job"></a>

In diesem Schritt verwenden Sie Ihre Machine Learning-Transformation zum Hinzufügen und Ausführen eines Auftrags in AWS Glue. Wenn dier Transformation `demo-xform-dblp-acm` **Ready for use (Betriebsbereit)** ist, können Sie sie in einem ETL-Auftrag verwenden.

1. Wählen Sie im Navigationsbereich der AWS Glue-Konsole die Option **Jobs (Aufträge)** aus.

1. Wählen Sie **Add job (Auftrag hinzufügen)** und befolgen Sie die Schritte im Assistenten zum Erstellen eines ETL-Spark-Auftrags mit einem generierten Skript. Wählen Sie die folgenden Eigenschaftswerte für Ihre Transformation aus:

   1. Wählen Sie unter **Name** den Beispieljob in diesem Tutorial aus **demo-etl-dblp-acm**.

   1. Wählen Sie unter **IAM role (IAM-Rolle)** eine IAM-Rolle mit der Berechtigung für die Amazon-S3-Quelldaten, die Labeling-Datei und AWS Glue-API-Operationen aus. Weitere Informationen finden Sie unter [Erstellen einer IAM-Rolle für AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html) im *AWS Glue -Entwicklerhandbuch*.

   1. Wählen Sie für **ETL language (ETL-Sprache)** die Option **Scala** aus. Das ist die Programmiersprache im ETL-Skript.

   1. Wählen Sie als **Namen der Skriptdatei **demo-etl-dblp-acm****. Das ist der Dateiname der Scala-Skript (identisch mit dem Auftragsnamen).

   1. Wählen Sie unter **Data source (Datenquelle)** als Quelle **dblp\$1acm\$1records\$1csv** aus. Die von Ihnen ausgewählte Datenquelle muss mit dem Datenquellen-Schema der Machine-Learning-Transformation übereinstimmen.

   1. Wählen Sie unter **Transform type (Transformationstyp)** die Option **Find matching records (Übereinstimmende Datensätze suchen)** aus, um einen Auftrag mit einer Machine Learning-Transformation zu erstellen.

   1. Deaktivieren Sie **Remove duplicate records (Doppelte Datensätze entfernen)**. Doppelte Datensätze sollen nicht entfernt werden, da den geschriebenen Ausgabedatensätzen ein zusätziches `match_id`-Feld hinzugefügt wird. 

   1. Wählen Sie für **Transformieren** die Transformation für maschinelles Lernen aus **demo-xform-dblp-acm**, die für den Job verwendet wird.

   1. Wählen Sie für **Create tables in your data target (Tabellen in Ihren Zieldaten erstellen)** das Erstellen von Tabellen mit den folgenden Eigenschaften:
      + **Data store type (Datenspeichertyp)** — **Amazon S3**
      + **Format** — **CSV**
      + **Compression type (Komprimierungstyp)** — **None**
      + **Zielpfad** — Der Amazon S3 S3-Pfad, in den die Ausgabe des Jobs geschrieben wird (in der aktuellen AWS Konsolenregion)

1. Wählen Sie **Save Job und edit script (Auftrag speichern und Skript bearbeiten)**, um die Skript-Editor-Seite anzuzeigen.

1. Bearbeiten Sie das Skript, um eine Anweisung hinzufügen, die verlasst, dass die Ausgabe zu **Target path (Zielpfad)** in eine einzelne Partitionsdatei geschrieben wird. Fügen Sie diese Anweisung unmittelbar nach der Anweisung ein, mit der die `FindMatches`-Tansformation ausgeführt wird. Die Anweisung gleicht der folgenden.

   ```
   val single_partition = findmatches1.repartition(1) 
   ```

   Sie müssen die Anweisung `.writeDynamicFrame(findmatches1)` so ändern, dass die Ausgabe als `.writeDynamicFrame(single_partion)` geschrieben wird. 

1. Wählen Sie nach dem Bearbeiten des Skripts **Save (Speichern)**. Das geänderte Skript sieht in etwa wie der folgende Code, aber angepasst an Ihre Umgebung, aus.

   ```
   import com.amazonaws.services.glue.GlueContext
   import com.amazonaws.services.glue.errors.CallSite
   import com.amazonaws.services.glue.ml.FindMatches
   import com.amazonaws.services.glue.util.GlueArgParser
   import com.amazonaws.services.glue.util.Job
   import com.amazonaws.services.glue.util.JsonOptions
   import org.apache.spark.SparkContext
   import scala.collection.JavaConverters._
   
   object GlueApp {
     def main(sysArgs: Array[String]) {
       val spark: SparkContext = new SparkContext()
       val glueContext: GlueContext = new GlueContext(spark)
       // @params: [JOB_NAME]
       val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray)
       Job.init(args("JOB_NAME"), glueContext, args.asJava)
       // @type: DataSource
       // @args: [database = "demo-db-dblp-acm", table_name = "dblp_acm_records_csv", transformation_ctx = "datasource0"]
       // @return: datasource0
       // @inputs: []
       val datasource0 = glueContext.getCatalogSource(database = "demo-db-dblp-acm", tableName = "dblp_acm_records_csv", redshiftTmpDir = "", transformationContext = "datasource0").getDynamicFrame()
       // @type: FindMatches
       // @args: [transformId = "tfm-123456789012", emitFusion = false, survivorComparisonField = "<primary_id>", transformation_ctx = "findmatches1"]
       // @return: findmatches1
       // @inputs: [frame = datasource0]
       val findmatches1 = FindMatches.apply(frame = datasource0, transformId = "tfm-123456789012", transformationContext = "findmatches1", computeMatchConfidenceScores = true)
     
     
       // Repartition the previous DynamicFrame into a single partition. 
       val single_partition = findmatches1.repartition(1)    
    
       
       // @type: DataSink
       // @args: [connection_type = "s3", connection_options = {"path": "s3://aws-glue-ml-transforms-data/sal"}, format = "csv", transformation_ctx = "datasink2"]
       // @return: datasink2
       // @inputs: [frame = findmatches1]
       val datasink2 = glueContext.getSinkWithFormat(connectionType = "s3", options = JsonOptions("""{"path": "s3://aws-glue-ml-transforms-data/sal"}"""), transformationContext = "datasink2", format = "csv").writeDynamicFrame(single_partition)
       Job.commit()
     }
   }
   ```

1. Wählen Sie **Run job (Auftrag ausführen)**, um die Auftragsausführung zu starten. Überprüfen Sie den Status des Auftrags in der Auftragsliste. Wenn der Auftrag abgeschlossen ist, wurde die Registerkarte **ML transform (ML-Transformation)**, **History (Verlauf)** um eine neue**Run ID (Ausführungs-ID)**-Zeile vom Typ **ETL job (ETL-Auftrag)** erweitert.

1. Navigieren Sie zur Registerkarte **Jobs (Aufträge)**, **History (Verlauf)**. In diesem Bereich werden Auftragsausführungen aufgelistet. Um weitere Einzelheiten zur Ausführung zur erhalten, wählen Sie **Logs (Protokolle)**. Stellen Sie sicher, dass der Status der Ausführung **Succeeded (Erfolgreich)** lautet, wenn sie beendet ist.

## Schritt 6: Überprüfen der Ausgabedaten von Amazon S3
<a name="ml-transform-tutorial-data-output"></a>

In diesem Schritt überprüfen Sie die Ausgabe der Auftragsausführung in dem Amazon-S3-Bucket, den Sie beim Hinzufügen des Auftrags ausgewählt haben. Sie können die Ausgabedatei auf Ihren lokalen Computer herunterladen und überprüfen, ob übereinstimmende Datensätze identifiziert wurden.

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

1. Laden Sie die Ziel-Ausgabedatei des Auftrags `demo-etl-dblp-acm` herunter. Öffnen Sie die Datei in einer Tabellenkalkulationsanwendung (Sie müssen möglicherweise die Dateierweiterung `.csv` anhängen, damit die Datei ordnunsgemäß geöffnet wird).

   Die folgende Abbildung zeigt einen Ausschnitt der Ausgabe in Microsoft Excel.  
![\[Excel-Tabelle mit der Ausgabe der Transformation.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/demo_output_dblp_acm.png)

   Die Datenquelle und die Zieldatei besitzen beide 4 911 Datensätze. Die Transformation `Find matches` fügt jedoch eine weitere Spalte mit dem Namen `match_id` zur Identifizierung übereinstimmender Datensätze in der Ausgabe hinzu. Zeilen mit derselben `match_id` werden als übereinstimmende Datensätze angesehen. Der `match_confidence_score` ist eine Zahl zwischen 0 und 1, die eine Schätzung der Qualität der von `Find matches` gefundenen Übereinstimmungen liefert.

1. Sortieren Sie die Ausgabedatei nach `match_id`, damit übereinstimmende Datensätze leicht ersichtlich sind. Vergleichen Sie die Werte in den anderen Spalten, um festzustellen, ob Sie den Ergebnissen der Transformation `Find matches` zustimmen. Wenn dies nicht der Fall ist, können Sie die Transformation durch Hinzufügen weiterer Labels weiter trainieren. 

   Sie können die Datei auch nach einem anderen Feld, z  B. `title`, sortieren, um festzustellen, ob Datensätze mit ähnlichen Titeln dieselbe `match_id` besitzen. 

# Inkrementelle Übereinstimmungen finden
<a name="machine-learning-incremental-matches"></a>

Mithilfe dem Feature „FindMatches“ können Sie doppelte oder übereinstimmende Datensätze in Ihrem Dataset identifizieren, auch wenn die Datensätze nicht über eine gemeinsame eindeutige Kennung verfügen und keine Felder exakt übereinstimmen. Die erste Version der Suchübereinstimmungen transformiert übereinstimmende Datensätze innerhalb eines einzelnen Datensatzes. Wenn Sie dem Datensatz neue Daten hinzufügen, mussten Sie sie mit dem vorhandenen sauberen Datensatz zusammenführen und die Übereinstimmung mit dem vollständig zusammengeführten Datensatz erneut ausführen.

Mit dem Feature zur inkrementellen Übereinstimmung können inkrementelle Datensätze leichter mit vorhandenen übereinstimmenden Datensätzen abgeglichen werden. Angenommen, Sie möchten potenzielle Daten mit vorhandenen Kundendatensätzen abgleichen. Die Fähigkeit zur inkrementellen Übereinstimmung bietet Ihnen die Flexibilität, Hunderttausende neuer Interessenten mit einer bestehenden Datenbank von Interessenten und Kunden abzugleichen, indem Sie die Ergebnisse in einer einzigen Datenbank oder Tabelle zusammenführen. Durch den Abgleich nur zwischen den neuen und den vorhandenen Datensätzen reduziert die Optimierung der Suche nach inkrementellen Übereinstimmungen die Berechnungszeit, was auch die Kosten senkt.

Die Verwendung der inkrementellen Übereinstimmung ähnelt „Find Matches“, wie unter [Tutorial: Erstellen einer Transformation für maschinelles Lernen mit AWS Glue](machine-learning-transform-tutorial.md) beschrieben. In diesem Thema werden nur die Unterschiede bei der inkrementellen Übereinstimmung identifiziert.

Weitere Informationen finden Sie im Blog-Beitrag zu [Inkrementelle Datenübereinstimmung](https://aws.amazon.com/blogs/big-data/incremental-data-matching-using-aws-lake-formation/).

## Ausführen eines Auftrags zu inkrementellen Übereinstimmungen
<a name="machine-learning-incremental-matches-add"></a>

Nehmen wir Folgendes an: 
+ Sie haben den vorhandenen Datensatz in die Tabelle *first\$1records* gecrawlt. Der Datensatz *first\$1records* muss ein übereinstimmender Datensatz oder die Ausgabe des übereinstimmenden Auftrags sein.
+ Sie haben eine Transformation zum Finden von Übereinstimmungen erstellt und mit AWS Glue-Version 2.0 trainiert. Dies ist die einzige Version von AWS Glue, die inkrementelle Übereinstimmungen unterstützt.
+ Die ETL-Sprache ist Scala. Python wird ebenfalls unterstützt.
+ Das bereits generierte Modell heißt `demo-xform`.

1. Crawlen Sie den inkrementellen Datensatz in die Tabelle *second\$1records*.

1. Wählen Sie im Navigationsbereich der AWS Glue-Konsole die Option **Jobs (Aufträge)** aus.

1. Wählen Sie **Add job (Auftrag hinzufügen)** und befolgen Sie die Schritte im Assistenten zum Erstellen eines ETL-Spark-Auftrags mit einem generierten Skript. Wählen Sie die folgenden Eigenschaftswerte für Ihre Transformation aus:

   1. Für **Name** wählen Sie **demo-etl** aus.

   1. Wählen Sie unter **IAM role (IAM-Rolle)** eine IAM-Rolle mit der Berechtigung für die Amazon-S3-Quelldaten, die Labeling-Datei und [AWS Glue-API-Operationen](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html) aus.

   1. Wählen Sie für **ETL language (ETL-Sprache)** die Option **Scala** aus.

   1. Wählen Sie unter **Script file name (Skript-Dateiname)** als Namen **demo-etl** aus. Dies ist der Dateiname des Scala-Skripts.

   1. Für **Datenquelle** wählen Sie **first\$1records** aus. Die von Ihnen ausgewählte Datenquelle muss mit dem Datenquellen-Schema der Machine-Learning-Transformation übereinstimmen.

   1. Wählen Sie unter **Transform type (Transformationstyp)** die Option **Find matching records (Übereinstimmende Datensätze suchen)** aus, um einen Auftrag mit einer Machine Learning-Transformation zu erstellen.

   1. Wählen Sie die Option für den inkrementellen Abgleich und für **Datenquelle** die Tabelle mit dem Namen **second\$1records** aus.

   1. Wählen Sie unter **Transform (Transformation)** die von diesem Auftrag verwendete Machine Learning-Transformation **demo-xform** aus.

   1. Klicken Sie auf **Erstellen von Tabellen in Ihrem Datenziel** oder **Verwenden von Tabellen im Data Catalog und Aktualisieren Ihres Datenziels**.

1. Wählen Sie **Save Job und edit script (Auftrag speichern und Skript bearbeiten)**, um die Skript-Editor-Seite anzuzeigen.

1. Wählen Sie **Run job (Auftrag ausführen)**, um die Auftragsausführung zu starten.

# Verwendung FindMatches in einem visuellen Job
<a name="find-matches-visual-job"></a>

 Um die **FindMatches**Transformation in zu verwendenAWS Glue Studio, können Sie den **Custom Transform-Knoten** verwenden, der die FindMatches API aufruft. Weitere Informationen zur Verwendung einer benutzerdefinierten Transformation finden Sie unter [Erstellen einer benutzerdefinierten Transformation](https://docs.aws.amazon.com/glue/latest/ug/transforms-custom.html) 

**Anmerkung**  
 Derzeit funktioniert die FindMatches API nur mit`Glue 2.0`. Um einen Job mit der benutzerdefinierten Transformation auszuführen, die die FindMatches API aufruft, stellen Sie sicher, dass sich die AWS Glue Version auf `Glue 2.0` der Registerkarte **Jobdetails** befindet. Wenn die Version von nicht vorhanden AWS Glue ist`Glue 2.0`, schlägt der Job zur Laufzeit fehl und es wird die folgende Fehlermeldung angezeigt: „Der Name '' kann nicht aus 'FindMatchesawsglueml.transforms' importiert werden“. 

## Voraussetzungen
<a name="adding-find-matches-to-a-visual-job-prerequisites"></a>
+  Um die Transformation **Übereinstimmungen suchen** zu verwenden, öffnen Sie die AWS Glue Studio-Konsole unter [https://console.aws.amazon.com/gluestudio/](https://console.aws.amazon.com/gluestudio/). 
+  Erstellen Sie eine Machine-Learning-Transformation. Beim Erstellen wird eine transformId generiert. Sie benötigen diese ID für die folgenden Schritte. Weitere Informationen darüber, wie Sie eine Machine Learning-Transformation erstellen, finden Sie unter [Hinzufügen und Bearbeiten von Machine-Learning-Transformationen](https://docs.aws.amazon.com/glue/latest/dg/console-machine-learning-transforms.html#console-machine-learning-transforms-actions). 

## Eine Transformation wird hinzugefügt FindMatches
<a name="adding-find-matches-to-a-visual-job"></a>

**Um eine FindMatches Transformation hinzuzufügen:**

1.  Öffnen Sie im AWS Glue Studio-Auftrags-Editor das Bedienfeld Ressourcen, indem Sie auf das Kreuzsymbol in der oberen linken Ecke des visuellen Auftragsdiagramms klicken, und wählen Sie eine Datenquelle aus, indem Sie die **Registerkarte Daten** wählen. Dies ist die Datenquelle, die Sie auf Übereinstimmungen überprüfen möchten.   
![\[Der Screenshot zeigt ein Kreuzsymbol innerhalb eines Kreises. Wenn Sie im visuellen Auftrag-Editor darauf klicken, öffnet sich das Bedienfeld Ressourcen.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/resource-panel-blank-canvas.png)

1.  Wählen Sie den Knoten Datenquelle, öffnen Sie das Bedienfeld Ressourcen, indem Sie auf das Kreuzsymbol in der oberen linken Ecke des visuellen Auftragsdiagramms klicken, und suchen Sie nach „benutzerdefinierte Transformation“. Wählen Sie den Knoten **Benutzerdefinierte Transformation**, um ihn dem Diagramm hinzuzufügen. Die **Benutzerdefinierte Transformation** ist mit dem Datenquellenknoten verknüpft. Ist dies nicht der Fall, können Sie auf den Knoten **Benutzerdefinierte Transformation** klicken und die Registerkarte **Knoteneigenschaften** auswählen. Wählen Sie dann unter **Übergeordnete Knoten** die Datenquelle aus. 

1.  Klicken Sie im visuellen Diagramm auf den Knoten **Benutzerdefinierte Transformation**, wählen Sie dann die Registerkarte **Knoteneigenschaften** aus und benennen Sie die benutzerdefinierte Transformation. Es wird empfohlen, die Transformation umzubenennen, damit der Name der Transformation im visuellen Diagramm leicht erkennbar ist. 

1.  Wählen Sie die Registerkarte **Transformation**, auf der Sie den Code-Block bearbeiten können. Hier kann der Code zum Aufrufen der FindMatches API hinzugefügt werden.   
![\[Der Screenshot zeigt den Codeblock auf der Registerkarte Transformation, wenn der Knoten Benutzerdefinierte Transformation ausgewählt ist.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/custom-transform-code-block.png)

    Der Code-Block enthält vorab ausgefüllten Code, um Ihnen den Einstieg zu erleichtern. Überschreiben Sie den vorab ausgefüllten Code mit der folgenden Vorlage. Die Vorlage verfügt über einen Platzhalter für die **transformId**, den Sie bereitstellen können. 

   ```
   def MyTransform (glueContext, dfc) -> DynamicFrameCollection:
       dynf = dfc.select(list(dfc.keys())[0])
       from awsglueml.transforms import FindMatches
       findmatches = FindMatches.apply(frame = dynf, transformId = "<your id>")
       return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
   ```

1.  Klicken Sie im visuellen Diagramm auf den Knoten **Benutzerdefinierte Transformation** und öffnen Sie das Bedienfeld Ressourcen, indem Sie auf das Kreuzsymbol in der oberen linken Ecke des visuellen Auftragsdiagramms klicken und nach „Aus Sammlung auswählen“ suchen. Die Standardauswahl muss nicht geändert werden, da es DynamicFrame in der Sammlung nur eine gibt. 

1.  Sie können weitere Transformationen hinzufügen oder das Ergebnis speichern, das nun um die zusätzlichen Spalten zum Suchen nach Übereinstimmungen erweitert wird. Wenn Sie diese neuen Spalten in nachgelagerten Transformationen referenzieren möchten, müssen Sie sie dem Ausgabeschema der Transformation hinzufügen. Am einfachsten geht das, indem Sie die Registerkarte **Datenvorschau** auswählen und dann auf der Registerkarte Schema die Option „Schema zu Datenvorschau verwenden“ auswählen. 

1.  Zur Anpassung können Sie zusätzliche Parameter hinzufügen FindMatches, die an die Methode „Anwenden“ übergeben werden. Siehe [FindMatches Klasse](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-findmatches.html). 

## Eine FindMatches inkrementelle Transformation hinzufügen
<a name="find-matches-incrementally-visual-job"></a>

 Bei inkrementellen Übereinstimmungen entspricht der Vorgang dem **Hinzufügen einer FindMatches Transformation** mit den folgenden Unterschieden: 
+  Anstelle eines übergeordneten Knotens für die benutzerdefinierte Transformation benötigen Sie zwei übergeordnete Knoten. 
+  Der erste übergeordnete Knoten sollte der Datensatz sein. 
+  Der zweite übergeordnete Knoten sollte der inkrementelle Datensatz sein. 

   Ersetzen Sie im Vorlagen-Codeblock die `transformId` durch Ihre `transformId`: 

  ```
  def MyTransform (glueContext, dfc) -> DynamicFrameCollection:
      dfs = list(dfc.values())
      dynf = dfs[0]
      inc_dynf = dfs[1]
      from awsglueml.transforms import FindIncrementalMatches
      findmatches = FindIncrementalMatches.apply(existingFrame = dynf, incrementalFrame = inc_dynf,
                                      transformId = "<your id>")
      return(DynamicFrameCollection({"FindMatches": findmatches}, glueContext))
  ```
+  Optionale Parameter finden Sie unter [FindIncrementalMatches Klasse](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-transforms-findincrementalmatches.html). 

# Migrieren Sie Apache Spark-Programme zu AWS Glue
<a name="glue-author-migrate-apache-spark"></a>

Apache Spark ist eine Open-Source-Plattform für verteilte Rechenlasten, die für große Datenmengen ausgeführt werden. AWS Glue nutzt die Fähigkeiten von Spark, um ein optimiertes ETL-Erlebnis zu bieten. Sie können Spark-Programme zu migrieren AWS Glue , um unsere Funktionen zu nutzen. AWS Glue bietet dieselben Leistungsverbesserungen, die Sie von Apache Spark auf Amazon EMR erwarten würden.

## Spark-Code ausführen
<a name="glue-author-migrate-apache-spark-run"></a>

Nativer Spark-Code kann standardmäßig in einer AWS Glue Umgebung ausgeführt werden. Skripte werden oft entwickelt, indem ein Teil des Codes iterativ geändert wird, ein Workflow, der für eine interaktive Sitzung geeignet ist. Bestehender Code eignet sich jedoch besser für die Ausführung in einem AWS Glue Job, sodass Sie Protokolle und Metriken für jeden Skriptlauf planen und konsistent abrufen können. Sie können ein vorhandenes Skript über die Konsole hochladen und bearbeiten. 

1. Eignen Sie sich die Quelle Ihres Skripts an. In diesem Beispiel verwenden Sie ein Beispielskript aus dem Apache Spark-Repository. [Binarizer-Beispiel](https://github.com/apache/spark/blob/master/examples/src/main/python/ml/binarizer_example.py) 

1. **Erweitern Sie in der AWS Glue Konsole den linken Navigationsbereich und wählen Sie **ETL** > Jobs** 

   Wählen Sie im Feld **Erstellen von Aufträgen** **Spark-Script-Editor** aus. Es wird ein **Optionen**-Abschnitt erscheinen. Wählen Sie unter **Optionen** **Upload und Bearbeiten eines vorhandenes Skripts** aus.

   Es wird ein **Datei-Upload**-Abschnitt erscheinen. Klicken Sie unter **Datei-Upload** auf **Datei auswählen**. Ihre Systemdateiauswahl wird erscheinen. Navigieren Sie zu dem Speicherort, an dem Sie `binarizer_example.py` gespeichert haben, wählen Sie es aus und bestätigen Sie Ihre Auswahl.

   Eine Schaltfläche für **Erstellen** wird in der Kopfzeile des Fensters **Erstellen von Aufträgen** erscheinen. Klicken Sie darauf.  
![\[Die AWS Glue Studio-Jobs-Seite mit ausgewähltem Spark-Skripteditor-Bereich.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/migrate-apache-spark-01-upload-job.png)

1. Ihr Browser navigiert zum Skript-Editor. Klicken Sie in der Kopfzeile auf die Registerkarte **Auftragsdetails**. Legen Sie den **Namen** und die **IAM-Rolle** fest. Anleitungen zu AWS Glue IAM-Rollen finden [Einrichten von IAM-Berechtigungen für AWS Glue](set-up-iam.md) Sie unter.

   Optional – setzen Sie **Angeforderte Anzahl der Worker** auf `2` und die **Anzahl der Wiederholungen** auf `1`. Diese Optionen sind nützlich, wenn Sie Produktionsaufträge ausführen, aber wenn Sie sie ablehnen, optimieren Sie Ihre Erfahrung beim Testen eines Features.

   Klicken Sie in der Titelleiste auf **Save (Speichern)** und dann auf **Run (Ausführen)**  
![\[Die Auftragsdetailseite mit den Optionen, die wie angewiesen festgelegt wurden.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/migrate-apache-spark-02-job-details.png)

1. Navigieren Sie zur Registerkarte **Ausführungen**. Sie sehen ein Panel, das Ihrer Auftragsausführung entspricht. Warten Sie ein paar Minuten und die Seite sollte automatisch aktualisiert werden um **Erfolgreich** im **Run status (Ausführungsstatus)** anzuzeigen.  
![\[Die Auftragsausführungsseite mit einer erfolgreichen Auftragsausführung.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/migrate-apache-spark-03-job-runs.png)

1. Sie sollten Ihre Ausgabe überprüfen, um sicherzustellen, dass das Spark-Skript wie beabsichtigt ausgeführt wurde. Dieses Apache Spark-Beispielskript sollte einen String in den Ausgabestream schreiben. Sie finden das, indem Sie zu **Output logs (Ausgabeprotokolle)** unter **Cloudwatch-Protokolle** im Panel für die erfolgreiche Auftragsausführung navigieren. Notieren Sie sich die Auftragsausführungs-ID, eine generierte ID unter dem **ID**-Label, das mit `jr_` beginnt.

   Dadurch wird die CloudWatch Konsole geöffnet, die so eingestellt ist, dass sie den Inhalt der AWS Glue Standard-Protokollgruppe visualisiert`/aws-glue/jobs/output`, gefiltert nach dem Inhalt der Protokollstreams für die Job-Ausführungs-ID. Jeder Worker hat einen Protokollstream generiert, der als Zeilen unter **Protokollstreams** dargestellt wird. Ein Worker hätte den angeforderten Code ausführen sollen. Sie müssen alle Protokollstream öffnen, um den richtigen Worker zu identifizieren. Sobald Sie den richtigen Worker gefunden haben, sollten Sie die Ausgabe des Skripts sehen, wie in der folgenden Abbildung zu sehen ist:   
![\[Die CloudWatch Konsolenseite mit der Spark-Programmausgabe.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/migrate-apache-spark-04-log-output.png)

## Gängige Verfahren für die Migration von Spark-Programmen
<a name="glue-author-migrate-apache-spark-migrate"></a>

### Bewerten Sie den Support der Spark-Version
<a name="glue-author-migrate-apache-spark-migrate-versions"></a>

 AWS Glue Release-Versionen definieren die Version von Apache Spark und Python, die für den AWS Glue Job verfügbar sind. Sie finden unsere AWS Glue Versionen und was sie unterstützen unter[AWS Glue Versionen](release-notes.md#release-notes-versions). Möglicherweise müssen Sie Ihr Spark-Programm aktualisieren, um mit einer neueren Version von Spark kompatibel zu sein, um auf bestimmte AWS Glue -Features zuzugreifen.

### Bibliotheken von Drittanbietern einschließen
<a name="glue-author-migrate-apache-spark-third-party-libraries"></a>

Viele bestehende Spark-Programme werden Abhängigkeiten haben, sowohl von privaten als auch von öffentlichen Artefakten. AWS Glue unterstützt Abhängigkeiten im JAR-Stil für Scala-Aufträge sowie Wheel- und Quell-Pure-Python-Abhängigkeiten für Python-Aufträge.

**Python** – Hinweise zu Python-Abhängigkeiten finden Sie unter [Python-Bibliotheken mit AWS Glue verwenden](aws-glue-programming-python-libraries.md)

Allgemeine Python-Abhängigkeiten werden in der AWS Glue Umgebung bereitgestellt, einschließlich der häufig angeforderten [Pandas-Bibliothek](https://pandas.pydata.org/). Diese Abhängigkeiten sind in der AWS Glue -Version 2.0\$1 enthalten. Weitere Informationen zu bereitgestellten Modulen finden Sie unter [Python-Module sind bereits in AWS Glue enthalten](aws-glue-programming-python-libraries.md#glue-modules-provided). Wenn Sie einen Auftrag mit einer anderen Version einer standardmäßig enthaltenen Abhängigkeit bereitstellen müssen, können Sie `--additional-python-modules` verwenden. Informationen über Auftragsargumente finden Sie in [Verwenden von Auftragsparametern in AWS Glue-Jobs](aws-glue-programming-etl-glue-arguments.md).

Sie können zusätzliche Python-Abhängigkeiten mit dem `--extra-py-files`-Auftragsargument liefern. Wenn Sie einen Job aus einem Spark-Programm migrieren, ist dieser Parameter eine gute Option, da er funktionell dem `--py-files` Flag in PySpark entspricht und denselben Einschränkungen unterliegt. Weitere Informationen zum Parameter `--extra-py-files` erhalten Sie unter [Einschließlich Python-Dateien mit PySpark nativen Funktionen](aws-glue-programming-python-libraries.md#extra-py-files-support).

Für neue Jobs können Sie Python-Abhängigkeiten mit dem `--additional-python-modules`-Auftragsargument verwalten. Die Verwendung dieses Arguments ermöglicht ein gründlicheres Abhängigkeitsmanagement. Dieser Parameter unterstützt Abhängigkeiten im Wheel-Stil, einschließlich solcher mit nativen Codebindungen, die mit Amazon Linux 2 kompatibel sind.

**Scala**

Sie können zusätzliche Scala-Abhängigkeiten mit dem `--extra-jars`-Auftragsargument liefern. Abhängigkeiten müssen in Amazon S3 gehostet werden und der Argumentwert sollte eine kommagetrennte Liste von Amazon S3-Pfaden ohne Leerzeichen sein. Möglicherweise fällt es Ihnen leichter, Ihre Konfiguration zu verwalten, indem Sie Ihre Abhängigkeiten neu bündeln, bevor Sie sie hosten und konfigurieren. AWS Glue JAR-Abhängigkeiten enthalten Java-Bytecode, der aus jeder JVM-Sprache generiert werden kann. Sie können andere JVM-Sprachen wie Java verwenden, um benutzerdefinierte Abhängigkeiten zu schreiben.

### Anmeldeinformationen für Datenquellen verwalten
<a name="glue-author-migrate-apache-spark-credential-management"></a>

Bestehende Spark-Programme können mit einer komplexen oder benutzerdefinierten Konfiguration ausgestattet sein, um Daten aus ihren Datenquellen abzurufen. Gängige Authentifizierungsabläufe für Datenquellen werden von Verbindungen unterstützt. AWS Glue Weitere Informationen zu AWS Glue -Verbindungen finden Sie unter [Herstellen einer Verbindung zu Daten](glue-connections.md).

AWS Glue Verbindungen ermöglichen es, Ihren Job auf zwei Arten von Datenspeichern mit einer Vielzahl von Arten von Datenspeichern zu verbinden: durch Methodenaufrufe an unsere Bibliotheken und durch das Einrichten der **zusätzlichen Netzwerkverbindung** in der AWS Konsole. Sie können das AWS SDK auch von Ihrem Job aus aufrufen, um Informationen aus einer Verbindung abzurufen. 

 **Methodenaufrufe** — AWS Glue Verbindungen sind eng in den AWS Glue Datenkatalog integriert, einen Dienst, der es Ihnen ermöglicht, Informationen über Ihre Datensätze zu kuratieren, und die verfügbaren Methoden zur Interaktion mit AWS Glue Verbindungen spiegeln dies wider. Wenn Sie über eine bestehende Authentifizierungskonfiguration verfügen, die Sie für JDBC-Verbindungen wiederverwenden möchten, können Sie auf Ihre AWS Glue Verbindungskonfiguration über die Methode auf der zugreifen. `extract_jdbc_conf` `GlueContext` Weitere Informationen finden Sie unter [extract\$1jdbc\$1conf](aws-glue-api-crawler-pyspark-extensions-glue-context.md#aws-glue-api-crawler-pyspark-extensions-glue-context-extract_jdbc_conf). 

**Konsolenkonfiguration** — AWS Glue Jobs verwenden zugehörige AWS Glue Verbindungen, um Verbindungen zu Amazon VPC-Subnetzen zu konfigurieren. Wenn Sie Ihre Sicherheitsmaterialien direkt verwalten, müssen Sie in der AWS Konsole möglicherweise den `NETWORK` Typ **Zusätzliche Netzwerkverbindung** angeben, um das Routing zu konfigurieren. Weitere Informationen über die AWS Glue -Verbindungs-API finden Sie unter [Verbindungs-API](aws-glue-api-catalog-connections.md)

Wenn Ihre Spark-Programme über einen benutzerdefinierten oder ungewöhnlichen Authentifizierungsablauf verfügen, müssen Sie Ihre Sicherheitsmaterialien möglicherweise praxisnah verwalten. Wenn AWS Glue Verbindungen nicht gut zu passen scheinen, können Sie Sicherheitsmaterialien sicher in Secrets Manager hosten und über das Boto3 oder AWS SDK, die im Job bereitgestellt werden, darauf zugreifen.

### Konfigurieren von Apache Spark
<a name="glue-author-migrate-apache-spark-spark-configuration"></a>

Komplexe Migrationen ändern häufig die Spark-Konfiguration, um ihre Workloads zu berücksichtigen. Moderne Versionen von Apache Spark ermöglichen die Einstellung der Laufzeitkonfiguration mit dem. `SparkSession` AWS Glue Es werden Jobs über 3.0 bereitgestellt`SparkSession`, die geändert werden können, um die Laufzeitkonfiguration festzulegen. [Apache Sparkkonfiguration](https://spark.apache.org/docs/latest/configuration.html). Das Tuning von Spark ist komplex und garantiert AWS Glue nicht, dass die gesamte Spark-Konfiguration eingerichtet wird. Wenn Ihre Migration eine umfangreiche Konfiguration auf Spark-Ebene erfordert, wenden Sie sich an den Support.

### Erstellen einer benutzerdefinierten Konfiguration
<a name="glue-author-migrate-apache-spark-custom-configuration"></a>

Migrierte Spark-Programme können so konzipiert sein, dass sie eine benutzerdefinierte Konfiguration erfordern. AWS Glue ermöglicht es, die Konfiguration über die Job-Argumente auf Job- und Job-Ausführungsebene festzulegen. Informationen über Auftragsargumente finden Sie in [Verwenden von Auftragsparametern in AWS Glue-Jobs](aws-glue-programming-etl-glue-arguments.md). Sie können über unsere Bibliotheken auf Job-Argumente im Kontext eines Jobs zugreifen. AWS Glue bietet eine Hilfsfunktion, um eine konsistente Ansicht zwischen den Argumenten, die im Job gesetzt wurden, und den Argumenten, die während der Jobausführung gesetzt wurden, bereitzustellen. Siehe [Zugriff auf Parameter mit `getResolvedOptions`](aws-glue-api-crawler-pyspark-extensions-get-resolved-options.md) in Python und [AWS GlueScala GlueArgParser APIs](glue-etl-scala-apis-glue-util-glueargparser.md) in Scala.

### Migration von Java-Code
<a name="glue-author-migrate-apache-spark-java-code"></a>

Wie in [Bibliotheken von Drittanbietern einschließen](#glue-author-migrate-apache-spark-third-party-libraries) erklärt, können Ihre Abhängigkeiten Klassen enthalten, die von JVM-Sprachen wie Java oder Scala generiert wurden. Ihre Abhängigkeiten können eine `main`-Methode einschließen. Sie können eine `main` Methode in einer Abhängigkeit als Einstiegspunkt für einen AWS Glue Scala-Job verwenden. Auf diese Weise können Sie Ihre `main`-Methode in Java schreiben oder eine `main`-Methode auf Ihre eigenen Bibliotheksstandards gepackt wiederverwenden. 

Um eine `main`-Methode aus einer Abhängigkeit zu verwenden, führen Sie Folgendes aus: Löschen Sie den Inhalt des Bearbeitungsbereichs, indem Sie das standardmäßige `GlueApp`-Objekt angeben. Geben Sie den vollqualifizierten Namen einer Klasse in einer Abhängigkeit als Auftragsargument mit dem Schlüssel `--class` an. Sie sollten nun einen Auftragsausführung auslösen können.

Sie können die Reihenfolge oder Struktur der AWS Glue Argumentübergaben an die Methode nicht konfigurieren. `main` Wenn Ihr vorhandener Code die eingestellte Konfiguration lesen muss AWS Glue, führt dies wahrscheinlich zu einer Inkompatibilität mit dem vorherigen Code. Wenn Sie `getResolvedOptions` verwenden, haben Sie ebenso keinen guten Ort, um diese Methode aufzurufen. Erwägen Sie, Ihre Abhängigkeit direkt von einer Hauptmethode aufzurufen, die von AWS Glue generiert wird. Das folgende AWS Glue ETL-Skript zeigt ein Beispiel dafür.

```
import com.amazonaws.services.glue.util.GlueArgParser

object GlueApp {
  def main(sysArgs: Array[String]) {
    val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray)
    
    // Invoke static method from JAR. Pass some sample arguments as a String[], one defined inline and one taken from the job arguments, using getResolvedOptions
    com.mycompany.myproject.MyClass.myStaticPublicMethod(Array("string parameter1", args("JOB_NAME")))
    
    // Alternatively, invoke a non-static public method.
    (new com.mycompany.myproject.MyClass).someMethod()
  }
}
```

# Arbeiten mit Ray Jobs in AWS Glue
<a name="ray-jobs-section"></a>

**Wichtig**  
AWS Glue for Ray wird ab dem 30. April 2026 nicht mehr für Neukunden geöffnet sein. Wenn Sie AWS Glue For Ray nutzen möchten, melden Sie sich vor diesem Datum an. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Funktionen, die denen von AWS Glue für Ray ähneln, finden Sie in Amazon EKS. Weitere Informationen finden Sie unter [Ende des Supports AWS Glue für Ray](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Dieser Abschnitt enthält Informationen zur Verwendung von AWS Glue For Ray-Jobs. Weitere Informationen AWS Glue zum Schreiben von Ray-Skripten finden Sie im [Programmieren von Ray-Skripten](aws-glue-programming-ray.md) Abschnitt.

**Topics**
+ [Erste Schritte mit AWS Glue for Ray](#author-job-ray-using)
+ [Unterstützte Ray-Laufzeitumgebungen](#author-job-ray-runtimes)
+ [Abrechnung für Worker in Ray-Aufträgen](#author-job-ray-worker-accounting)
+ [Verwendung von Auftragsparametern in Ray-Aufträgen](author-job-ray-job-parameters.md)
+ [Überwachung von Ray-Aufträgen mit Metriken](author-job-ray-monitor.md)

## Erste Schritte mit AWS Glue for Ray
<a name="author-job-ray-using"></a>

Für die Arbeit mit AWS Glue for Ray verwenden Sie dieselben AWS Glue Jobs und interaktiven Sessions wie AWS Glue für Spark. AWS Glue Jobs sind für die Ausführung desselben Skripts in wiederkehrenden Abständen konzipiert, während interaktive Sitzungen darauf ausgelegt sind, dass Sie Codefragmente sequentiell für dieselben bereitgestellten Ressourcen ausführen können. 

AWS Glue ETL und Ray unterscheiden sich darunter, sodass Sie in Ihrem Skript Zugriff auf verschiedene Tools, Funktionen und Konfigurationen haben. Als neues Berechnungsframework, das von verwaltet wird AWS Glue, hat Ray eine andere Architektur und verwendet ein anderes Vokabular, um zu beschreiben, was es tut. Weitere Informationen finden Sie in den [Architektur-Whitepapers](https://docs.ray.io/en/latest/ray-contribute/whitepaper.html) in der Ray-Dokumentation. 

**Anmerkung**  
AWS Glue for Ray ist in den Ländern USA Ost (Nord-Virginia), USA Ost (Ohio), USA West (Oregon), Asien-Pazifik (Tokio) und Europa (Irland) verfügbar.

### Ray-Jobs in der AWS Glue Studio Konsole
<a name="author-job-ray-using-console"></a>

Auf der Seite **Jobs** in der AWS Glue Studio Konsole können Sie eine neue Option auswählen, wenn Sie einen Job im AWS Glue Studio— **Ray-Skripteditor** erstellen. Wählen Sie diese Option, um einen Ray-Auftrag in der Konsole zu erstellen. Weitere Informationen zu Aufträgen und deren Verwendung finden Sie unter [Erstellen von Visual-ETL-Aufträgen](author-job-glue.md).

![\[Die Seite „Jobs“ AWS Glue Studio mit der ausgewählten Ray-Skript-Editor-Option.\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/ray_job_setup.png)


### Ray-Jobs im AWS CLI Sand-SDK
<a name="author-job-ray-using-cli"></a>

Ray-Jobs im AWS CLI verwenden dieselben SDK-Aktionen und -Parameter wie andere Jobs. AWS Glue for Ray führt neue Werte für bestimmte Parameter ein. Weitere Informationen zur Auftrags-API finden Sie unter [Jobs](aws-glue-api-jobs-job.md).

## Unterstützte Ray-Laufzeitumgebungen
<a name="author-job-ray-runtimes"></a>

Bei Spark-Aufträgen ermittelt `GlueVersion` die Versionen von Apache Spark und Python, die in jedem AWS Glue für Spark-Aufträge verfügbar sind. Die Python-Version gibt die Version an, die für Aufträge vom Typ Spark unterstützt wird. Dies ist nicht die Art und Weise, wie Ray-Laufzeitumgebungen konfiguriert sind.

Für Ray-Aufträge sollten Sie `GlueVersion` auf `4.0` oder höher festlegen. Welche Versionen von Ray, Python und weiteren Bibliotheken in Ihrem Ray-Auftrag verfügbar sind, wird jedoch durch das `Runtime`-Feld in der Auftragsdefinition bestimmt.

Die `Ray2.4` Laufzeitumgebung steht nach der Veröffentlichung mindestens 6 Monate lang zur Verfügung. Da sich Ray schnell weiterentwickelt, können Sie Aktualisierungen und Verbesserungen von Ray über zukünftige Versionen der Laufzeitumgebung einbinden.

Zulässige Werte: `Ray2.4`


| Wert der Laufzeit | Ray- und Python-Versionen | 
| --- | --- | 
| Ray2.4 (für AWS Glue 4.0\$1) |  Ray 2.4.0 Python 3.9  | 

**Zusätzliche Informationen**
+ Versionshinweise, die zu AWS Glue den Veröffentlichungen von Ray gehören, finden Sie unter[AWS Glue Versionen](release-notes.md#release-notes-versions).
+ Informationen zu Python-Bibliotheken, die in einer Laufzeitumgebung bereitgestellt werden, finden Sie unter [Mit Ray-Aufträgen bereitgestellte Module](edit-script-ray-env-dependencies.md#edit-script-ray-modules-provided).

## Abrechnung für Worker in Ray-Aufträgen
<a name="author-job-ray-worker-accounting"></a>

AWS Glue führt Ray-Jobs auf neuen Graviton-basierten EC2-Worker-Typen aus, die nur für Ray-Jobs verfügbar sind. Um diese Worker angemessen für die Workloads bereitzustellen, für die Ray entwickelt wurde, stellen wir für die meisten Worker ein anderes Verhältnis von Rechenressourcen zu Speicherressourcen bereit. Um diese Ressourcen zu berücksichtigen, verwenden wir die speicheroptimierte Datenverarbeitungseinheit (M-DPU) anstelle der Standard-Datenverarbeitungseinheit (DPU).
+ Eine M-DPU entspricht 4 V CPUs und 32 GB Arbeitsspeicher.
+ Eine DPU entspricht 4 V CPUs und 16 GB Speicher. DPUs werden verwendet, um Ressourcen in AWS Glue Spark-Jobs und entsprechenden Mitarbeitern zu berücksichtigen.

Ray-Aufträge haben derzeit Zugriff auf einen Worker-Typ, `Z.2X`. Der `Z.2X` Worker entspricht 2 M- DPUs (8 VCPUs, 64 GB Arbeitsspeicher) und verfügt über 128 GB Festplattenspeicher. Ein `Z.2X`-Computer stellt 8 Ray-Worker bereit (einen pro vCPU).

Die Anzahl der M-DPUs , die Sie gleichzeitig in einem Konto verwenden können, unterliegt einem Servicekontingent. Weitere Informationen zu Ihren AWS Glue Kontolimits finden Sie unter [AWS Glue Endpunkte und](https://docs.aws.amazon.com/general/latest/gr/glue.html) Kontingente.

Die Anzahl der Worker-Knoten, die einem Ray-Auftrag zur Verfügung stehen, geben Sie mit `--number-of-workers (NumberOfWorkers)` in der Auftragsdefinition an. Weitere Informationen zu Ray-Werten in der Auftrags-API finden Sie unter [Jobs](aws-glue-api-jobs-job.md).

Mit dem `--min-workers`-Auftragsparameter können Sie außerdem eine Mindestanzahl von Workern angeben, die ein Ray-Auftrag zuweisen muss. Informationen zu Auftragsparametern finden Sie unter [Referenz](author-job-ray-job-parameters.md#author-job-ray-parameters-reference). 

# Verwendung von Auftragsparametern in Ray-Aufträgen
<a name="author-job-ray-job-parameters"></a>

**Wichtig**  
AWS Glue for Ray wird ab dem 30. April 2026 nicht mehr für Neukunden geöffnet sein. Wenn Sie AWS Glue For Ray nutzen möchten, melden Sie sich vor diesem Datum an. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Funktionen, die denen von AWS Glue für Ray ähneln, finden Sie in Amazon EKS. Weitere Informationen finden Sie unter [Ende des Supports AWS Glue für Ray](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Sie legen Argumente für AWS Glue Ray-Jobs genauso fest wie Argumente AWS Glue für Spark-Jobs. Weitere Informationen zur AWS Glue API finden Sie unter[Jobs](aws-glue-api-jobs-job.md). Sie können AWS Glue Ray-Jobs mit verschiedenen Argumenten konfigurieren, die in dieser Referenz aufgeführt sind. Sie können auch Ihre eigenen Argumente angeben. 

Sie können einen Auftrag über die Konsole auf der Registerkarte **Job details** (Auftragsdetails) unter der Überschrift **Job Parameters** (Auftragsparameter) konfigurieren. Sie können einen Job auch über die Einstellung AWS CLI by für einen Job oder für die Einstellung `DefaultArguments` für einen Job, `Arguments` der ausgeführt wird, konfigurieren. Standardargumente und Auftragsparameter bleiben bei mehreren Ausführungen des Auftrags erhalten. 

Im Folgenden wird die Syntax zum Ausführen eines Auftrags mit `--arguments` für das Festlegen eines speziellen Parameters gezeigt.

```
$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py",--test-environment="true"'
```

Nachdem Sie die Argumente festgelegt haben, können Sie von Ihrem Ray-Auftrag aus über Umgebungsvariablen auf die Auftragsparameter zugreifen. Auf diese Weise können Sie Ihren Auftrag für jede Ausführung konfigurieren. Der Name der Umgebungsvariablen ist der Name des Auftragsarguments ohne das `--`-Präfix. 

Im vorherigen Beispiel würden die Variablennamen beispielsweise `scriptLocation` und `test-environment` lauten. Anschließend würden Sie das Argument über die in der Standardbibliothek verfügbaren Methoden abrufen: `test_environment = os.environ.get('test-environment')`. Weitere Informationen zum Zugriff auf Umgebungsvariablen mit Python finden Sie unter [OS-Modul](https://docs.python.org/3/library/os.html) in der Python-Dokumentation.

## Konfigurieren, wie Ray-Aufträge Protokolle erzeugen
<a name="author-job-ray-logging-configuration"></a>

Standardmäßig generieren Ray-Jobs Protokolle und Metriken, die an CloudWatch Amazon S3 gesendet werden. Sie können den `--logging_configuration`-Parameter verwenden, um zu ändern, wie Protokolle erzeugt werden. Derzeit können Sie damit verhindern, dass Ray-Aufträge verschiedene Arten von Protokollen erzeugen. Dieser Parameter verwendet ein JSON-Objekt, dessen Schlüssel denen entsprechen, die logs/behaviors Sie ändern möchten. Es unterstützt die folgenden Schlüssel:
+ `CLOUDWATCH_METRICS`— Konfiguriert eine Reihe von CloudWatch Metriken, die zur Visualisierung des Gesundheitszustands am Arbeitsplatz verwendet werden können. Weitere Informationen zu den Metriken finden Sie unter [Überwachung von Ray-Aufträgen mit Metriken](author-job-ray-monitor.md).
+ `CLOUDWATCH_LOGS`— Konfiguriert CloudWatch Protokolle, die Ray-Informationen über den Status der Ausführung des Jobs auf Anwendungsebene enthalten. Weitere Informationen über Protokolle finden Sie unter [Fehlerbehebung AWS Glue bei Ray-Fehlern aus Protokollen](troubleshooting-ray.md).
+ `S3`— Konfiguriert, was in Amazon S3 AWS Glue geschrieben wird, hauptsächlich ähnliche Informationen wie CloudWatch Logs, aber als Dateien und nicht als Log-Streams.

Um ein Ray-Protokollierungsverhalten zu deaktivieren, geben Sie den Wert `{\"IS_ENABLED\": \"False\"}` an. Um beispielsweise CloudWatch Metriken und CloudWatch Protokolle zu deaktivieren, geben Sie die folgende Konfiguration an:

```
"--logging_configuration": "{\"CLOUDWATCH_METRICS\": {\"IS_ENABLED\": \"False\"}, \"CLOUDWATCH_LOGS\": {\"IS_ENABLED\": \"False\"}}"
```

## Referenz
<a name="author-job-ray-parameters-reference"></a>

 Ray-Aufträge erkennen die folgenden Argumentnamen, die Sie zum Einrichten der Skriptumgebung für Ihre Ray-Aufträge und Auftragsausführungen verwenden können:
+ `--logging_configuration` – Wird verwendet, um die Erzeugung verschiedener Protokolle zu stoppen, die von Ray-Aufträgen erstellt werden. Diese Protokolle werden standardmäßig für alle Ray-Aufträge erstellt. Format: String-escaped JSON-Objekt. Weitere Informationen finden Sie unter [Konfigurieren, wie Ray-Aufträge Protokolle erzeugen](#author-job-ray-logging-configuration).
+ `--min-workers` – Die Mindestanzahl von Worker-Knoten, die einem Ray-Auftrag zugewiesen werden. Ein Worker-Knoten kann mehrere Replikate ausführen, eines pro virtueller CPU. Format: Ganzzahl. Minimum: 0. Maximum: Der in `--number-of-workers (NumberOfWorkers)` angegebene Wert in der Auftragsdefinition. Weitere Informationen zur Abrechnung von Worker-Knoten finden Sie unter [Abrechnung für Worker in Ray-Aufträgen](ray-jobs-section.md#author-job-ray-worker-accounting).
+ `--object_spilling_config`— AWS Glue denn Ray unterstützt die Verwendung von Amazon S3 als Möglichkeit, den für Rays Objektspeicher verfügbaren Speicherplatz zu erweitern. Um dieses Verhalten zu aktivieren, können Sie Ray mit diesem Parameter ein JSON-Konfigurationsobjekt zur Verfügung stellen, das *Objekte ausgibt*. Weitere Informationen zur Konfiguration der Ray-Objekt-Ausgabe finden Sie unter [Objekt-Ausgabe](https://docs.ray.io/en/latest/ray-core/objects/object-spilling.html) in der Ray-Dokumentation. Format: JSON-Objekt.

  AWS Glue for Ray unterstützt nur die gleichzeitige Übertragung auf die Festplatte oder die gleichzeitige Übertragung auf Amazon S3. Sie können mehrere Standorte für die Ausgabe angeben, sofern diese Einschränkung eingehalten wird. Wenn die Ausgabe zu Amazon S3 erfolgt, müssen Sie Ihrem Auftrag für diesen Bucket auch IAM-Berechtigungen hinzufügen.

  Wenn Sie ein JSON-Objekt als Konfiguration mit der CLI bereitstellen, müssen Sie es als Zeichenfolge bereitstellen, wobei die Zeichenfolge des JSON-Objekts mit Escape-Zeichen versehen ist. Ein Zeichenfolgenwert zum Übertragen auf einen Amazon S3-Pfad würde beispielsweise wie folgt aussehen: `"{\"type\": \"smart_open\", \"params\": {\"uri\":\"s3path\"}}"`. Geben Sie diesen Parameter als JSON-Objekt ohne zusätzliche Formatierung an. AWS Glue Studio
+ `--object_store_memory_head` – Der Speicher, der dem Plasma-Objektspeicher auf dem Ray-Head-Knoten zugewiesen ist. Diese Instance führt Cluster-Management-Services sowie Worker-Replikate aus. Der Wert stellt den Prozentsatz des freien Speichers auf der Instance nach einem Warmstart dar. Sie verwenden diesen Parameter, um speicherintensive Workloads zu optimieren – die Standardeinstellungen sind für die meisten Anwendungsfälle akzeptabel. Format: positive Ganzzahl. Minimum: 1. Maximum: 100.

  Weitere Informationen zu Plasma finden Sie unter [The Plasma In-Memory Object Store](https://ray-project.github.io/2017/08/08/plasma-in-memory-object-store.html) in der Ray-Dokumentation.
+ `--object_store_memory_worker` – Der Speicher, der dem Plasma-Objektspeicher auf den Ray-Worker-Knoten zugewiesen ist. Diese Instances führen nur Worker-Replikate aus. Der Wert stellt den Prozentsatz des freien Speichers auf der Instance nach einem Warmstart dar. Dieser Parameter wird zum Optimieren speicherintensiver Workloads verwendet – die Standardwerte sind für die meisten Anwendungsfälle akzeptabel. Format: positive Ganzzahl. Minimum: 1. Maximum: 100.

  Weitere Informationen zu Plasma finden Sie unter [The Plasma In-Memory Object Store](https://ray-project.github.io/2017/08/08/plasma-in-memory-object-store.html) in der Ray-Dokumentation.
+ `--pip-install` – Eine Reihe von zu installierenden Python-Paketen. Mit diesem Argument können Sie Pakete von PyPI installieren. Format: durch Kommas getrennte Liste.

  Ein PyPI-Paketeintrag liegt im Format `package==version` vor und enthält den PyPI-Namen und die Version Ihres Zielpakets. Einträge verwenden den Python-Versionsabgleich, um das Paket und die Version abzugleichen, wie z. B. `==`, nicht das einzelne Gleichheitszeichen `=`. Es gibt andere Operatoren für den Versionsabgleich. Weitere Informationen finden Sie unter [PEP 440](https://peps.python.org/pep-0440/#version-matching) auf der Python-Website. Sie können auch benutzerdefinierte Module mit `--s3-py-modules` bereitstellen. 
+ `--s3-py-modules` – Eine Reihe von Amazon-S3-Pfaden, die Python-Modulverteilungen hosten. Format: durch Kommas getrennte Liste.

  Sie können dies verwenden, um Ihre eigenen Module an Ihren Ray-Auftrag zu verteilen. Sie können mit `--pip-install` auch Module von PyPI bereitstellen. Im Gegensatz zu AWS Glue ETL werden benutzerdefinierte Module nicht über Pip eingerichtet, sondern zur Verteilung an Ray übergeben. Weitere Informationen finden Sie unter [Zusätzliche Python-Module für Ray-Aufträge](edit-script-ray-env-dependencies.md#edit-script-ray-python-libraries-additional).
+ `--working-dir` – Ein Pfad zu einer in Amazon S3 gehosteten ZIP-Datei, die Dateien enthält, die an alle Knoten verteilt werden sollen, auf denen Ihr Ray-Auftrag ausgeführt wird. Format: Zeichenfolge. Weitere Informationen finden Sie unter [Bereitstellen von Dateien für Ihren Ray-Auftrag](edit-script-ray-env-dependencies.md#edit-script-ray-working-directory).

# Überwachung von Ray-Aufträgen mit Metriken
<a name="author-job-ray-monitor"></a>

**Wichtig**  
AWS Glue for Ray wird ab dem 30. April 2026 nicht mehr für Neukunden geöffnet sein. Wenn Sie AWS Glue For Ray nutzen möchten, melden Sie sich vor diesem Datum an. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Funktionen, die denen von AWS Glue für Ray ähneln, finden Sie in Amazon EKS. Weitere Informationen finden Sie unter [Ende des Supports AWS Glue für Ray](https://docs.aws.amazon.com/glue/latest/dg/awsglue-ray-jobs-availability-change.html).

Sie können Ray-Jobs mit AWS Glue Studio Amazon überwachen CloudWatch. CloudWatch sammelt und verarbeitet Rohmetriken von AWS Glue Ray und stellt sie so für Analysen zur Verfügung. Diese Metriken werden in der AWS Glue Studio Konsole visualisiert, sodass Sie Ihren Job während der Ausführung überwachen können.

Einen allgemeinen Überblick über die Überwachung finden Sie AWS Glue unter[Überwachung AWS Glue anhand von CloudWatch Amazon-Metriken](monitoring-awsglue-with-cloudwatch-metrics.md). Einen allgemeinen Überblick über die Verwendung von CloudWatch Metriken, die von veröffentlicht wurden AWS Glue, finden Sie unter[Überwachung mit Amazon CloudWatch](monitor-cloudwatch.md).

## Ray-Jobs in der AWS Glue Konsole überwachen
<a name="author-job-ray-monitor-console"></a>

Auf der Detailseite für einen Joblauf unter dem Abschnitt **Ausführungsdetails** können Sie sich vorgefertigte aggregierte Diagramme ansehen, die Ihre verfügbaren Job-Metriken visualisieren. AWS Glue Studio sendet Job-Metriken CloudWatch für jeden Job-Lauf an. Damit können Sie ein Profil Ihres Clusters und Ihrer Aufgaben erstellen und auf detaillierte Informationen zu jedem Knoten zugreifen.

Weitere Informationen zu verfügbaren Metrikdiagrammen finden Sie unter [Amazon CloudWatch Metriken für einen Ray-Joblauf anzeigen](view-job-runs.md#monitoring-job-run-metrics-ray).

## Überblick über die Ray-Job-Metriken in CloudWatch
<a name="author-job-ray-monitor-cw"></a>

Wir veröffentlichen Ray-Metriken, wenn die detaillierte Überwachung aktiviert ist CloudWatch. Metriken werden im `Glue/Ray` CloudWatch Namespace veröffentlicht.
+ **Instance-Metriken**

  Wir veröffentlichen Metriken über die CPU-, Speicher- und Festplattenauslastung von Instances, die einem Auftrag zugewiesen sind. Diese Metriken werden anhand von Features wie `ExecutorId`, `ExecutorType` und `host` identifiziert. Diese Metriken sind eine Teilmenge der Standardmetriken für CloudWatch Linux-Agenten. Informationen zu den Namen und Funktionen von Metriken finden Sie in der CloudWatch Dokumentation. Weitere Informationen finden Sie unter Vom [ CloudWatch Agenten gesammelte Metriken](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/metrics-collected-by-CloudWatch-agent.html).
+ **Ray-Cluster-Metriken**

  Wir leiten Metriken von den Ray-Prozessen, die Ihr Skript ausführen, an diesen Namespace weiter und stellen Ihnen dann die für Sie wichtigsten Metriken zur Verfügung. Die verfügbaren Metriken können sich je nach Ray-Version unterscheiden. Weitere Informationen dazu, welche Ray-Version Ihr Auftrag ausführt, finden Sie unter [AWS Glue Versionen](release-notes.md). 

  Ray erfasst Metriken auf Instance-Ebene. Es stellt auch Metriken für Aufgaben und den Cluster bereit. Weitere Informationen zur zugrunde liegenden Metrikstrategie von Ray finden Sie unter [Metriken](https://docs.ray.io/en/latest/ray-observability/ray-metrics.html#system-metrics) in der Ray-Dokumentation.

**Anmerkung**  
 Wir veröffentlichen keine Ray-Metriken im `Glue/Job Metrics/`-Namespace, der nur für AWS Glue -ETL-Aufträge verwendet wird.

# Konfigurieren von Auftragseigenschaften für Python-Shell-Aufträge in AWS Glue
<a name="add-job-python"></a>

 Sie können eine Python-Shell-Aufgabe verwenden, um Python-Skripte in AWS Glue als Shell auszuführen. Mit einem Python-Shell-Auftrag können Sie Skripte ausführen, die mit Python 3.6 oder Python 3.9 kompatibel sind. 

**Anmerkung**  
 Der Support für Python-Shell v3.6 endet am 1. März 2026. Informationen zur Migration Ihrer Workloads finden Sie unter [Migration von AWS Glue Python-Shell-Jobs](https://docs.aws.amazon.com/glue/latest/dg/pyshell-migration.html). Wenn Sie mit der Python-Shell v3.9 fortfahren möchten, finden Sie unter [Migrieren von Python-Shell 3.6 auf Python-Shell 3.9](#migrating-version-pyshell36-to-pyshell39) entsprechende Informationen. 

**Topics**
+ [Einschränkungen](#python-shell-limitations)
+ [Ausführungsumgebung](#python-shell-execution-environment)
+ [Definieren von Auftragseigenschaften für Python-Shell-Aufträge](#create-job-python-properties)
+ [Für Python-Shell-Aufträge unterstützte Bibliotheken](#python-shell-supported-library)
+ [Bereitstellen Ihrer eigenen Python-Bibliothek](#create-python-extra-library)
+ [Verwendung AWS CloudFormation mit Python-Shell-Jobs in AWS Glue](#python-shell-jobs-cloudformation)
+ [Migrieren von Python-Shell 3.6 auf Python-Shell 3.9](#migrating-version-pyshell36-to-pyshell39)
+ [Migrieren Sie von AWS Glue Python-Shell-Jobs](pyshell-migration.md)

## Einschränkungen
<a name="python-shell-limitations"></a>

Beachten Sie die folgenden Einschränkungen von Python-Shell-Aufträgen:
+  Sie können für Python-Shell-Aufträge keine Auftragslesezeichen verwenden. 
+ Sie können beliebige Python-Bibliotheken in Python 3.9 und höher nicht als `.egg`-Dateien packen. Nutzen Sie stattdessen `.whl`.
+ Die `--extra-files`-Option kann aufgrund einer Beschränkung für temporäre Kopien von S3-Daten nicht verwendet werden.

## Ausführungsumgebung
<a name="python-shell-execution-environment"></a>

Python-Shell-Jobs werden in einer verwalteten Ausführungsumgebung ausgeführt, die Zugriff auf lokalen Speicher für die temporäre Datenverarbeitung bietet:

**Lokaler temporärer Speicher**  
Das `/tmp` Verzeichnis steht während der Auftragsausführung als temporärer Speicher zur Verfügung. Dieses Verzeichnis bietet ungefähr 14 GiB freien Speicherplatz, den Sie verwenden können für:  
+ Verarbeitung temporärer Dateien
+ Zwischenspeicherung von Daten
+ Zwischenspeichern kleiner Datensätze
Das `/tmp` Verzeichnis ist kurzlebig und wird nach Abschluss des Jobs bereinigt. Verwenden Sie es nicht für die dauerhafte Speicherung wichtiger Daten.

## Definieren von Auftragseigenschaften für Python-Shell-Aufträge
<a name="create-job-python-properties"></a>

In diesen Abschnitten wird das Definieren von Jobeigenschaften in AWS Glue Studio oder mithilfe der AWS CLI beschrieben.

### AWS Glue Studio
<a name="create-job-python-properties-studio"></a>

Wenn Sie Ihren Python-Shell-Auftrag in AWS Glue Studio definieren, stellen Sie einige der folgenden Eigenschaften bereit: 

**IAM role (IAM-Rolle)**  
Geben Sie die AWS Identity and Access Management (IAM-) Rolle an, die für die Autorisierung von Ressourcen verwendet wird, die für die Ausführung des Jobs und den Zugriff auf Datenspeicher verwendet werden. Weitere Informationen über die Berechtigungen für die Ausführung von Aufträgen in AWS Glue finden Sie unter [Identitäts- und Zugriffsmanagement für AWS Glue](security-iam.md).

**Typ**  
Wählen Sie **Python shell (Python-Shell)** aus, um ein Python-Skript mit dem Auftragsbefehl `pythonshell` auszuführen.

**Python-Version**  
Wählen Sie die Python-Version aus. Die Standardeinstellung ist Python 3.9. Gültige Versionen sind Python 3.6 und Python 3.9.

**Allgemeine Analyse-Bibliotheken laden (empfohlen)**  
Wählen Sie diese Option, um allgemeine Bibliotheken für Python 3.9 in die Python-Shell aufzunehmen.  
Wenn Ihre Bibliotheken entweder benutzerdefiniert sind oder mit den vorinstallierten in Konflikt stehen, können Sie sich dafür entscheiden, keine gängigen Bibliotheken zu installieren. Sie können jedoch neben den üblichen Bibliotheken weitere Bibliotheken installieren.  
Wenn Sie diese Option auswählen, wird die `library-set`-Option auf `analytics` gesetzt. Wenn Sie diese Option abwählen, wird die `library-set`-Option auf `none` gesetzt. 

**Name der Skriptdatei und Skriptpfad**  
Der Code im Skript definiert die prozedurale Logik Ihres Auftrags. Geben Sie den Skript-Namen und den Speicherort in Amazon Simple Storage Service (Amazon S3) an. Vergewissern Sie sich, dass sich keine Datei mit dem Namen des Skriptverzeichnisses im Pfad befindet. Weitere Informationen über die Verwendung von Skripts finden Sie unter [AWS Glue Leitfaden zur Programmierung](edit-script.md).

**Script**  
Der Code im Skript definiert die prozedurale Logik Ihres Auftrags. Sie können das Skript in Python 3.6 oder Python 3.9 codieren. Sie können ein Skript in AWS Glue Studio bearbeiten.

**Datenverarbeitungseinheiten**  
Die maximale Anzahl von AWS Glue Datenverarbeitungseinheiten (DPUs), die zugewiesen werden können, wenn dieser Job ausgeführt wird. Eine DPU ist ein relatives Maß für die Rechenleistung, das sich aus 4 V CPUs Rechenkapazität und 16 GB Arbeitsspeicher zusammensetzt. Weitere Informationen finden Sie unter [AWS Glue Preise](https://aws.amazon.com/glue/pricing/).   
Sie können den Wert auf 0,0625 oder 1 festlegen. Der Standardwert ist 0.0625. In beiden Fällen beträgt die lokale Festplatte für die Instance 20 GB.

### CLI
<a name="create-job-python-properties-cli"></a>

 Sie können auch einen **Python-Shell-Job** mit dem erstellen AWS CLI, wie im folgenden Beispiel. 

```
 aws glue create-job --name python-job-cli --role Glue_DefaultRole 
     --command '{"Name" :  "pythonshell", "PythonVersion": "3.9", "ScriptLocation" : "s3://amzn-s3-demo-bucket/scriptname.py"}'  
     --max-capacity 0.0625
```

**Anmerkung**  
 Sie müssen die Version von AWS Glue nicht angeben, weil der Parameter `--glue-version` nicht für AWS Glue-Shell-Aufträge gilt. Jede angegebene Version wird ignoriert. 

 Jobs, die Sie mit der AWS CLI Standardeinstellung Python 3 erstellen. Gültige Python-Versionen sind 3 (entsprechend 3.6) und 3.9. Um Python 3.6 anzugeben, fügen Sie dieses Tupel dem `--command`-Parameter hinzu: `"PythonVersion":"3"` 

 Um Python 3.9 anzugeben, fügen Sie dieses Tupel dem `--command`-Parameter hinzu: `"PythonVersion":"3.9"` 

 Um die maximale Kapazität festzulegen, die von einem Python-Shell-Auftrag genutzt werden darf, geben Sie den Parameter `--max-capacity` an. Der Parameter `--allocated-capacity` kann für Python-Shell-Aufträge nicht verwendet werden. 

## Für Python-Shell-Aufträge unterstützte Bibliotheken
<a name="python-shell-supported-library"></a>

 In der Python-Shell mit Python 3.9 können Sie den Bibliothekssatz auswählen, um vorgefertigte Bibliothekssätze für Ihre Anforderungen zu verwenden. Sie können die `library-set`-Option verwenden, um den Bibliothekssatz auszuwählen. Gültige Werte sind `analytics` und `none`. 

Die Umgebung für die Ausführung von Python-Shell-Aufträgen unterstützt die folgenden Bibliotheken: 


| Python-Version | Python 3.6 | Python 3.9 | 
| --- | --- | --- | 
| Bibliothek-Set | N/A | Analytik | Keine | 
| avro |  | 1.11.0 |  | 
| awscli | 116.242 | 1,23,5 | 1,23,5 | 
| awswrangler |  | 2.15,1 |  | 
| botocore | 1.12,232 | 1,24,21 | 1,23,5 | 
| boto3 | 1,9,203 | 1,21,21 |  | 
| elasticsearch |  | 8.2.0 |  | 
| numpy | 1,16.2 | 1.22.3 |  | 
| pandas | 0,24,2 | 1.4.2 |  | 
| psycopg2 |  | 2.9.3 |  | 
| pyathena |  | 2.5.3 |  | 
| PyGreSQL | 5.0.6 |  |  | 
| PyMySQL |  | 1.0.2 |  | 
| pyodbc |  | 4.0.32 |  | 
| pyorc |  | 0.6.0 |  | 
| redshift-connector |  | 2.0.907 |  | 
| Anforderungen | 2.22.0 | 2,27,1 |  | 
| Scikit-learn | 0,20,3 | 1.0.2 |  | 
| scipy | 1.2.1 | 1.8.0 |  | 
| SQLAlchemy |  | 1,4,36 |  | 
| s3fs |  | 2022,3,0 |  | 

Für wissenschaftliches Computing können Sie die Bibliothek `NumPy` in einer Python-Shell-Aufgabe verwenden. Weitere Informationen finden Sie unter [NumPy](http://www.numpy.org). Das folgende Beispiel zeigt ein NumPy Skript, das in einem Python-Shell-Job verwendet werden kann. Das Skript gibt „Hello World“ und die Ergebnisse mehrerer mathematischer Berechnungen aus.

```
import numpy as np
print("Hello world")

a = np.array([20,30,40,50])
print(a)

b = np.arange( 4 )

print(b)

c = a-b

print(c)

d = b**2

print(d)
```

## Bereitstellen Ihrer eigenen Python-Bibliothek
<a name="create-python-extra-library"></a>

### Verwenden von PIP
<a name="create-python-extra-library-pip"></a>

Mit Python-Shell, die Python 3.9 verwendet, können Sie zusätzliche Python-Module oder verschiedene Versionen auf der Auftragsebene bereitstellen. Sie können die Option „`--additional-python-modules`“ mit verschiedenen kommagetrennten Python-Modulen verwenden, um ein neues Modul hinzuzufügen oder die Version eines vorhandenen Moduls zu ändern. Sie können benutzerdefinierte Python-Module, die auf Amazon S3 gehostet werden, nicht mit diesem Parameter bereitstellen, wenn Sie Python-Shell-Aufträge verwenden.

Verwenden Sie beispielsweise zum Aktualisieren oder Hinzufügen eines neuen `scikit-learn`-Moduls den folgenden Schlüssel und Wert: `"--additional-python-modules", "scikit-learn==0.21.3"`.

AWS Glue verwendet den Python Package Installer (pip3), um die zusätzlichen Module zu installieren. Sie können zusätzliche pip3-Optionen innerhalb des `--additional-python-modules`-Werts übergeben. Beispiel, `"scikit-learn==0.21.3 -i https://pypi.python.org/simple/"`. Es gelten alle Inkompatibilitäten oder Einschränkungen von pip3.

**Anmerkung**  
Um Inkompatibilitäten in Zukunft zu vermeiden, empfehlen wir die Verwendung von Bibliotheken, die für Python 3.9 erstellt wurden.

### Verwenden einer Egg- oder Whl-Datei
<a name="create-python-extra-library-egg-whl"></a>

Möglicherweise verfügen Sie bereits über eine oder mehrere, als `.egg`- oder `.whl`-Datei verpackte Python-Bibliotheken. Wenn dies der Fall ist, können Sie diese für Ihre Aufgabe angeben, indem Sie die AWS Command Line Interface (AWS CLI) unter dem Flag „`--extra-py-files`“ verwenden wie im folgenden Beispiel gezeigt.

```
aws glue create-job --name python-redshift-test-cli --role role --command '{"Name" :  "pythonshell", "ScriptLocation" : "s3://MyBucket/python/library/redshift_test.py"}' 
     --connections Connections=connection-name --default-arguments '{"--extra-py-files" : ["s3://amzn-s3-demo-bucket/EGG-FILE", "s3://amzn-s3-demo-bucket/WHEEL-FILE"]}'
```

Wenn Sie sich nicht sicher sind, wie Sie eine `.egg`- oder `.whl`-Datei aus einer Python-Bibliothek erstellen, führen Sie die folgenden Schritte aus. Dieses Beispiel gilt für macOS, Linux und Windows Subsystem for Linux (WSL).

**So erstellen Sie eine Python-EGG- oder -WHL-Datei**

1. Erstellen Sie einen Amazon-Redshift-Cluster in einer Virtual Private Cloud (VPC) und fügen Sie einer Tabelle einige Daten hinzu.

1. Erstellen Sie eine AWS Glue Verbindung für die VPC-SecurityGroup-Subnet Kombination, mit der Sie den Cluster erstellt haben. Testen Sie, ob die Verbindung erfolgreich ist.

1. Erstellen Sie ein Verzeichnis mit dem Namen `redshift_example` und eine Datei mit dem Namen `setup.py`. Fügen Sie folgenden Code in ei `setup.py`.

   ```
   from setuptools import setup
   
   setup(
       name="redshift_module",
       version="0.1",
       packages=['redshift_module']
   )
   ```

1. Erstellen Sie im Verzeichnis `redshift_example` das Verzeichnis `redshift_module`. Erstellen Sie im Verzeichnis `redshift_module` die Dateien `__init__.py` und `pygresql_redshift_common.py`.

1. Lassen Sie die Datei `__init__.py` leer. Fügen Sie in `pygresql_redshift_common.py` folgenden Code ein. Ersetzen Sie*port*, *db\$1name**user*, und *password\$1for\$1user* durch spezifische Details für Ihren Amazon Redshift Redshift-Cluster. *table\$1name*Ersetzen Sie durch den Namen der Tabelle in Amazon Redshift.

   ```
   import pg
   
   
   def get_connection(host):
       rs_conn_string = "host=%s port=%s dbname=%s user=%s password=%s" % (
           host, port, db_name, user, password_for_user)
   
       rs_conn = pg.connect(dbname=rs_conn_string)
       rs_conn.query("set statement_timeout = 1200000")
       return rs_conn
   
   
   def query(con):
       statement = "Select * from table_name;"
       res = con.query(statement)
       return res
   ```

1. Wechseln Sie zum Verzeichnis `redshift_example`, sofern Sie dieses noch nicht aufgerufen haben.

1. Führen Sie eine der folgenden Aktionen aus:
   + Führen Sie den folgenden Befehl aus, um eine `.egg`-Datei zu erstellen.

     ```
     python setup.py bdist_egg
     ```
   + Führen Sie den folgenden Befehl aus, um eine `.whl`-Datei zu erstellen.

     ```
     python setup.py bdist_wheel
     ```

1. Installieren Sie die für den vorangehenden Befehl erforderlichen Abhängigkeiten.

1. Der Befehl erstellt eine Datei im Verzeichnis `dist`.
   + Wenn Sie eine EGG-Datei erstellt haben, hat diese den Namen `redshift_module-0.1-py2.7.egg`.
   + Wenn Sie eine Wheel-Datei erstellt haben, hat diese den Namen `redshift_module-0.1-py2.7-none-any.whl`.

   Laden Sie diese Datei in Amazon S3 hoch.

   In diesem Beispiel ist der Pfad der hochgeladenen Datei *s3://amzn-s3-demo-bucket/EGG-FILE* oder *s3://amzn-s3-demo-bucket/WHEEL-FILE*. 

1. Erstellen Sie eine Python-Datei, die als Skript für die AWS Glue-Aufgabe verwendet werden soll, und fügen Sie der Datei den folgenden Code hinzu.

   ```
   from redshift_module import pygresql_redshift_common as rs_common
   
   con1 = rs_common.get_connection(redshift_endpoint)
   res = rs_common.query(con1)
   
   print "Rows in the table cities are: "
   
   print res
   ```

1. Laden Sie die vorangehende Datei in Amazon S3 hoch. In diesem Beispiel ist der Pfad der hochgeladenen Datei *s3://amzn-s3-demo-bucket/scriptname.py*. 

1. Erstellen Sie einen Python-Shell-Auftrag, der dieses Skript verwendet. Geben Sie in der AWS Glue-Konsole auf der Seite **Job properties (Aufgabeneigenschaften)** den Pfad zur `.egg/.whl`-Datei im Feld **Python library path (Python-Bibliothekspfad)** an. Wenn es mehrere `.egg/.whl`- und Python-Dateien gibt, geben Sie in diesem Feld eine durch Komma getrennte Liste ein. 

   Beim Ändern oder Umbenennen von `.egg`-Dateien müssen die Dateinamen die Standardnamen verwenden, die mit dem Befehl „python setup.py bdist\$1egg“ generiert werden, oder die Benennungskonventionen des Python-Moduls einhalten. Weitere Informationen finden Sie in den [Vorgaben für Python-Code](https://www.python.org/dev/peps/pep-0008/). 

   Erstellen Sie mit dem AWS CLI einen Job mit einem Befehl, wie im folgenden Beispiel.

   ```
   aws glue create-job --name python-redshift-test-cli --role Role --command '{"Name" :  "pythonshell", "ScriptLocation" : "s3://amzn-s3-demo-bucket/scriptname.py"}' 
        --connections Connections="connection-name" --default-arguments '{"--extra-py-files" : ["s3://amzn-s3-demo-bucket/EGG-FILE", "s3://amzn-s3-demo-bucket/WHEEL-FILE"]}'
   ```

   Wenn der Job ausgeführt wird, druckt das Skript die Zeilen, die in der *table\$1name* Tabelle im Amazon Redshift Redshift-Cluster erstellt wurden.

## Verwendung AWS CloudFormation mit Python-Shell-Jobs in AWS Glue
<a name="python-shell-jobs-cloudformation"></a>

 Sie können AWS CloudFormation mit Python-Shell-Jobs in verwendenAWS Glue. Im Folgenden wird ein Beispiel gezeigt: 

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  Python39Job:
    Type: 'AWS::Glue::Job'
    Properties:
      Command:
        Name: pythonshell
        PythonVersion: '3.9'
        ScriptLocation: 's3://bucket/location'
      MaxRetries: 0
      Name: python-39-job
      Role: RoleName
```

 Die Amazon CloudWatch Logs-Gruppe für die Ausgabe von Python-Shell-Jobs lautet`/aws-glue/python-jobs/output`. Informationen zu Fehlern finden Sie in der Protokollgruppe `/aws-glue/python-jobs/error`. 

## Migrieren von Python-Shell 3.6 auf Python-Shell 3.9
<a name="migrating-version-pyshell36-to-pyshell39"></a>

 So migrieren Sie Ihre Python-Shell-Jobs auf die neueste AWS Glue Version: 

1.  Wählen Sie in der AWS Glue Konsole ([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)) Ihren vorhandenen Python-Shell-Job aus. 

1.  Legen Sie auf der Registerkarte mit den **Auftragsdetails** die Python-Version auf `Python 3.9` fest und wählen Sie **Speichern** aus. 

1.  Stellen Sie sicher, dass Ihr Auftragsskript mit Python 3.9 kompatibel ist und erfolgreich ausgeführt wird. 

# Migrieren Sie von AWS Glue Python-Shell-Jobs
<a name="pyshell-migration"></a>

 AWS hat 2018 die AWS Glue-Python-Shell-Jobs AWS gestartet und 2018 die AWS Glue-Python-Shell-Jobs gestartet, um Kunden eine einfache Möglichkeit zu bieten, Python-Skripte für small-to-medium große ETL-Jobs auszuführen und SQL-Abfragen auszulösen. Inzwischen gibt es jedoch modernere und flexiblere Optionen, um die Workloads zu bewältigen, mit denen derzeit gearbeitet PythonShell wird. In diesem Thema wird erklärt, wie Sie Ihre Workloads von AWS Glue Python Shell-Jobs zu einer dieser alternativen Optionen migrieren, um die neueren verfügbaren Funktionen zu nutzen. 

 In diesem Thema wird erklärt, wie Sie von AWS Glue-Python-Shell-Jobs zu alternativen Optionen migrieren. 

## Migration der Arbeitslast zu AWS Glue Spark-Jobs
<a name="pyshell-migration-to-glue-spark-jobs"></a>

 [AWS Glue Spark und PySpark Jobs](https://docs.aws.amazon.com/glue/latest/dg/spark_and_pyspark.html) ermöglichen es Ihnen, Ihre Workloads verteilt auszuführen. Da sowohl AWS Glue Python Shell-Jobs als auch AWS Glue Spark-Jobs auf derselben Plattform ausgeführt werden, ist die Migration einfach und Sie können weiterhin bestehende AWS Glue-Funktionen verwenden, die Sie mit Python Shell-Jobs verwenden, wie AWS Glue-Workflows, AWS Glue-Trigger, die Amazon EventBridge Integration von AWS Glue, die\$1 PIP-basierte Paketinstallation usw. 

 AWS Glue Spark-Jobs sind jedoch für die Ausführung von Spark-Workloads konzipiert, und die Mindestanzahl von Workern beträgt 2. Wenn Sie von Python-Shell-Aufträgen migrieren, ohne Ihre Skripte zu ändern, wird nur ein Worker tatsächlich verwendet, und die anderen Worker bleiben inaktiv. Dadurch werden Ihre Kosten steigen. 

 Um es effizient zu gestalten, schreiben Sie Ihr Python-Auftragsskript neu, um die Funktionen von Spark zu nutzen und die Workload auf mehrere Worker zu verteilen. Wenn Ihr Python-Skript auf Pandas basiert, ist die Migration mit der neuen Pandas-API zu Spark ganz einfach. Erfahren Sie mehr darüber [im AWS Big Data-Blog: Tauchen Sie tief in AWS Glue 4.0 für Apache Spark](https://aws.amazon.com/blogs/big-data/dive-deep-into-aws-glue-4-0-for-apache-spark/) ein. 

## Workload wird migriert zu AWS Lambda
<a name="pyshell-migration-to-aws-lambda"></a>

 AWS Lambda ist ein serverloser Computerdienst, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Da AWS Lambda kürzere Startzeiten und flexiblere Optionen für die Datenverarbeitungskapazität bietet, können Sie von diesen Vorteilen profitieren. Für die Verwaltung zusätzlicher Python-Bibliotheken verwenden Python-Shell-Aufträge von AWS Glue eine PIP-basierte Installation. Für müssen Sie AWS Lambda jedoch eine der folgenden Optionen wählen: ein ZIP-Archiv, ein Container-Image oder Lambda Layers. 

 Andererseits beträgt das maximale Timeout 900 Sekunden (15 Minuten). AWS Lambda Wenn die Jobdauer Ihres bestehenden AWS Glue Python Shell-Job-Workloads mehr als diese ist oder wenn Ihr Workload ein stacheliges Muster aufweist, das zu längeren Jobdauern führen kann, empfehlen wir, stattdessen andere Optionen zu prüfen. AWS Lambda

## Migrieren von Workloads zu Amazon ECS/Fargate
<a name="pyshell-migration-to-ecs-aws-fargate"></a>

 Amazon Elastic Container Service (Amazon ECS) ist ein vollständig verwalteter Service, der die Bereitstellung, Verwaltung und Skalierung von containerisierten Anwendungen vereinfacht. AWS Fargate ist eine serverlose Rechen-Engine für containerisierte Workloads, die auf Amazon ECS und Amazon Elastic Kubernetes Service (Amazon EKS) ausgeführt werden. Bei Amazon ECS und Fargate gibt es kein maximales Timeout. Daher sind sie eine gute Option für Aufträge mit langer Laufzeit. Da Sie die volle Kontrolle über Ihr Container-Image haben, können Sie Ihr Python-Skript und zusätzliche Python-Bibliotheken in den Container einfügen und verwenden. Sie müssen Ihr Python-Skript jedoch containerisieren, um diesen Ansatz verfolgen zu können. 

## Migrieren von Workloads für Apache-Airflow-Python-Operator
<a name="pyshell-migration-to-amazon-mwaa-python-operator"></a>

 Amazon Managed Workflows for Apache Airflow (Managed Workflows for Apache Airflow) ist ein verwalteter Orchestrierungsservice für Apache Airflow, der es einfacher macht, end-to-end Daten-Pipelines in der Cloud in großem Maßstab einzurichten und zu betreiben. Wenn Sie bereits über eine MWAA-Umgebung verfügen, ist es einfach, den Python-Operator anstelle von AWS Glue-Python-Shell-Jobs zu verwenden. Der Python-Operator ist ein Operator, der Python-Code innerhalb eines Airflow-Workflows ausführt. Wenn Sie jedoch noch keine MWAA-Umgebung haben, empfehlen wir, andere Optionen zu prüfen. 

## Migration der Arbeitslast zu KI-Schulungsjobs Amazon SageMaker AI
<a name="pyshell-migration-to-amazon-sagemaker-ai"></a>

 Amazon SageMaker AI Training ist ein vollständig verwalteter Service für maschinelles Lernen (ML), der Ihnen hilft Amazon SageMaker AI , eine Vielzahl von ML-Modellen effizient und in großem Maßstab zu trainieren. Der Kern von Amazon SageMaker AI KI-Jobs ist die Containerisierung von ML-Workloads und die Fähigkeit, Rechenressourcen zu verwalten AWS . Wenn Sie eine serverlose Umgebung bevorzugen, in der es kein maximales Timeout gibt, könnten Amazon SageMaker AI KI-Schulungsjobs genau das Richtige für Sie sein. Die Startlatenz ist jedoch tendenziell länger als bei AWS Glue Python Shell-Jobs. Für Aufträge, die latenzempfindlich sind, empfehlen wir, andere Optionen zu prüfen. 

# Überwachung AWS Glue
<a name="monitor-glue"></a>

Die Überwachung ist ein wichtiger Bestandteil der Aufrechterhaltung der Zuverlässigkeit, Verfügbarkeit und Leistung Ihrer AWS Glue anderen AWS Lösungen. AWS bietet Überwachungstools, mit denen Sie beobachten AWS Glue, melden können, wenn etwas nicht stimmt, und bei Bedarf automatisch Maßnahmen ergreifen können:

Sie können die folgenden automatisierten Tools zur Überwachung von AWS Glue verwenden und möglicherweise auftretende Probleme melden:
+ **Amazon CloudWatch Events** bietet einen Stream von Systemereignissen, die Änderungen an AWS Ressourcen beschreiben, nahezu in Echtzeit. CloudWatch Events ermöglicht automatisiertes ereignisgesteuertes Rechnen. Sie können Regeln schreiben, die auf bestimmte Ereignisse achten und automatisierte Aktionen in anderen AWS Diensten auslösen, wenn diese Ereignisse eintreten. Weitere Informationen finden Sie im [Amazon CloudWatch Events-Benutzerhandbuch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/).
+ Mit **Amazon CloudWatch Logs** können Sie Ihre Protokolldateien von EC2 Amazon-Instances und anderen Quellen überwachen AWS CloudTrail, speichern und darauf zugreifen. CloudWatch Logs kann Informationen in den Protokolldateien überwachen und Sie benachrichtigen, wenn bestimmte Schwellenwerte erreicht werden. Sie können Ihre Protokolldaten auch in einem sehr robusten Speicher archivieren. Weitere Informationen finden Sie im [Amazon CloudWatch Logs-Benutzerhandbuch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/).
+ **AWS CloudTrail**erfasst API-Aufrufe und zugehörige Ereignisse, die von oder im Namen Ihres AWS Kontos getätigt wurden, und übermittelt die Protokolldateien an einen von Ihnen angegebenen Amazon S3 S3-Bucket. Sie können feststellen, welche Benutzer und Konten anrufen AWS, von welcher Quell-IP-Adresse aus die Aufrufe getätigt werden und wann die Aufrufe erfolgen. Weitere Informationen finden Sie im [AWS CloudTrail -Benutzerhandbuch](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

Darüber hinaus haben Sie in der AWS Glue Konsole Zugriff auf die folgenden Informationen, die Ihnen beim Debuggen und Profilieren von Jobs helfen:
+ Spark-Jobs — Sie können eine Visualisierung ausgewählter CloudWatch Metrikreihen sehen, und neuere Jobs haben Zugriff auf die Spark-Benutzeroberfläche. Weitere Informationen finden Sie unter [Überwachung von AWS Glue-Spark-Aufträgen](monitor-spark.md).
+ Ray-Jobs — Sie können eine Visualisierung ausgewählter CloudWatch Metrikreihen sehen. Weitere Informationen finden Sie unter [Überwachung von Ray-Aufträgen mit Metriken](author-job-ray-monitor.md).

**Topics**
+ [AWS Schlagworte in AWS Glue](monitor-tags.md)
+ [Automatisieren mit AWS Glue EventBridge](automating-awsglue-with-cloudwatch-events.md)
+ [AWS Glue Ressourcen überwachen](monitor-resource-metrics.md)
+ [AWS GlueAPI-Aufrufe protokollieren mit AWS CloudTrail](monitor-cloudtrail.md)

# AWS Schlagworte in AWS Glue
<a name="monitor-tags"></a>

Um Sie bei der Verwaltungs Ihrer AWS Glue-Ressourcen zu unterstützen, können Sie einigen AWS Glue-Ressourcentypen optional Ihre eigenen Tags zuweisen. Ein Tag ist eine Bezeichnung, die Sie einer AWS Ressource zuweisen. Jeder Tag (Markierung) besteht aus einem Schlüssel und einem optionalen Wert, beides können Sie bestimmen. Sie können Tags in AWS Glue verwenden, um Ihre Ressourcen zu organisieren und zu identifizieren. Tags können zur Erstellung von Kostenabrechnungsberichten und zur Einschränkung des Zugriffs auf Ressourcen verwendet werden. Wenn Sie es verwenden AWS Identity and Access Management, können Sie steuern, welche Benutzer in Ihrem AWS Konto berechtigt sind, Tags zu erstellen, zu bearbeiten oder zu löschen. Zusätzlich zu den Berechtigungen zum Aufrufen von Tag-bezogenen Daten benötigen Sie auch die `glue:GetConnection` Berechtigung APIs, Tagging für Verbindungen APIs aufzurufen, und die `glue:GetDatabase` Berechtigung, Tagging APIs für Datenbanken aufzurufen. Weitere Informationen finden Sie unter [ABAC mit Glue AWS](security_iam_service-with-iam.md#security_iam_service-with-iam-tags). 

In AWS Glue können Sie die folgenden Ressourcen mit Tags versehen:
+ Connection (Verbindung)
+ Datenbank
+ Crawler
+ Interaktive Sitzung
+ Entwicklungsendpunkt
+ Aufgabe
+ Auslöser
+ Workflow
+ Blueprint
+ Machine-Learning-Transformation
+ Regelsatz für die Datenqualität
+ Stream-Schemas
+ Stream-Schema-Registrierungen

**Anmerkung**  
Schließen Sie als bewährte Methode stets die Aktion `glue:TagResource` in Ihre Richtlinien ein, um das Markieren dieser AWS Glue-Ressourcen zu ermöglichen.

Beachten Sie Folgendes, wenn Sie Tags mit AWS Glue verwenden.
+ Pro Entität werden maximal 50 Tags unterstützt.
+ In AWS Glue geben Sie Tags als Liste von Schlüssel-Wert-Paaren im Format `{"string": "string" ...}` an.
+ Wenn Sie ein Tag für ein Objekt erstellen, ist der Tag-Schlüssel erforderlich. Der Tag-Wert ist optional.
+ Die Werte für Tag-Schlüssel und Tag-Wert unterscheiden zwischen Groß- und Kleinschreibung.
+ Die Werte für Tag-Schlüssel und Tag-Wert dürfen nicht das Präfix *aws*enthalten. Für solche Tags sind keine Operationen zulässig.
+ Die maximale Länge des Tag-Schlüssels beträgt 128 Unicode-Zeichen in UTF-8. Der Tag-Schlüssel darf nicht leer oder null sein.
+ Die maximale Länge des Tag-Wertes beträgt 256 Unicode-Zeichen in UTF-8. Der Tag-Wert darf nicht leer oder null sein.

## Tagging-Unterstützung für Verbindungen AWS Glue
<a name="tag-connections"></a>

Sie können `CreateConnection`-, `UpdateConnection`-, `GetConnection`- und `DeleteConnection`-Aktionsberechtigung basierend auf dem Ressourcen-Tag einschränken. Auf diese Weise können Sie die Zugriffskontrolle mit den geringsten Rechten für AWS Glue Jobs mit JDBC-Datenquellen implementieren, die JDBC-Verbindungsinformationen aus dem Datenkatalog abrufen müssen. 

**Beispielverwendung**  
Erstellen Sie eine AWS Glue Verbindung mit dem Tag ["connection-category“, „dev-test"].

Geben Sie die Tag-Bedingung für die `GetConnection`-Aktion in der IAM-Richtlinie an.

```
{
   "Effect": "Allow",
   "Action": [
     "glue:GetConnection"
     ],
   "Resource": "*",
   "Condition": {
     "ForAnyValue:StringEquals": {
       "aws:ResourceTag/tagKey": "dev-test"
     }
   }
 }
```

## Beispiele
<a name="TagExamples"></a>

Die folgenden Beispiele erstellen eine Aufgabe mit zugewiesenen Tags. 

**AWS CLI**

```
aws glue create-job --name job-test-tags --role MyJobRole --command Name=glueetl,ScriptLocation=S3://aws-glue-scripts//prod-job1 
--tags key1=value1,key2=value2
```

**CloudFormation JSON**

```
{
  "Description": "AWS Glue Job Test Tags",
  "Resources": {
    "MyJobRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "glue.amazonaws.com"
                ]
              },
              "Action": [
                "sts:AssumeRole"
              ]
            }
          ]
        },
        "Path": "/",
        "Policies": [
          {
            "PolicyName": "root",
            "PolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": [
                {
                  "Effect": "Allow",
                  "Action": "*",
                  "Resource": "*"
                }
              ]
            }
          }
        ]
      }
    },
    "MyJob": {
      "Type": "AWS::Glue::Job",
      "Properties": {
        "Command": {
          "Name": "glueetl",
          "ScriptLocation": "s3://aws-glue-scripts//prod-job1"
        },
        "DefaultArguments": {
          "--job-bookmark-option": "job-bookmark-enable"
        },
        "ExecutionProperty": {
          "MaxConcurrentRuns": 2
        },
        "MaxRetries": 0,
        "Name": "cf-job1",
        "Role": {
           "Ref": "MyJobRole",
           "Tags": {
                "key1": "value1", 
                "key2": "value2"
           } 
        }
      }
    }
  }
}
```

**CloudFormation YAML**

```
Description: AWS Glue Job Test Tags
Resources:
  MyJobRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - glue.amazonaws.com
            Action:
              - sts:AssumeRole
      Path: "/"
      Policies:
        - PolicyName: root
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action: "*"
                Resource: "*"
  MyJob:
    Type: AWS::Glue::Job
    Properties:
      Command:
        Name: glueetl
        ScriptLocation: s3://aws-glue-scripts//prod-job1
      DefaultArguments:
        "--job-bookmark-option": job-bookmark-enable
      ExecutionProperty:
        MaxConcurrentRuns: 2
      MaxRetries: 0
      Name: cf-job1
      Role:
        Ref: MyJobRole
        Tags:
           key1: value1
           key2: value2
```

Weitere Informationen finden Sie unter [Tagging-Strategien in AWS](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/). 

Informationen dazu, wie Sie den Zugriff mithilfe von Tags steuern, finden Sie unter [ABAC mit Glue AWS](security_iam_service-with-iam.md#security_iam_service-with-iam-tags).

# Automatisieren mit AWS Glue EventBridge
<a name="automating-awsglue-with-cloudwatch-events"></a>

Sie können Amazon verwenden EventBridge , um Ihre AWS Services zu automatisieren und automatisch auf Systemereignisse wie Probleme mit der Anwendungsverfügbarkeit oder Ressourcenänderungen zu reagieren. Ereignisse aus AWS Services werden nahezu EventBridge in Echtzeit übermittelt. Sie können einfache Regeln schreiben, um anzugeben, welche Ereignisse für Sie interessant sind und welche automatisierten Aktionen durchgeführt werden sollen, wenn sich für ein Ereignis eine Übereinstimmung mit einer Regel ergibt. Die folgenden Aktionen können beispielsweise automatisch ausgelöst werden:
+ Eine AWS Lambda Funktion aufrufen
+ Amazon EC2 Run Command aufrufen
+ Weiterleiten des Ereignisses an Amazon Kinesis Data Streams
+ Aktivierung einer AWS Step Functions Zustandsmaschine
+ Benachrichtigen eines Amazon SNS-Themas oder einer Amazon SQS-Warteschlange

Einige Beispiele für die Verwendung von EventBridge mit AWS Glue sind:
+ Aktivieren einer Lambda-Funktion, wenn ein ETL-Auftrag erfolgreich ist
+ Benachrichtigen eines Amazon-SNS-Themas, wenn ein ETL-Auftrag fehlschlägt

Folgendes EventBridge wird generiert vonAWS Glue.
+ Ereignisse für `"detail-type":"Glue Job State Change"` werden bei `SUCCEEDED`, `FAILED`, `TIMEOUT` und `STOPPED` generiert.
+ Ereignisse für `"detail-type":"Glue Job Run Status"` werden generiert für `RUNNING`, `STARTING` und `STOPPING` Auftragsläufe, wenn sie die Benachrichtigungsschwelle für die Auftragsverzögerung überschreiten. Sie müssen die Schwellenwerteigenschaft für die Benachrichtigung über einen Auftrag festlegen, um diese Ereignisse zu empfangen.

  Es wird nur ein Ereignis pro Status der Auftragsausführung generiert, wenn die Schwelle für die Benachrichtigung über die Auftragsverzögerung überschritten wird.
+ Ereignisse für `"detail-type":"Glue Crawler State Change"` werden bei `Started`, `Succeeded` und `Failed` generiert.
+ Ereignisse für `“detail_type”:“Glue Scheduled Crawler Invocation Failure”` werden generiert, wenn der geplante Crawler nicht gestartet werden kann. In den Details der Benachrichtigung:
  + `customerId` enthält die Konto-ID des Kunden.
  + `crawlerName` enthält den Namen des Crawlers, der nicht gestartet werden konnte.
  + `errorMessage` enthält die Ausnahmemeldung des Aufruffehlers.
+ Ereignisse für `“detail_type”:“Glue Auto Statistics Invocation Failure“` werden generiert, wenn die Ausführung der Aufgabe für automatisch verwaltete Spaltenstatistiken nicht gestartet werden kann. In den Details der Benachrichtigung:
  + `catalogId` enthält die einem Katalog zugeordnete ID.
  + `databaseName` enthält den Namen der betroffenen Datenbank.
  + `tableName` enthält den Namen der betroffenen Tabelle.
  + `errorMessage` enthält die Ausnahmemeldung des Aufruffehlers.
+ Ereignisse für `“detail_type”:“Glue Scheduled Statistics Invocation Failure”` werden generiert, wenn die Ausführung der geplanten Aufgabe (cron) für Spaltenstatistiken nicht gestartet werden kann. In den Details der Benachrichtigung:
  + `catalogId` enthält die einem Katalog zugeordnete ID.
  + `databaseName` enthält den Namen der betroffenen Datenbank.
  + `tableName` enthält den Namen der betroffenen Tabelle.
  + `errorMessage` enthält die Ausnahmemeldung des Aufruffehlers.
+ Ereignisse für `“detail_type”:“Glue Statistics Task Started”` werden generiert, wenn die Ausführung der Spaltenstatistik-Aufgabe gestartet wird.
+ Ereignisse für `“detail_type”:“Glue Statistics Task Succeeded”` werden generiert, wenn die Ausführung der Spaltenstatistik-Aufgabe erfolgreich ist.
+ Ereignisse für `“detail_type”:“Glue Statistics Task Failed”` werden generiert, wenn die Ausführung der Spaltenstatistik-Aufgabe fehlschlägt.
+ Ereignisse für `"detail-type":"Glue Data Catalog Database State Change"` werden für `CreateDatabase`, `DeleteDatabase`, `CreateTable`, `DeleteTable` und `BatchDeleteTable` generiert. Wenn beispielsweise eine Tabelle erstellt oder gelöscht wird, wird eine Benachrichtigung an gesendet EventBridge. Beachten Sie, dass Sie kein Programm schreiben können, das von der Reihenfolge oder dem Vorhandensein von Benachrichtigungsereignissen abhängig ist, da Benachrichtigungen möglicherweise nicht der Reihe nach erfolgen oder fehlen. Ereignisse werden auf bestmögliche Weise ausgegeben. In den Details der Benachrichtigung:
  + Der Abschnitt `typeOfChange` enthält den Namen der API-Operation.
  + Der Abschnitt `databaseName` enthält den Namen der betroffenen Datenbank.
  + Der Abschnitt `changedTables` enthält bis zu 100 Namen von betroffenen Tabellen pro Benachrichtigung. Wenn Tabellennamen zu lang sind, werden möglicherweise mehrere Benachrichtigungen erstellt.
+ Ereignisse für `"detail-type":"Glue Data Catalog Table State Change"` werden für `UpdateTable`, `CreatePartition`, `BatchCreatePartition`, `UpdatePartition`, `DeletePartition`, `BatchUpdatePartition` und `BatchDeletePartition`. generiert. Wenn beispielsweise eine Tabelle oder Partition aktualisiert wird, wird eine Benachrichtigung an gesendet EventBridge. Beachten Sie, dass Sie kein Programm schreiben können, das von der Reihenfolge oder dem Vorhandensein von Benachrichtigungsereignissen abhängig ist, da Benachrichtigungen möglicherweise nicht der Reihe nach erfolgen oder fehlen. Ereignisse werden auf bestmögliche Weise ausgegeben. In den Details der Benachrichtigung:
  + Der Abschnitt `typeOfChange` enthält den Namen der API-Operation.
  + Der Abschnitt `databaseName` enthält den Namen der Datenbank, die die betroffenen Ressourcen enthält.
  + Der Abschnitt `tableName` enthält den Namen der betroffenen Tabelle.
  + Der Abschnitt `changedPartitions` gibt bis zu 100 betroffene Partitionen in einer einzigen Benachrichtigung an. Wenn Partitionsnamen zu lang sind, werden möglicherweise mehrere Benachrichtigungen erstellt.

    Wenn es beispielsweise zwei Partitionsschlüssel gibt, `Year` und `Month`, ändert `"2018,01", "2018,02"` die Partition mit `"Year=2018" and "Month=01"` und die Partition mit `"Year=2018" and "Month=02"`.

    ```
    {
        "version":"0",
        "id":"abcdef00-1234-5678-9abc-def012345678",
        "detail-type":"Glue Data Catalog Table State Change",
        "source":"aws.glue",
        "account":"123456789012",
        "time":"2017-09-07T18:57:21Z",
        "region":"us-west-2",
        "resources":["arn:aws:glue:us-west-2:123456789012:database/default/foo"],
        "detail":{
            "changedPartitions": [
                "2018,01",
                "2018,02"
            ],
            "databaseName": "default",
            "tableName": "foo",
            "typeOfChange": "BatchCreatePartition"
            }
    }
    ```

Weitere Informationen finden Sie im [Amazon CloudWatch Events-Benutzerhandbuch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/). Weitere Informationen zu Ereignissen speziell für AWS Glue finden Sie unter [AWS Glue-Ereignisse](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#glue-event-types).

# AWS Glue Ressourcen überwachen
<a name="monitor-resource-metrics"></a>

AWS Glue verfügt über Service-Limits, um Kunden vor unerwarteter übermäßiger Bereitstellung und vor böswilligen Aktionen zu schützen, die darauf abzielen, Ihre Rechnung zu erhöhen. Die Limits schützen auch den Service. Wenn sich Kunden an der AWS Service Quota-Konsole anmelden, können sie ihre aktuellen Ressourcenlimits einsehen und gegebenenfalls eine Erhöhung beantragen.

AWS Glueermöglicht es Ihnen, den Ressourcenverbrauch des Services in Amazon als Prozentsatz anzuzeigen CloudWatch und CloudWatch Alarme zur Überwachung der Nutzung zu konfigurieren. Amazon CloudWatch bietet die Überwachung der AWS Ressourcen und der Kundenanwendungen, die auf der Amazon-Infrastruktur ausgeführt werden. Die Metriken sind für Sie kostenlos. Die folgenden Metriken werden unterstützt:
+ Anzahl der Workflows pro Konto
+ Anzahl der Auslöser pro Konto.
+ Anzahl der Aufgaben pro Konto
+ Anzahl der gleichzeitigen Aufgabenausführungen pro Konto
+ Anzahl der Vorlagen pro Konto
+ Anzahl der interaktiven Sitzungen pro Konto

## Konfiguration und Verwendung von Ressourcenmetriken
<a name="monitor-resource-metrics"></a>

Um diese Funktion zu nutzen, können Sie zur CloudWatch Amazon-Konsole gehen, um die Metriken anzusehen und Alarme zu konfigurieren. Die Metriken befinden sich im AWS/Glue-Namespace und stellen einen Prozentsatz der tatsächlichen Ressourcennutzung geteilt durch das Ressourcenkontingent dar. Die CloudWatch Messwerte werden an Ihre Konten übermittelt, was für Sie kostenlos ist. Wenn Sie beispielsweise 10 Workflows erstellt haben und Ihr Servicekontingent maximal 200 Workflows zulässt, beträgt Ihre Nutzung 10/200 = 5 %, und im Diagramm sehen Sie einen Datenpunkt von 5 als Prozentsatz. Um genauer zu sein:

```
Namespace: AWS/Glue
Metric name: ResourceUsage
Type: Resource
Resource: Workflow (or Trigger, Job, JobRun, Blueprint, InteractiveSession)
Service: Glue
Class: None
```

![\[Ressourcenmetriken\]](http://docs.aws.amazon.com/de_de/glue/latest/dg/images/resource_monitoring_1.png)


Um einen Alarm für eine Metrik in der CloudWatch Konsole zu erstellen:

1. Sobald Sie die Metrik gefunden haben, gehen Sie zu **Grafische Metriken**.

1. Klicken Sie auf **Alarm erstellen** unter **Aktionen**.

1. Konfigurieren Sie den Alarm nach Bedarf.

Wir geben Metriken aus, wenn sich Ihre Ressourcennutzung ändert (z. B. eine Zunahme oder Abnahme). Wenn sich Ihre Ressourcennutzung jedoch nicht ändert, geben wir stündlich Messwerte aus, sodass Sie ein kontinuierliches CloudWatch Diagramm erhalten. Um fehlende Datenpunkte zu vermeiden, empfehlen wir Ihnen nicht, einen Zeitraum von weniger als 1 Stunde zu konfigurieren.

Sie können Alarme auch AWS CloudFormation wie im folgenden Beispiel konfigurieren. In diesem Beispiel wird, sobald die Workflow-Ressourcennutzung 80 % erreicht, ein Alarm ausgelöst, um eine Nachricht an das vorhandene SNS-Thema zu senden, wo Sie es abonnieren können, um Benachrichtigungen zu erhalten.

```
{
	"Type": "AWS::CloudWatch::Alarm",
	"Properties": {
		"AlarmName": "WorkflowUsageAlarm",
		"ActionsEnabled": true,
		"OKActions": [],
		"AlarmActions": [
			"arn:aws:sns:af-south-1:085425700061:Default_CloudWatch_Alarms_Topic"
		],
		"InsufficientDataActions": [],
		"MetricName": "ResourceUsage",
		"Namespace": "AWS/Glue",
		"Statistic": "Maximum",
		"Dimensions": [{
				"Name": "Type",
				"Value": "Resource"
			},
			{
				"Name": "Resource",
				"Value": "Workflow"
			},
			{
				"Name": "Service",
				"Value": "Glue"
			},
			{
				"Name": "Class",
				"Value": "None"
			}
		],
		"Period": 3600,
		"EvaluationPeriods": 1,
		"DatapointsToAlarm": 1,
		"Threshold": 80,
		"ComparisonOperator": "GreaterThanThreshold",
		"TreatMissingData": "notBreaching"
	}
}
```

# AWS GlueAPI-Aufrufe protokollieren mit AWS CloudTrail
<a name="monitor-cloudtrail"></a>

AWS Glueist in einen Dienst integriert AWS CloudTrail, der eine Aufzeichnung der Aktionen bereitstellt, die von einem Benutzer, einer Rolle oder einem AWS Dienst in AWS Glue ausgeführt wurden. CloudTrail erfasst alle API-Aufrufe AWS Glue als Ereignisse. Zu den erfassten Aufrufen gehören Aufrufe von der AWS Glue-Konsole und Code-Aufrufe der AWS Glue-API-Operationen. Wenn Sie einen Trail erstellen, können Sie die kontinuierliche Bereitstellung von CloudTrail Ereignissen an einen Amazon S3 S3-Bucket aktivieren, einschließlich Ereignissen fürAWS Glue. Wenn Sie keinen Trail konfigurieren, können Sie die neuesten Ereignisse trotzdem in der CloudTrail Konsole im **Ereignisverlauf** anzeigen. Anhand der von gesammelten Informationen können Sie die Anfrage ermitteln CloudTrail, an die die Anfrage gestellt wurdeAWS Glue, die IP-Adresse, von der aus die Anfrage gestellt wurde, wer die Anfrage gestellt hat, wann sie gestellt wurde, und weitere Details. 

Weitere Informationen CloudTrail dazu finden Sie im [AWS CloudTrail Benutzerhandbuch](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## AWS GlueInformationen in CloudTrail
<a name="monitor-cloudtrail-info"></a>

CloudTrail ist in Ihrem AWS Konto aktiviert, wenn Sie das Konto erstellen. Wenn eine Aktivität in stattfindetAWS Glue, wird diese Aktivität zusammen mit anderen CloudTrail AWS Serviceereignissen im **Ereignisverlauf in einem Ereignis** aufgezeichnet. Sie können aktuelle Ereignisse in Ihrem AWS Konto ansehen, suchen und herunterladen. Weitere Informationen finden Sie unter [Ereignisse mit CloudTrail Ereignisverlauf anzeigen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Für eine fortlaufende Aufzeichnung der Ereignisse in Ihrem AWS Konto, einschließlich der Ereignisse fürAWS Glue, erstellen Sie einen Trail. Ein *Trail* ermöglicht CloudTrail die Übermittlung von Protokolldateien an einen Amazon S3 S3-Bucket. Wenn Sie einen Trail in der Konsole erstellen, gilt der Trail standardmäßig für alle AWS Regionen. Der Trail protokolliert Ereignisse aus allen Regionen der AWS Partition und übermittelt die Protokolldateien an den von Ihnen angegebenen Amazon S3 S3-Bucket. Darüber hinaus können Sie andere AWS Dienste konfigurieren, um die in den CloudTrail Protokollen gesammelten Ereignisdaten weiter zu analysieren und darauf zu reagieren. Weitere Informationen finden Sie hier: 
+ [Einen Trail für dein AWS Konto erstellen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail unterstützte Dienste und Integrationen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Konfiguration von Amazon SNS SNS-Benachrichtigungen für CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Empfangen von CloudTrail Protokolldateien aus mehreren Regionen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) und [Empfangen von CloudTrail Protokolldateien von mehreren Konten](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Alle AWS Glue Aktionen werden von protokolliert CloudTrail und sind in der dokumentiert[AWS Glue API](aws-glue-api.md). Beispielsweise generieren Aufrufe von `CreateTable` und `CreateScript` Aktionen Einträge in den CloudTrail Protokolldateien. `CreateDatabase` 

Jeder Ereignis- oder Protokolleintrag enthält Informationen zu dem Benutzer, der die Anforderung generiert hat. Die Identitätsinformationen unterstützen Sie bei der Ermittlung der folgenden Punkte: 
+ Gibt an, ob die Anforderung mit Root- oder IAM-Benutzer-Anmeldeinformationen ausgeführt wurde.
+ Gibt an, ob die Anforderung mit temporären Sicherheitsanmeldeinformationen für eine Rolle oder einen Verbundbenutzer gesendet wurde.
+ Ob die Anfrage von einem anderen AWS Dienst gestellt wurde.

Weitere Informationen finden Sie unter [CloudTrail userIdentity-Element](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

Protokolliert jedoch CloudTrail nicht alle Informationen zu Anrufen. Beispielsweise werden bestimmte vertrauliche Informationen nicht protokolliert, z. B. die, die in Verbindungsanfragen `ConnectionProperties` verwendet werden, und es protokolliert a `null` anstelle der Antworten, die von den folgenden Antworten zurückgegeben werden APIs:

```
BatchGetPartition       GetCrawlers          GetJobs          GetTable
CreateScript            GetCrawlerMetrics    GetJobRun        GetTables
GetCatalogImportStatus  GetDatabase          GetJobRuns       GetTableVersions
GetClassifier           GetDatabases         GetMapping       GetTrigger
GetClassifiers          GetDataflowGraph     GetObjects       GetTriggers
GetConnection           GetDevEndpoint       GetPartition     GetUserDefinedFunction
GetConnections          GetDevEndpoints      GetPartitions    GetUserDefinedFunctions
GetCrawler              GetJob               GetPlan
```

## Grundlagen zu AWS Glue-Protokolldateieinträgen
<a name="monitor-cloudtrail-logs"></a>

Ein Trail ist eine Konfiguration, die die Übertragung von Ereignissen als Protokolldateien an einen von Ihnen angegebenen Amazon S3 S3-Bucket ermöglicht. CloudTrail Protokolldateien enthalten einen oder mehrere Protokolleinträge. Ein Ereignis stellt eine einzelne Anforderung aus einer beliebigen Quelle dar und enthält Informationen über die angeforderte Aktion, Datum und Uhrzeit der Aktion, Anforderungsparameter usw. CloudTrail Protokolldateien sind kein geordneter Stack-Trace der öffentlichen API-Aufrufe, sodass sie nicht in einer bestimmten Reihenfolge angezeigt werden. 

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag, der die `DeleteCrawler` Aktion demonstriert.

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AKIAIOSFODNN7EXAMPLE",
    "arn": "arn:aws:iam::123456789012:user/johndoe",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "johndoe"
  },
  "eventTime": "2017-10-11T22:29:49Z",
  "eventSource": "glue.amazonaws.com",
  "eventName": "DeleteCrawler",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "72.21.198.64",
  "userAgent": "aws-cli/1.11.148 Python/3.6.1 Darwin/16.7.0 botocore/1.7.6",
  "requestParameters": {
    "name": "tes-alpha"
  },
  "responseElements": null,
  "requestID": "b16f4050-aed3-11e7-b0b3-75564a46954f",
  "eventID": "e73dd117-cfd1-47d1-9e2f-d1271cad838c",
  "eventType": "AwsApiCall",
  "recipientAccountId": "123456789012"
}
```

Dieses Beispiel zeigt einen CloudTrail Protokolleintrag, der eine `CreateConnection` Aktion demonstriert.

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AKIAIOSFODNN7EXAMPLE",
    "arn": "arn:aws:iam::123456789012:user/johndoe",
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "userName": "johndoe"
  },
  "eventTime": "2017-10-13T00:19:19Z",
  "eventSource": "glue.amazonaws.com",
  "eventName": "CreateConnection",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "72.21.198.66",
  "userAgent": "aws-cli/1.11.148 Python/3.6.1 Darwin/16.7.0 botocore/1.7.6",
  "requestParameters": {
    "connectionInput": {
      "name": "test-connection-alpha",
      "connectionType": "JDBC",
      "physicalConnectionRequirements": {
        "subnetId": "subnet-323232",
        "availabilityZone": "us-east-1a",
        "securityGroupIdList": [
          "sg-12121212"
        ]
      }
    }
  },
  "responseElements": null,
  "requestID": "27136ebc-afac-11e7-a7d6-ab217e5c3f19",
  "eventID": "e8b3baeb-c511-4597-880f-c16210c60a4a",
  "eventType": "AwsApiCall",
  "recipientAccountId": "123456789012"
}
```