Füllen und Verwalten von Transaktionstabellen - AWS Glue

Füllen und Verwalten von Transaktionstabellen

Apache Iceberg, Apache Hudi und Linux Foundation Delta Lake sind Open-Source-Tabellenformate, die für die Verarbeitung umfangreicher Datenanalysen und Data-Lake-Workloads in Apache Spark entwickelt wurden.

Sie können Iceberg-, Hudi- und Delta-Lake-Tabellen im AWS Glue Data Catalog mit den folgenden Methoden füllen:

  • AWS-Glue-Crawler; – AWS-Glue-Crawler können automatisch Iceberg-, Hudi- und Delta-Lake-Tabellenmetadaten im Data Catalog erkennen und füllen. Weitere Informationen finden Sie unter Verwenden von Crawlern zum Auffüllen des Datenkatalogs .

  • AWS Glue-ETL-Aufträge – Sie können ETL-Aufträge erstellen, um Daten in Iceberg-, Hudi- und Delta-Lake-Tabellen zu schreiben und deren Metadaten im Data Catalog aufzufüllen. Weitere Informationen finden Sie unter Verwenden von Data-Lake-Frameworks mit AWS Glue-ETL-Aufträgen.

  • AWS Glue-Konsole, AWS Lake Formation-Konsole AWS CLI oder API – Sie können die AWS Glue-Konsole, Lake-Formation-Konsole oder die API verwenden, um Iceberg-Tabellendefinitionen im Data Catalog zu erstellen und zu verwalten.

Erstellen von Apache-Iceberg-Tabellen

Sie können Apache-Iceberg-Tabellen erstellen, die das Apache-Parquet-Datenformat im AWS Glue Data Catalog verwenden, wobei sich die Daten in Amazon S3 befinden. Eine Tabelle im Data Catalog ist die Metadatendefinition, die die Daten in einem Datenspeicher repräsentiert. AWS Glue erstellt standardmäßig Iceberg-v2-Tabellen. Den Unterschied zwischen v1- und v2-Tabellen finden Sie unter Formatversionsänderungen in der Apache-Iceberg-Dokumentation.

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

Sie können AWS Glue oder die Lake-Formation-Konsole oder den CreateTable-Vorgang in der AWS Glue-API verwenden, um eine Iceberg-Tabelle im Datenkatalog zu erstellen. Weitere Informationen finden Sie unter CreateTable-Aktion (Python: create_table).

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

Sie können Lake Formation verwenden, um Ihre Iceberg-Tabelle mithilfe detaillierter Zugriffskontrollberechtigungen zu sichern, wenn Sie den Amazon-S3-Datenspeicherort bei AWS Lake Formation registrieren. Für Quelldaten in Amazon S3 und Metadaten, die nicht bei Lake Formation registriert sind, wird der Zugriff durch IAM-Berechtigungsrichtlinien für Amazon-S3- und AWS Glue-Aktionen bestimmt. Weitere Informationen finden Sie unter Verwalten von Berechtigungen.

Anmerkung

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

Voraussetzungen

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

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

    Zusätzlich zu den Berechtigungen, die zum Erstellen der Tabelle im Data Catalog erforderlich sind, benötigt der Tabellenersteller folgende Berechtigungen:

    • s3:PutObject in Ressource arn:aws:s3:::{bucketName}

    • s3:GetObject in Ressource arn:aws:s3:::{bucketName}

    • s3:DeleteObject in Ressource arn:aws:s3:::{bucketName}

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

    Um Lake Formation zur Verwaltung und Sicherung der Daten in Ihrem Data Lake zu verwenden, registrieren Sie Ihren Amazon-S3-Speicherort, der die Daten für Tabellen enthält, bei Lake Formation. Auf diese Weise kann Lake Formation Anmeldeinformationen an AWS--Analyse-Services wie Athena, Redshift Spectrum und Amazon EMR weitergeben, um auf Daten zuzugreifen. Weitere Informationen zur Registrierung eines Amazon-S3-Speicherorts finden Sie unter Hinzufügen eines Amazon-S3-Speicherorts zu Ihrem Data Lake.

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

    • lakeformation:GetDataAccess

    • DATA_LOCATION_ACCESS

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

      Weitere Informationen zu Zugriffsberechtigungen für Daten finden Sie unter Zugrundeliegende Datenzugriffskontrolle.

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

Erstellen einer Iceberg-Tabelle

Sie können Iceberg-v1- und Iceberg-v2-Tabellen mit AWS Glue oder der Lake-Formation-Konsole oder AWS Command Line Interface erstellen, wie auf dieser Seite dokumentiert. Sie können Iceberg-Tabellen auch mit dem AWS-Glue-Crawler erstellen. Weitere Informationen finden Sie unter Data Catalog und Crawler im AWS Glue-Entwicklerhandbuch.

So erstellen Sie eine Iceberg-Tabelle

Console
  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die AWS Glue-Konsole unter https://console.aws.amazon.com/glue/.

  2. Wählen Sie unter „Data Catalog“ die Option Tabellen aus, und verwenden Sie die Schaltfläche Tabelle erstellen, um die folgenden Attribute anzugeben:

    • Tabellenname – Geben Sie einen Namen für die Tabelle ein. Wenn Sie Athena verwenden, um auf Tabellen zuzugreifen, verwenden Sie diese Benennungstipps im Amazon-Athena-Benutzerhandbuch.

    • Datenbank – Wählen Sie eine vorhandene Datenbank aus oder erstellen Sie eine neue.

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

    • Tabellenformat – Wählen Sie als Tabellenformat Apache Iceberg aus.

    • Komprimierung aktivieren – Wählen Sie Komprimierung aktivieren aus, um kleine Amazon-S3-Objekte in der Tabelle zu größeren Objekten zu komrimieren.

    • IAM-Rolle – Um die Komprimierung auszuführen, übernimmt der Service in Ihrem Namen eine IAM-Rolle. Sie können mithilfe der Dropdown-Liste eine IAM-Rolle auswählen. Stellen Sie sicher, dass die Rolle über die erforderlichen Berechtigungen verfügt, um die Komprimierung zu aktivieren.

      Unter Voraussetzungen für die Tabellenoptimierung erfahren Sie mehr über die für diese Rolle erforderlichen Berechtigungen.

    • Speicherort – Geben Sie den Pfad zu dem Ordner in Amazon S3 an, in dem die Metadatentabelle gespeichert ist. Iceberg benötigt eine Metadatendatei und einen Speicherort im Data Catalog, um Lese- und Schreibvorgänge durchführen zu können.

    • Schema – Wählen Sie Spalten hinzufügen aus, um Spalten und Datentypen der Spalten hinzuzufügen. Sie haben die Möglichkeit, eine leere Tabelle zu erstellen und das Schema später zu aktualisieren. Data Catalog unterstützt Hive-Datentypen. Weitere Informationen finden Sie unter Datentypen.

      Mit Iceberg können Sie Schema und Partition weiterentwickeln, nachdem Sie die Tabelle erstellt haben. Sie können Athena-Abfragen verwenden, um das Tabellenschema zu aktualisieren, und Spark-Abfragen, um Partitionen zu aktualisieren.

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