Iceberg-Tabellen optimieren - 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.

Iceberg-Tabellen optimieren

Athena bietet mehrere Optimierungsfunktionen zur Verbesserung der Abfrageleistung auf Apache Iceberg-Tabellen. Wenn sich Daten ansammeln, können Abfragen aufgrund des erhöhten Dateiverarbeitungsaufwands und der Rechenkosten für Löschungen auf Zeilenebene, die in Iceberg-Löschdateien gespeichert sind, weniger effizient werden. Um diesen Herausforderungen zu begegnen, unterstützt Athena Bediener von manueller Verdichtungs- und Vakuumtechnik bei der Optimierung der Tischstruktur. Athena arbeitet auch mit Iceberg-Statistiken, um eine kostenbasierte Abfrageoptimierung und Parquet-Spaltenindizierung für eine präzise Datenbereinigung während der Abfrageausführung zu ermöglichen. Diese Funktionen arbeiten zusammen, um die Ausführungszeit von Abfragen zu verkürzen, das Scannen von Daten zu minimieren und die Kosten zu senken. In diesem Thema wird beschrieben, wie Sie diese Optimierungsfunktionen verwenden können, um Hochleistungsabfragen in Ihren Iceberg-Tabellen aufrechtzuerhalten.

OPTIMIZE

Die OPTIMIZE table REWRITE DATA-Verdichtungsaktion schreibt Datendateien basierend auf ihrer Größe und Anzahl der zugehörigen Löschdateien in ein optimierteres Layout um. Einzelheiten zur Syntax und Tabelleneigenschaften finden Sie unter OPTIMIZE.

Beispiel

Im folgenden Beispiel werden Löschdateien in Datendateien zusammengeführt und Dateien in der Nähe der Zieldateigröße erstellt, bei denen der Wert von category c1 ist.

OPTIMIZE iceberg_table REWRITE DATA USING BIN_PACK WHERE category = 'c1'

VACUUM

VACUUM führt den Snapshot-Ablauf und das Entfernen verwaister Dateien durch. Diese Aktionen reduzieren die Größe der Metadaten und entfernen Dateien, die sich nicht im aktuellen Tabellenstatus befinden und zudem älter als die für die Tabelle angegebene Aufbewahrungsfrist sind. Einzelheiten zur Syntax finden Sie unter VACUUM.

Beispiel

Im folgenden Beispiel wird eine Tabelleneigenschaft verwendet, um die Tabelle iceberg_table so zu konfigurieren, dass die Daten der letzten drei Tage beibehalten werden. Anschließend verwendet es VACUUM, um die alten Snapshots ablaufen zu lassen und die verwaisten Dateien aus der Tabelle zu entfernen.

ALTER TABLE iceberg_table SET TBLPROPERTIES ( 'vacuum_max_snapshot_age_seconds'='259200' ) VACUUM iceberg_table

Verwenden Sie Iceberg-Tabellenstatistiken

Der kostenbasierte Optimierer von Athena verwendet Iceberg-Statistiken, um optimale Abfragepläne zu erstellen. Wenn Statistiken für Ihre Iceberg-Tabellen generiert wurden, verwendet Athena diese Informationen automatisch, um intelligente Entscheidungen über die Reihenfolge der Verknüpfungen, Filter und das Aggregationsverhalten zu treffen, wodurch häufig die Abfrageleistung verbessert und die Kosten gesenkt werden.

Iceberg-Statistiken sind standardmäßig aktiviert, wenn Sie S3-Tabellen verwenden. Bei anderen Iceberg-Tabellen verwendet Athena die Tabelleneigenschaft, use_iceberg_statistics um zu bestimmen, ob Statistiken für die kostenbasierte Optimierung genutzt werden sollen. Erste Schritte finden Sie unter Optimieren der Abfrageleistung mithilfe von Spaltenstatistiken im AWS GlueBenutzerhandbuch oder verwenden Sie die Athena-Konsole, um On-Demand-Statistiken für Ihre Iceberg-Tabellen zu generieren.

Verwenden Sie die Parquet-Spaltenindizierung

Die Parquet-Spaltenindizierung ermöglicht es Athena, während der Abfrageausführung eine genauere Datenbereinigung durchzuführen, indem zusätzlich zu Statistiken auf Zeilengruppenebene auch min/max Statistiken auf Seitenebene genutzt werden. Auf diese Weise kann Athena unnötige Seiten innerhalb von Zeilengruppen überspringen, wodurch die Menge der gescannten Daten erheblich reduziert und die Abfrageleistung verbessert wird. Es eignet sich am besten für Abfragen mit selektiven Filterprädikaten für sortierte Spalten. Dadurch werden sowohl die Ausführungszeit als auch die Effizienz des Datenscans verbessert und gleichzeitig die Datenmenge reduziert, die Athena aus Amazon S3 lesen muss.

Athena verwendet standardmäßig Parquet-Spaltenindizes mit S3-Tabellen, wenn Spaltenindizes in den zugrunde liegenden Parquet-Dateien vorhanden sind. Bei anderen Iceberg-Tabellen bestimmt Athena anhand der use_iceberg_parquet_column_index Eigenschaft, ob die Spaltenindizes in der Parquet-Datei verwendet werden sollen. Stellen Sie diese Tabelleneigenschaft mithilfe der AWS Glue Konsole oder der API ein. UpdateTable