Updates in Tabellen mit Partitionen - 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.

Updates in Tabellen mit Partitionen

In Athena müssen eine Tabelle und ihre Partitionen die gleichen Datenformate verwenden, ihre Schemata können aber unterschiedlich sein. Wenn Sie eine neue Partition erstellen, erbt die Partition in der Regel das Schema der Tabelle. Im Laufe der Zeit können sich die Schemas ggf. unterscheiden. Gründe sind u. a.:

  • Wenn sich das Schema der Tabelle ändert, werden die Schemas für Partitionen nicht aktualisiert, um weiterhin dem Schema der Tabelle zu entsprechen.

  • Der AWS Glue Crawler ermöglicht es Ihnen, Daten in Partitionen mit unterschiedlichen Schemas zu entdecken. Das heißt, wenn Sie eine Tabelle in Athena mit erstellen AWS Glue, nachdem der Crawler die Verarbeitung abgeschlossen hat, können die Schemas für die Tabelle und ihre Partitionen unterschiedlich sein.

  • Wenn Sie Partitionen direkt über eine API hinzufügen. AWS

Athena verarbeitet Tabellen mit Partitionen erfolgreich, wenn sie die folgenden Beschränkungen erfüllen. Wenn diese Beschränkungen nicht erfüllt sind, gibt Athena einen HIVE_PARTITION_SCHEMA_MISMATCH-Fehler aus.

  • Das Schema jeder Partition ist kompatibel mit dem Tabellenschema.

  • Das Datenformat der Tabelle ermöglicht die Art der Aktualisierung, die Sie ausführen möchten: Spalten hinzufügen, löschen, ihre Reihenfolge ändern oder den Datentyp einer Spalte ändern.

    Beispiel: In den Formaten CSV und TSV können Sie Spalten umbenennen, neue Spalten am Ende der Tabelle hinzufügen und den Datentyp einer Spalte ändern, falls die Typen kompatibel sind. Sie können aber keine Spalten entfernen. Bei anderen Formaten können Sie Spalten hinzufügen oder entfernen oder den Datentyp in einen anderen ändern, wenn die Typen kompatibel sind. Weitere Informationen finden Sie unter Zusammenfassung: Updates und Datenformate in Athena.

Vermeiden von Schemakonflikt-Fehlern für Tabellen mit Partitionen

Zu Beginn der Abfrageausführung überprüft Athena das Schema einer Tabelle, indem überprüft wird, dass der Datentyp jeder Spalte in der Tabelle und der Partition kompatibel ist.

  • Für Parquet- und ORC-Datenspeichertypen stützt sich Athena auf die Spaltennamen und verwendet sie für die auf Spaltennamen basierte Überprüfung des Schemas. Dadurch werden HIVE_PARTITION_SCHEMA_MISMATCH-Fehler für Tabellen mit Partitionen in Parquet und ORC verhindert. (Dies gilt für ORC, wenn die SerDe Eigenschaft so eingestellt ist, dass sie namentlich auf den Index zugreift:orc.column.index.access=FALSE. Parquet liest den Index standardmäßig nach Namen).

  • Für CSV, JSON und Avro verwendet Athena eine Index-basierte Schemaverifizierung. Das bedeutet: Wenn bei Ihnen ein Schemakonflikt-Fehler auftritt, sollten Sie die Partition löschen, die einen Schemakonflikt auslöst, und sie erneut erstellen. So kann Athena sie ohne Fehler abfragen.

Athena vergleicht das Schema der Tabelle mit den Partitionsschemata. Wenn Sie mit AWS Glue Crawler eine Tabelle in CSV, JSON und AVRO in Athena erstellen, können die Schemas für die Tabelle und ihre Partitionen nach Abschluss der Verarbeitung durch den Crawler unterschiedlich sein. Tritt ein Konflikt zwischen dem Tabellen- und dem Partitionsschema auf, scheitern Ihre Abfragen in Athena wegen eines Fehlers beim Überprüfen des Schemas, ähnlich dem Folgenden: „‚crawler_test.click_avro‘ ist als Typ ‚string‘ deklariert, in der Partition ‚partition_0=2017-01-17‘ ist die Spalte ‚col68‘ aber mit dem Typ ‚double‘ deklariert.“

Eine typische Behelfslösung für diesen Fehler besteht darin, dass die Partition entfernt wird, die den Fehler auslöst, und Sie sie dann erneut erstellen. Weitere Informationen finden Sie unter ALTER TABLE DROP PARTITION und ALTER TABLE ADD PARTITION.