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 und 4.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" }
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 einen benutzerdefinierten Connector oder Ihre eigene JAR-Datei verwenden.
Verwenden Sie einen benutzerdefinierten Konnektor
AWS Glue unterstützt Konnektoren, bei denen es sich um optionale Codepakete handelt, die den Zugriff auf Datenspeicher in unterstützen AWS Glue Studio. Sie können einen Connector abonnieren oder einen benutzerdefinierten Connector erstellen. AWS Marketplace
Anmerkung
AWS Marketplace bietet den Apache Iceberg-Konnektor für AWS Glue
Gehen Sie beispielsweise wie folgt vor, um einen Kunden-Connector für Iceberg Version 0.13.1 zu erstellen:
-
Laden Sie die Dateien
iceberg-spark-runtime-3.1_2.12-0.13.1.jar
bundle-2.17.161.jar
, undurl-connection-client-2.17.161.jar
in einen Amazon S3 S3-Bucket hoch. Sie können diese Dateien aus den jeweiligen Apache Maven-Repositorys herunterladen. -
Erstellen Sie auf der AWS Glue Studio Konsole
einen benutzerdefinierten Spark-Connector: -
Wählen Sie im Navigationsbereich Datenverbindungen aus. (Wenn Sie die ältere Navigation verwenden, wählen Sie Konnektoren, Benutzerdefinierten Konnektor erstellen.)
-
Wählen Sie im Feld Konnektoren die Option Benutzerdefinierten Konnektor erstellen aus.
-
Gehen Sie auf der Seite Benutzerdefinierten Connector erstellen wie folgt vor:
-
Geben Sie den Pfad zu den JAR-Dateien in Amazon S3 an.
-
Geben Sie einen Namen für den Connector ein.
-
Wählen Sie Spark als Steckertyp.
-
Geben Sie als Klassenname den vollqualifizierten Klassennamen der Datenquelle (oder seinen Alias) an, den Sie beim Laden der Spark-Datenquelle mit dem
format
Operator verwenden. -
(Optional) Geben Sie eine Beschreibung des Konnektors an.
-
-
3. Wählen Sie Konnektor erstellen.
Wenn Sie mit Konnektoren arbeiten AWS Glue, müssen Sie eine Verbindung für den Konnektor herstellen. Eine Verbindung enthält die Eigenschaften, die für die Verbindung mit einem bestimmten Datenspeicher erforderlich sind. Sie verwenden die Verbindung mit Ihren Datenquellen und Datenzielen im ETL-Auftrag. Connectors und Verbindungen ermöglichen zusammen den Zugriff auf die Datenspeicher.
Gehen Sie wie folgt vor, um mithilfe des von Ihnen erstellten benutzerdefinierten Iceberg-Connectors eine Verbindung herzustellen:
-
Wählen Sie auf der AWS Glue Studio Konsole
Ihren benutzerdefinierten Iceberg-Connector aus. -
Folgen Sie den Anweisungen, um die Details anzugeben, z. B. Ihre VPC und andere Netzwerkkonfigurationen, die für den Job erforderlich sind, und wählen Sie dann Verbindung erstellen aus.
Sie können die Verbindung jetzt in Ihrem AWS Glue ETL-Job verwenden. Je nachdem, wie Sie den Job erstellen, gibt es verschiedene Möglichkeiten, die Verbindung mit Ihrem Job zu verknüpfen:
-
Wenn Sie mithilfe von einen visuellen Auftrag erstellen AWS Glue Studio, können Sie die Verbindung aus der Verbindungsliste auf der Registerkarte Datenquelleneigenschaften — Konnektor auswählen.
-
Wenn Sie den Job in einem Notizbuch entwickeln, verwenden Sie die
%connections
Magie, um den Verbindungsnamen festzulegen:%glue_version 3.0 %connections <name-of-the iceberg-connection> %%configure { "--conf" : "job-specific Spark configurations, to be discussed later", "--datalake-formats" : "iceberg" }
-
Wenn Sie den Job mithilfe des Skripteditors erstellen, geben Sie die Verbindung auf der Registerkarte Auftragsdetails unter Erweiterte Eigenschaften, Zusätzliche Netzwerkverbindungen an.
Weitere Informationen zu den Verfahren in diesem Abschnitt finden Sie AWS Glue Studio in der AWS Glue Dokumentation unter Verwenden von Konnektoren und Verbindungen mit.
Bringen Sie Ihre eigenen JAR-Dateien mit
In AWS Glue können Sie auch mit Iceberg arbeiten, ohne einen Connector verwenden zu müssen. Dieser Ansatz ist nützlich, wenn Sie die Kontrolle über die Iceberg-Version behalten und sie schnell aktualisieren möchten. Um diese Option zu verwenden, laden Sie die erforderlichen Iceberg-JAR-Dateien in einen S3-Bucket Ihrer Wahl hoch und verweisen Sie auf die Dateien in Ihrem AWS Glue Job. Wenn Sie beispielsweise mit Iceberg 1.0.0 arbeiten, lauten die erforderlichen JAR-Dateieniceberg-spark-runtime-3.0_2.12-1.0.0.jar
, undurl-connection-client-2.15.40.jar
. bundle-2.15.40.jar
Sie können die zusätzlichen JAR-Dateien im Klassenpfad auch priorisieren, indem Sie den --user-jars-first
Parameter true
für den Job auf 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 3.0 %connections <name-of-the iceberg-connection> %%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 den Namen Ihres Katalogs und denken Sie daran, die Verweise in allen Konfigurationen, die mit diesem Katalog verknüpft sind, zu ändern. In Ihrem Code sollten Sie dann wie folgt auf Ihre Iceberg-Tabellen mit dem vollqualifizierten Tabellennamen, einschließlich des Namens des Spark-Sitzungskatalogs, verweisen:<catalog_name>.<database_name>.<table_name>
. -
<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
<catalog_name>.catalog-impl
auforg.apache.iceberg.aws.glue.GlueCatalog
. 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 Allgemeine bewährte Methoden Abschnitt Allgemeine bewährte Methoden weiter unten in diesem Handbuch. -
Verwenden Sie
org.apache.iceberg.aws.s3.S3FileIO
als, um<catalog_name>.io-impl
den mehrteiligen Amazon S3 S3-Upload für hohe Parallelität zu nutzen.
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.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog ", "‐‐conf" : " spark.sql.catalog.glue_iceberg.io-impl=org.apache.iceberg.aws.s3.S3FileIO }
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.catalog-impl", "org.apache.iceberg.aws.glue.GlueCatalog") \ .config("spark.sql.catalog.glue_iceberg.io-impl", "org.apache.iceberg.aws.s3.S3FileIO") \ .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 führen Sie nach Möglichkeit Upgrades durch — 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 es 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 benutzerdefinierte Konnektoren oder fügen Sie Bibliotheksabhängigkeiten hinzu — die AWS Glue native Integration für Iceberg eignet sich am besten für den Einstieg in Iceberg. Für Produktionsworkloads empfehlen wir jedoch, benutzerdefinierte Container zu verwenden oder 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 Möglichkeit, Iceberg-Jobs sowohl zu beheben als auch zu optimieren. 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