Delta-Lake-Tabellen von Linux Foundation abfragen - Amazon Athena

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.

Delta-Lake-Tabellen von Linux Foundation abfragen

Linux Foundation Delta Lake ist ein Tabellenformat für Big-Data-Analytik. Sie können Amazon Athena verwenden, um direkt in Amazon S3 gespeicherte Delta-Lake-Tabellen zu lesen, ohne Manifest-Dateien generieren oder die MSCK REPAIR-Anweisung ausführen zu müssen.

Das Delta-Lake-Format speichert die Mindest- und Höchstwerte pro Spalte jeder Datendatei. Die Athena-Implementierung verwendet diese Informationen, um das Überspringen von Dateien bei Prädikaten zu ermöglichen, um unerwünschte Dateien aus der Berücksichtigung zu entfernen.

Überlegungen und Einschränkungen

Für die Unterstützung von Delta Lake in Athena gelten die folgenden Überlegungen und Einschränkungen:

  • Nur Tabellen mit AWS Glue Katalog — Die native Delta Lake-Unterstützung wird nur über Tabellen unterstützt, bei AWS Glue denen registriert ist. Wenn Sie über eine Delta-Lake-Tabelle verfügen, die bei einem anderen Metastore registriert ist, können Sie diese trotzdem behalten und als Ihren primären Metastore behandeln. Da Delta Lake-Metadaten im Dateisystem (z. B. in Amazon S3) und nicht im Metastore gespeichert werden, benötigt Athena nur die Location-Eigenschaft in, AWS Glue um aus Ihren Delta Lake-Tabellen zu lesen.

  • V3 engine only (Nur V3-Engine) – Delta-Lake-Abfragen werden nur auf der Athena-Engine-Version 3 unterstützt. Sie müssen sicherstellen, dass die von Ihnen erstellte Arbeitsgruppe für die Verwendung der Athena-Engine-Version 3 konfiguriert ist.

  • Delta Lake-Reader-Version — Das Delta Lake-Reader-Protokoll bis Version 3 wird unterstützt.

  • Spaltenzuordnung und TimeStampNTZ Delta-Spaltenzuordnung, die es Delta-Tabellenspalten und den zugrunde liegenden Parquet-Dateispalten ermöglicht, unterschiedliche Namen zu verwenden, und Zeitstempel ohne Zeitzone (TimestampNTZ) werden unterstützt.

  • No time travel support (Keine Unterstützung für Zeitreisen) – Anfragen, die die Zeitreisefunktionen von Delta Lake nutzen, werden nicht unterstützt.

  • Read only (Schreibgeschützt) – Schreiben von DML-Anweisungen wie UPDATE, INSERT oder DELETE werden nicht unterstützt.

  • Lake-Formation-Unterstützung – Die Lake-Formation-Integration ist für Delta-Lake-Tabellen erhältlich, deren Schema mit AWS Glue synchron ist. Weitere Informationen finden Sie unter Verwenden AWS Lake Formation mit Amazon Athena und Einrichten von Berechtigungen für eine Delta Lake-Tabelle im AWS Lake Formation Entwicklerhandbuch.

  • Limited DDL support (Eingeschränkte DDL-Unterstützung) – Die folgenden DDL-Anweisungen werden unterstützt: CREATE EXTERNAL TABLE, SHOW COLUMNS, SHOW TBLPROPERTIES, SHOW PARTITIONS, SHOW CREATE TABLE und DESCRIBE. Informationen zur Verwendung der CREATE EXTERNAL TABLE-Anweisung finden Sie im Erste Schritte-Abschnitt.

  • Überspringen von S3-Glacier-Objekten wird nicht unterstützt – Wenn sich Objekte in der Delta-Lake-Tabelle der Linux Foundation in einer Amazon-S3-Glacier-Speicherklasse befinden, hat das Setzen der Tabelleneigenschaft read_restored_glacier_objects auf false keine Auswirkung.

    Angenommen, Sie führen den folgenden Befehl aus:

    ALTER TABLE table_name SET TBLPROPERTIES ('read_restored_glacier_objects' = 'false')

    Bei Iceberg- und Delta-Lake-Tabellen erzeugt der Befehl den Fehler Unsupported table property key: read_restored_glacier_objects. Bei Hudi-Tabellen erzeugt der ALTER TABLE-Befehl keinen Fehler, aber Amazon-S3-Glacier-Objekte werden immer noch nicht übersprungen. Beim Ausführen von SELECT-Abfragen nach dem ALTER TABLE-Befehl werden weiterhin alle Objekte zurückgegeben.

Unterstützte nicht partitionierte Spalten-Datentypen

Für nicht partitionierte Spalten werden alle von Athena unterstützten Datentypen außer CHAR unterstützt (CHAR wird im Delta-Lake-Protokoll selbst nicht unterstützt). Die unterstützten Datentypen beinhalten:

boolean tinyint smallint integer bigint double float decimal varchar string binary date timestamp array map struct

Unterstützte partitionierte Spalten-Datentypen

Für Partitionsspalten unterstützt Athena Tabellen mit den folgenden Datentypen:

