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 Apache Iceberg in AWS Glue
AWS Glue
AWS Glue Jobs kapseln Skripten, die Transformationslogik mithilfe einer Apache Spark
Wenn Sie Iceberg-Jobs in erstellen AWS Glue, können Sie je nach Version von AWS Glue entweder die native Iceberg-Integration oder eine benutzerdefinierte Iceberg-Version verwenden, um Iceberg-Abhängigkeiten an den Job anzuhängen.
Verwenden Sie die native Iceberg-Integration
AWS Glue Die Versionen 3.0, 4.0 und 5.0 unterstützen nativ transaktionale Data-Lake-Formate wie Apache Iceberg, Apache Hudi und Linux Foundation Delta Lake in for Spark. AWS Glue Diese Integrationsfunktion vereinfacht die Konfigurationsschritte, die erforderlich sind, um mit der Verwendung dieser Frameworks in zu beginnen. AWS Glue
Um die Iceberg-Unterstützung für Ihren AWS Glue Job zu aktivieren, legen Sie den Job fest: Wählen Sie den Tab Jobdetails für Ihren AWS Glue Job, scrollen Sie unter Erweiterte Eigenschaften zu Job-Parametern und setzen Sie den Schlüssel --datalake-formats
und seinen Wert auficeberg
.
Wenn Sie einen Job mit einem Notizbuch erstellen, können Sie den Parameter in der ersten Notebookzelle konfigurieren, indem Sie die %%configure
Magie wie folgt verwenden:
%%configure { "--conf" : <job-specific Spark configuration discussed later>, "--datalake-formats" : "iceberg" }
Die iceberg
Konfiguration für --datalake-formats
in AWS Glue
entspricht bestimmten Iceberg-Versionen, die auf Ihrer AWS Glue Version basieren:
AWS Glue Version | Standardversion von Iceberg |
---|---|
5.0 |
1.7.1 |
4,0 |
1.0.0 |
3.0 |
0.13.1 |
Verwenden Sie eine benutzerdefinierte Iceberg-Version
In einigen Situationen möchten Sie möglicherweise die Kontrolle über die Iceberg-Version für den Job behalten und sie in Ihrem eigenen Tempo aktualisieren. Ein Upgrade auf eine neuere Version kann beispielsweise den Zugriff auf neue Funktionen und Leistungsverbesserungen freischalten. Um eine bestimmte Iceberg-Version mit zu verwenden AWS Glue, können Sie Ihre eigenen JAR-Dateien bereitstellen.
Bevor Sie eine benutzerdefinierte Iceberg-Version implementieren, überprüfen Sie die Kompatibilität mit Ihrer AWS Glue Umgebung, indem Sie den Abschnitt AWS Glue Versionen der AWS Glue Dokumentation überprüfen. AWS Glue 5.0 erfordert beispielsweise Kompatibilität mit Spark 3.5.4.
Gehen Sie beispielsweise wie folgt vor, um AWS Glue Jobs auszuführen, die Iceberg Version 1.9.1 verwenden:
-
Besorgen Sie sich die erforderlichen JAR-Dateien und laden Sie sie auf Amazon S3 hoch:
-
Laden Sie iceberg-spark-runtime-3.5_2.12-1.9.1.jar und -1.9.1.jar
aus dem Apache Maven-Repository herunter. iceberg-aws-bundle -
Laden Sie diese Dateien an den von Ihnen angegebenen S3-Bucket-Speicherort hoch (z. B.).
s3://your-bucket-name/jars/
-
-
Richten Sie die Job-Parameter für Ihren AWS Glue Job wie folgt ein:
-
Geben Sie im
--extra-jars
Parameter den vollständigen S3-Pfad zu beiden JAR-Dateien an und trennen Sie sie durch ein Komma (z. B.s3://your-bucket-name/jars/iceberg-spark-runtime-3.5_2.12-1.9.1.jar,s3://your-bucket-name/jars/iceberg-aws-bundle-1.9.1.jar
). -
Schließen Sie
iceberg
nicht als Wert für den Auftragsparameter--datalake-formats
ein. -
Wenn Sie AWS Glue 5.0 verwenden, müssen Sie den
--user-jars-first
Parameter auftrue
setzen.
-
Spark-Konfigurationen für Iceberg in AWS Glue
In diesem Abschnitt werden die Spark-Konfigurationen beschrieben, die für die Erstellung eines AWS Glue ETL-Jobs für einen Iceberg-Datensatz erforderlich sind. Sie können diese Konfigurationen festlegen, indem Sie den --conf
Spark-Schlüssel mit einer kommagetrennten Liste aller Spark-Konfigurationsschlüssel und -werte verwenden. Sie können die %%configure
Magie in einem Notizbuch oder im Bereich Job-Parameter der AWS Glue Studio Konsole verwenden.
%glue_version 5.0 %%configure { "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions...", "--datalake-formats" : "iceberg" }
Konfigurieren Sie die Spark-Sitzung mit den folgenden Eigenschaften:
-
<catalog_name>
ist der Name Ihres Iceberg Spark-Sitzungskatalogs. Ersetzen Sie ihn durch einen Namen Ihrer Wahl und denken Sie daran, die Verweise in allen Konfigurationen, die mit diesem Katalog verknüpft sind, zu ändern. In Ihrem Code können Sie wie folgt auf Ihre Iceberg-Tabellen verweisen, indem Sie den vollqualifizierten Tabellennamen, einschließlich des Namens des Spark-Sitzungskatalogs, verwenden:<catalog_name>.<database_name>.<table_name>
Alternativ können Sie den Standardkatalog in den Iceberg-Katalog ändern, den Sie definiert haben, indem Sie
spark.sql.defaultCatalog
auf Ihren Katalognamen setzen. Sie können diesen zweiten Ansatz verwenden, um auf Tabellen ohne das Katalogpräfix zu verweisen, was Ihre Abfragen vereinfachen kann. -
<catalog_name>.<warehouse>
verweist auf den Amazon S3 S3-Pfad, in dem Sie Ihre Daten und Metadaten speichern möchten. -
Um den Katalog zu einem zu machen AWS Glue Data Catalog, setzen Sie
spark.sql.catalog.<catalog_name>.type
aufglue
. Dieser Schlüssel ist erforderlich, um auf eine Implementierungsklasse für jede benutzerdefinierte Katalogimplementierung zu verweisen. Informationen zu Katalogen, die von Iceberg unterstützt werden, finden Sie im Abschnitt Allgemeine bewährte Methoden weiter unten in diesem Handbuch.
Wenn Sie beispielsweise einen Katalog aufgerufen habenglue_iceberg
, können Sie Ihren Job mithilfe mehrerer --conf
Schlüssel wie folgt konfigurieren:
%%configure { "--datalake-formats" : "iceberg", "--conf" : "spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.glue_iceberg=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.glue_iceberg.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_iceberg.type=glue" }
Alternativ können Sie Code verwenden, um die obigen Konfigurationen wie folgt zu Ihrem Spark-Skript hinzuzufügen:
spark = SparkSession.builder\ .config("spark.sql.extensions","org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions")\ .config("spark.sql.catalog.glue_iceberg", "org.apache.iceberg.spark.SparkCatalog")\ .config("spark.sql.catalog.glue_iceberg.warehouse","s3://<your-warehouse-dir>/")\ .config("spark.sql.catalog.glue_iceberg.type", "glue") \ .getOrCreate()
Bewährte Methoden für AWS Glue Jobs
Dieser Abschnitt enthält allgemeine Richtlinien für die Optimierung von Spark-Jobs, AWS Glue um das Lesen und Schreiben von Daten in Iceberg-Tabellen zu optimieren. Iceberg-spezifische Best Practices finden Sie im Abschnitt Bewährte Methoden weiter unten in diesem Handbuch.
-
Verwenden Sie die neueste Version von AWS Glue und aktualisieren Sie sie, wann immer dies möglich ist. Neue Versionen von AWS Glue bieten Leistungsverbesserungen, kürzere Startzeiten und neue Funktionen. Sie unterstützen auch neuere Spark-Versionen, die möglicherweise für die neuesten Iceberg-Versionen erforderlich sind. Eine Liste der verfügbaren AWS Glue Versionen und der Spark-Versionen, die sie unterstützen, finden Sie in der AWS Glue Dokumentation.
-
AWS Glue Arbeitsspeicher optimieren — Folgen Sie den Empfehlungen im AWS Blogbeitrag Optimieren Sie die Speicherverwaltung in AWS Glue
. -
AWS Glue Auto Scaling verwenden — Wenn Sie Auto Scaling aktivieren, passt die Anzahl der AWS Glue Worker AWS Glue automatisch dynamisch an Ihre Arbeitslast an. Dies trägt dazu bei, die Kosten Ihrer AWS Glue Arbeit bei Spitzenauslastung zu senken, da AWS Glue die Anzahl der Mitarbeiter reduziert wird, wenn die Arbeitslast gering ist und die Mitarbeiter untätig sitzen. Um AWS Glue Auto Scaling zu verwenden, geben Sie eine maximale Anzahl von Mitarbeitern an, auf die Ihr AWS Glue Job skaliert werden kann. Weitere Informationen finden Sie AWS Glue in der AWS Glue Dokumentation unter Using Auto Scaling for.
-
Verwenden Sie die gewünschte Iceberg-Version — die AWS Glue native Integration für Iceberg eignet sich am besten für den Einstieg in Iceberg. Für Produktions-Workloads empfehlen wir jedoch, Bibliotheksabhängigkeiten hinzuzufügen (wie weiter oben in diesem Handbuch beschrieben), um die volle Kontrolle über die Iceberg-Version zu erhalten. Dieser Ansatz hilft Ihnen, bei Ihren Jobs von den neuesten Iceberg-Funktionen und Leistungsverbesserungen zu profitieren. AWS Glue
-
Aktivieren Sie die Spark-Benutzeroberfläche für die Überwachung und das Debuggen — Sie können die Spark-Benutzeroberfläche auch verwenden, AWS Glue um Ihren Iceberg-Job zu überprüfen, indem Sie die verschiedenen Phasen eines Spark-Jobs in einem gerichteten azyklischen Graphen (DAG) visualisieren und die Jobs im Detail überwachen. Die Spark-Benutzeroberfläche bietet eine effektive Methode zur Fehlerbehebung und Optimierung von Iceberg-Jobs. So können Sie beispielsweise Engpass-Phasen identifizieren, in denen es zu häufigem Durcheinander oder zu viel Festplattenverlust kommt, um Optimierungsmöglichkeiten zu identifizieren. Weitere Informationen finden Sie in der Dokumentation unter Überwachen von Aufträgen mithilfe der Apache Spark-Weboberfläche. AWS Glue