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.
Verwenden des Iceberg-Frameworks in AWS Glue
AWS Glue 3.0 und höher unterstützt das Apache-Iceberg-Framework für Data Lakes. Iceberg bietet ein leistungsstarkes Tabellenformat, das genauso wie eine SQL-Tabelle funktioniert. Dieses Thema behandelt verfügbare Features zur Verwendung Ihrer Daten in AWS Glue, wenn Sie Ihre Daten in einer Iceberg-Tabelle transportieren oder speichern. Weitere Informationen zu Iceberg finden Sie in der offiziellen Apache-Iceberg-Dokumentation
Sie können AWS Glue verwenden, um Lese- und Schreibvorgänge in Iceberg-Tabellen in Amazon S3 durchzuführen oder mit Iceberg-Tabellen unter Verwendung des AWS Glue Data Catalog zu arbeiten. Zusätzliche Vorgänge wie Einfügen/Aktualisieren und alle Spark-Abfragen
Anmerkung
ALTER TABLE … RENAME TO ist für Apache Iceberg 0.13.1 für AWS Glue 3.0 nicht verfügbar.
Die folgende Tabelle listet die Version von Iceberg auf, die in jeder AWS-Glue-Version enthalten ist.
| AWS-Glue-Version | Unterstützte Iceberg-Version |
|---|---|
| 5.0 | 1.7.1 |
| 4,0 | 1.0.0 |
| 3.0 | 0.13.1 |
Weitere Informationen zu den von AWS-Glue unterstützten Data-Lake-Frameworks finden Sie unter Verwendung von Data-Lake-Frameworks mit AWS Glue-ETL-Aufträgen.
Aktivierung des Iceberg-Frameworks
Führen Sie die folgenden Aufgaben aus, um Iceberg for AWS Glue zu aktivieren:
-
Geben Sie
icebergals Wert für den Auftragsparameter--datalake-formatsan. Weitere Informationen finden Sie unter Verwendung von Auftragsparametern in AWS-Glue-Aufträgen. -
Erstellen Sie einen Schlüssel mit dem Namen
--conffür Ihren AWS-Glue-Auftrag und legen Sie ihn auf den folgenden Wert fest. Alternativ können Sie die folgende Konfiguration mitSparkConfin Ihrem Skript festlegen. Diese Einstellungen helfen Apache Spark bei der korrekten Handhabung von Iceberg-Tabellen.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.warehouse=s3://<your-warehouse-dir>/ --conf spark.sql.catalog.glue_catalog.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.glue_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIOWenn Sie Iceberg-Tabellen lesen oder in sie schreiben, die bei Lake Formation registriert sind, folgen Sie den Anweisungen Verwendung von AWS Glue mit AWS Lake Formation für eine feinkörnige Zugriffskontrolle in AWS Glue 5.0 und höher. Fügen Sie in AWS Glue 4.0 die folgende Konfiguration hinzu, um die Lake-Formation-Unterstützung zu aktivieren.
--conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true --conf spark.sql.catalog.glue_catalog.glue.id=<table-catalog-id>Wenn Sie AWS Glue 3.0 mit Iceberg 0.13.1 verwenden, müssen Sie die folgenden zusätzlichen Konfigurationen festlegen, um den Amazon-DynamoDB-Sperrmanager zu verwenden und die atomare Transaktion sicherzustellen. AWS Glue verwendet ab Version 4.0 standardmäßig die optimistische Sperre. Weitere Informationen finden Sie unter AWS-Integrationen für Iceberg
in der offiziellen Apache-Iceberg-Dokumentation. --conf spark.sql.catalog.glue_catalog.lock-impl=org.apache.iceberg.aws.glue.DynamoLockManager --conf spark.sql.catalog.glue_catalog.lock.table=<your-dynamodb-table-name>
Verwendung einer anderen Iceberg-Version
Um eine Version von Iceberg zu verwenden, die AWS Glue nicht unterstützt, geben Sie Ihre eigenen Iceberg-JAR-Dateien mit dem --extra-jars-Auftragsparameter an. 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 Auftragsparameter --user-jars-first true festlegen.
Aktivierung der Verschlüsselung für Iceberg-Tabellen
Anmerkung
Iceberg-Tabellen verfügen über eigene Mechanismen, um eine serverseitige Verschlüsselung zu ermöglichen. Sie sollten diese Konfiguration zusätzlich zur Sicherheitskonfiguration von AWS Glue aktivieren.
Um die serverseitige Verschlüsselung für Iceberg-Tabellen zu aktivieren, lesen Sie die Anleitung in der Iceberg-Dokumentation
Spark-Konfiguration für Iceberg regionsübergreifend hinzufügen
Führen Sie die folgenden Schritte aus, um eine zusätzliche Spark-Konfiguration für den regionsübergreifenden Iceberg-Tabellenzugriff mit dem AWS-Glue-Datenkatalog und AWS Lake Formation hinzuzufügen:
Erstellen Sie einen Zugangspunkt für mehrere Regionen.
Legen Sie die folgenden Spark-Eigenschaften fest:
----- --conf spark.sql.catalog.my_catalog.s3.use-arn-region-enabled=true \ --conf spark.sql.catalog.{CATALOG}.s3.access-points.bucket1", "arn:aws:s3::<account-id>:accesspoint/<mrap-id>.mrap \ --conf spark.sql.catalog.{CATALOG}.s3.access-points.bucket2", "arn:aws:s3::<account-id>:accesspoint/<mrap-id>.mrap -----
Beispiel: Schreiben einer Iceberg-Tabelle in Amazon S3 und deren Registrierung im AWS Glue Data Catalog
Dieses Beispielskript zeigt, wie eine Iceberg-Tabelle in Amazon S3 geschrieben wird. Das Beispiel verwendet Iceberg-AWS-Integrationen
Alternativ können Sie mithilfe von Spark-Methoden eine Iceberg-Tabelle in Amazon S3 und den Data Catalog schreiben.
Voraussetzungen: Sie müssen einen Katalog für die Nutzung durch die Iceberg-Bibliothek bereitstellen. Bei Verwendung des AWS Glue Data Catalog macht AWS Glue dies ganz einfach. Der AWS Glue Data Catalog ist für die Verwendung durch die Spark-Bibliotheken als glue_catalog vorkonfiguriert. Data-Catalog-Tabellen werden durch einen databaseName und einen tableName identifiziert. Weitere Informationen zum AWS Glue Data Catalog finden Sie unter Datenerkennung und Katalogisierung in AWS Glue.
Wenn Sie den AWS Glue Data Catalog nicht verwenden, müssen Sie über die Spark-APIs einen Katalog bereitstellen. Weitere Informationen finden Sie unter Spark-Konfiguration
In diesem Beispiel wird mithilfe von Spark eine Iceberg-Tabelle in Amazon S3 und den Data Catalog geschrieben.
Beispiel: Lesen einer Iceberg-Tabelle aus Amazon S3 mit dem AWS Glue Data Catalog
In diesem Beispiel wird die Iceberg-Tabelle gelesen, die Sie in Beispiel: Schreiben einer Iceberg-Tabelle in Amazon S3 und deren Registrierung im AWS Glue Data Catalog erstellt haben.
Beispiel: Einfügen eines DataFrame in eine Iceberg-Tabelle in Amazon S3 mit dem AWS Glue Data Catalog
In diesem Beispiel werden Daten in die Iceberg-Tabelle eingefügt, die Sie in Beispiel: Schreiben einer Iceberg-Tabelle in Amazon S3 und deren Registrierung im AWS Glue Data Catalog erstellt haben.
Anmerkung
In diesem Beispiel müssen Sie den --enable-glue-datacatalog-Auftragsparameter festlegen, um den AWS Glue Data Catalog als Apache-Spark-Hive-Metaspeicher verwenden zu können. Weitere Informationen hierzu finden Sie unter Verwendung von Auftragsparametern in AWS-Glue-Aufträgen.
Beispiel: Lesen einer Iceberg-Tabelle aus Amazon S3 mit Spark
Voraussetzungen: Sie müssen einen Katalog für die Nutzung durch die Iceberg-Bibliothek bereitstellen. Bei Verwendung des AWS Glue Data Catalog macht AWS Glue dies ganz einfach. Der AWS Glue Data Catalog ist für die Verwendung durch die Spark-Bibliotheken als glue_catalog vorkonfiguriert. Data-Catalog-Tabellen werden durch einen databaseName und einen tableName identifiziert. Weitere Informationen zum AWS Glue Data Catalog finden Sie unter Datenerkennung und Katalogisierung in AWS Glue.
Wenn Sie den AWS Glue Data Catalog nicht verwenden, müssen Sie über die Spark-APIs einen Katalog bereitstellen. Weitere Informationen finden Sie unter Spark-Konfiguration
In diesem Beispiel wird mithilfe von Spark eine Iceberg-Tabelle in Amazon S3 aus dem Data Catalog gelesen.
Beispiel: Lesen und Schreiben einer Iceberg-Tabelle mit Lake-Formation-Berechtigungskontrolle
In diesem Beispiel wird mit Lake-Formation-Berechtigungen in einer Iceberg-Tabelle gelesen und geschrieben.
Anmerkung
Dieses Beispiel funktioniert nur in AWS Glue 4.0. Folgen Sie AWS in Glue 5.0 und höher den Anweisungen unter Verwendung von AWS Glue mit AWS Lake Formation für eine feinkörnige Zugriffskontrolle.
Erstellen einer Iceberg-Tabelle und Registrieren in Lake Formation.
Um die Lake-Formation-Berechtigungskontrolle zu aktivieren, müssen Sie zunächst den Amazon-S3-Tabellenpfad auf Lake Formation registrieren. Weitere Informationen finden Sie unter Registrieren eines Amazon-S3-Speicherorts. Sie können ihn entweder über die Lake-Formation-Konsole oder über die AWS CLI registrieren:
aws lakeformation register-resource --resource-arn arn:aws:s3:::<s3-bucket>/<s3-folder> --use-service-linked-role --region <REGION>Sobald Sie einen Amazon-S3-Speicherort registriert haben, gibt jede AWS-Glue-Tabelle, die auf den Speicherort (oder einen seiner untergeordneten Speicherorte) verweist, den Wert für den Parameter
IsRegisteredWithLakeFormationimGetTableAufruf als true zurück.Erstellen einer Iceberg-Tabelle, die über Spark SQL auf den registrierten Pfad verweist:
Anmerkung
Im Folgenden sind Python-Beispiele aufgeführt.
dataFrame.createOrReplaceTempView("tmp_<your_table_name>") query = f""" CREATE TABLE glue_catalog.<your_database_name>.<your_table_name> USING iceberg AS SELECT * FROM tmp_<your_table_name> """ spark.sql(query)Sie können die Tabelle auch manuell über die AWS Glue
CreateTableAPI erstellen. Weitere Informationen finden Sie unter Creating Apache Iceberg tables.Anmerkung
Die
UpdateTable-API unterstützt derzeit nicht das Iceberg-Tabellenformat als Eingabe für den Vorgang.
Erteilen Sie Lake Formation die Berechtigung für die IAM-Rolle. Sie können Berechtigungen entweder über die Lake-Formation-Konsole oder über die AWS CLI gewähren. Weiteres hierzu finden Sie unter https://docs.aws.amazon.com/lake-formation/latest/dg/granting-table-permissions.html
Lesen einer Iceberg-Tabelle, die bei Lake Formation registriert ist. Der Code entspricht dem Lesen einer nicht registrierten Iceberg-Tabelle. Beachten Sie, dass die IAM-Rolle des AWS-Glue-Auftrags über die SELECT-Berechtigung verfügen muss, damit der Lesevorgang erfolgreich ist.
# Example: Read an Iceberg table from the AWS Glue Data Catalog from awsglue.context import GlueContextfrom pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) df = glueContext.create_data_frame.from_catalog( database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )Schreiben in einer Iceberg-Tabelle, die bei Lake Formation registriert ist. Der Code entspricht dem Schreiben in eine nicht registrierte Iceberg-Tabelle. Beachten Sie, dass die IAM-Rolle Ihres AWS-Glue-Auftrags über die SUPER-Berechtigung verfügen muss, damit der Schreibvorgang erfolgreich ist.
glueContext.write_data_frame.from_catalog( frame=dataFrame, database="<your_database_name>", table_name="<your_table_name>", additional_options=additional_options )