boolean integer smallint tinyint bigint decimal float double date timestamp varchar

Weitere Informationen zu den Datentypen in Athena finden Sie unter Datentypen in Amazon Athena.

Erste Schritte

Um abfragbar zu sein, muss Ihre Delta Lake-Tabelle in existieren. AWS Glue Wenn sich Ihre Tabelle in Amazon S3, aber nicht in befindet AWS Glue, führen Sie eine CREATE EXTERNAL TABLE Anweisung mit der folgenden Syntax aus. Wenn Ihre Tabelle bereits in existiert AWS Glue (z. B. weil Sie Apache Spark oder eine andere Engine mit verwenden AWS Glue), können Sie diesen Schritt überspringen.

CREATE EXTERNAL TABLE [db_name.]table_name LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ('table_type' = 'DELTA')

Beachten Sie das Fehlen von Spaltendefinitionen, SerDe Bibliotheks- und anderen Tabelleneigenschaften. Im Gegensatz zu herkömmlichen Hive-Tabellen werden Delta Lake-Tabellenmetadaten aus dem Delta Lake-Transaktionslog abgeleitet und direkt mit diesem synchronisiert. AWS Glue

Anmerkung

Für Delta-Lake-Tabellen sind CREATE TABLE-Aussagen, die mehr als die Eigenschaft LOCATION und table_type enthalten, nicht zulässig.

Lesen von Delta Lake-Tabellen

Verwenden Sie die SELECT-Standard-SQL-Syntax, um eine Delta-Lake-Tabelle abzufragen:

[ WITH with_query [, ...] ]SELECT [ ALL | DISTINCT ] select_expression [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ] [ HAVING condition ] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] [ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ] [ OFFSET count [ ROW | ROWS ] ] [ LIMIT [ count | ALL ] ]

Weitere Informationen zur SELECT-Syntax finden Sie unter SELECT in der Athena-Dokumentation.

Das Delta-Lake-Format speichert die Mindest- und Höchstwerte pro Spalte jeder Datendatei. Athena verwendet diese Informationen, um das Überspringen von Dateien bei Prädikaten zu ermöglichen, um unnötige Dateien aus der Berücksichtigung zu entfernen.

Synchronisieren von Delta-Lake-Metadaten

Athena synchronisiert Tabellenmetadaten, einschließlich Schema, Partitionsspalten und Tabelleneigenschaften, AWS Glue wenn Sie Athena zum Erstellen Ihrer Delta Lake-Tabelle verwenden. Im Laufe der Zeit können diese Metadaten deren Synchronisierung mit den zugrunde liegenden Tabellenmetadaten im Transaktionsprotokoll verlieren. Um Ihre Tabelle auf dem neuesten Stand zu halten, können Sie eine der folgenden Optionen auswählen:

Beachten Sie, dass für die folgenden Funktionen Ihr AWS Glue Schema immer dasselbe Schema wie das Transaktionslog haben muss:

  • Lake Formation

  • Ansichten

  • Zeilen- und Spaltenfilter

Wenn Ihr Workflow keine dieser Funktionen benötigt und Sie es vorziehen, diese Kompatibilität nicht aufrechtzuerhalten, können Sie CREATE TABLE DDL in Athena verwenden und dann den Amazon S3 S3-Pfad als SerDe Parameter hinzufügen. AWS Glue

Um eine Delta Lake-Tabelle mit Athena und AWS Glue Konsolen zu erstellen
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Verwenden Sie im Athena-Abfrage-Editor die folgende DDL, um Ihre Delta-Lake-Tabelle zu erstellen. Beachten Sie, dass bei Verwendung dieser Methode der Wert für TBLPROPERTIES 'spark.sql.sources.provider' = 'delta' sein muss und nicht 'table_type' = 'delta'.

    Beachten Sie, dass dasselbe Schema (mit einer einzigen Spalte namens col vom Typ array<string>) eingefügt wird, wenn Sie Apache Spark (Athena für Apache Spark) oder die meisten anderen Engines verwenden, um Ihre Tabelle zu erstellen.

    CREATE EXTERNAL TABLE [db_name.]table_name(col array<string>) LOCATION 's3://DOC-EXAMPLE-BUCKET/your-folder/' TBLPROPERTIES ('spark.sql.sources.provider' = 'delta')
  3. Öffnen Sie die AWS Glue Konsole unter https://console.aws.amazon.com/glue/.

  4. Wählen Sie im Navigationsbereich unter Data Catalog die Option Tabellen.

  5. Wählen Sie in der Tabellenliste den Link für Ihre Tabelle aus.

  6. Wählen Sie auf der Seite für die Tabelle Aktionen und Tabelle bearbeiten aus.

  7. Fügen Sie im Abschnitt Serde-Parameter den Schlüssel path mit dem Wert s3://DOC-EXAMPLE-BUCKET/your-folder/ hinzu.

  8. Wählen Sie Speichern.

Weitere Ressourcen

Eine Erläuterung der Verwendung von Delta Lake-Tabellen mit AWS Glue und deren Abfrage mit Athena finden Sie unter Handle UPSERT data operations using open-source Delta Lake und AWS Glue im AWS Big Data Blog.