Direkt zum Inhalt

Wie kann ich partitionierte Tabellen in Amazon Athena erstellen und verwenden?

Lesedauer: 3 Minute
0

Ich möchte partitionierte Tabellen in Amazon Athena erstellen und sie verwenden, um meine Abfragen zu verbessern.

Kurzbeschreibung

Gehe wie folgt vor, um eine partitionierte Athena-Tabelle zu erstellen:

  1. Speichere deine Daten als Partition in Amazon Simple Storage Service (Amazon S3) Buckets.
  2. Gib die Partitionierungsspalten und den Stammspeicherort der partitionierten Daten an, wenn du die Tabelle erstellst.
  3. Lade die Partitionen in den AWS-Glue-Datenkatalog hoch.
    Hinweis: Die Tabelle bezieht sich auf den Datenkatalog, wenn du deine Abfragen ausführst.

Lösung

Speichere deine Daten als Partition in Amazon S3

Wähle eines der folgenden Formate aus, um deine partitionierten Daten zu speichern:

  • Hive-Style-Format: s3://doc-example-bucket/example-folder/year=2021/month=01/day=01/myfile.csv
    Hinweis: Der Pfad enthält die Namen der Partitionsschlüssel und ihre Werte. Zum Beispiel year=2021.
  • Format im Nicht-Hive-Stil: s3://doc-example-bucket/example-folder/2021/01/01/myfile.csv

Gib die Partitionierungsinformationen an, wenn du die Tabelle erstellst

Verwende in deiner Anweisung CREATE TABLE PARTITIONED BY, um die Partitionsspalten zu definieren, und LOCATION, um den Stammspeicherort der partitionierten Daten anzugeben.

Beispielabfrage:

CREATE EXTERNAL TABLE doc-example-table (
first string,
last string,
username string
)
PARTITIONED BY (year string, month string, day string)
STORED AS parquet
LOCATION 's3://doc-example-bucket/example-folder'

Hinweis: Ersetze in der vorherigen Abfrage die folgenden Werte durch deine Werte:

  • doc-example-table mit dem Namen der Tabelle, die du erstellst
  • doc-example-bucket mit dem Namen des S3 Buckets, in dem du deine Tabelle speicherst
  • example-folder mit dem Namen Ihres S3-Ordners
  • first, last und username mit den Namen der Spalten
  • Jahreszeichenfolge, Monatszeichenfolge und Tageszeichenfolge mit den Namen der Partitionsspalten

Partitionen in den Datenkatalog hochladen

Nachdem du die Tabelle erstellt hast, wähle eine der folgenden Methoden aus, um die Partitionen zum Datenkatalog hinzuzufügen.

Verwende die MSCK REPAIR TABLE-Abfrage für Daten im Hive-Format

Um die Datenkatalog-Metadaten nach dem Hinzufügen der Partitionen zu aktualisieren, führe den Befehl MSCK REPAIR TABLE aus:

MSCK REPAIR TABLE doc-example-table

Hinweis: Ersetze doc-example-table durch deine Tabelle.

Wenn du mehr als ein paar tausend Partitionen hast, ist diese Methode keine bewährte Methode, die verwendet werden sollte. Bei deinen DDL-Abfragen kann es zu Timeout-Problemen kommen. Weitere Informationen findest du unter Warum fügt meine MSCK-REPAIR-TABLE-Abfrage dem AWS-Glue-Datenkatalog keine Partitionen hinzu?

Verwende die ALTER TABLE ADD PARTITION-Abfrage sowohl für Daten im Hive-Format als auch für Daten im Nicht-Hive-Format

Um dem Datenkatalog Partitionen hinzuzufügen, führe den Befehl ALTER TABLE ADD PARTITION aus.

Um eine einzelne Partition hinzuzufügen, führe den folgenden Befehl aus:

ALTER TABLE doc-example-table ADD PARTITION (year='2021', month='01', day='01') LOCATION 's3://doc-example-bucket/example-folder/2021/01/01/'

Um mehrere Partitionen in einer Abfrage hinzuzufügen, führe den folgenden Befehl aus:

ALTER TABLE doc-example-table ADD  
PARTITION (year='2021', month='01', day='01') LOCATION 's3://doc-example-bucket/example-folder/2021/01/01/'  
PARTITION (year='2020', month='06', day='01') LOCATION 's3://doc-example-bucket/example-folder/2020/06/01/'

Hinweis: Ersetze in den vorherigen Befehlen die Beispielwerte durch deine Werte.

Verwende den AWS-Glue-Crawler sowohl für Daten im Hive-Format als auch für Daten im Nicht-Hive-Format

Verwende den AWS-Glue-Crawler, um automatisch ein Tabellenschema aus deinem Datensatz abzuleiten, die Tabelle zu erstellen und die Partitionen zum Datenkatalog hinzuzufügen. Du kannst den Crawler auch verwenden, um nur Partitionen zu einer Tabelle hinzuzufügen, die manuell mit der Anweisung CREATE TABLE erstellt wurde.

Weitere Informationen findest du unter Anpassen des Crawler-Verhaltens.

Verwende die Partitionsprojektion für stark partitionierte Daten in Amazon S3

Es ist keine bewährte Methode, Abfragen für stark partitionierte Daten in Amazon S3 auszuführen, da die Abfragen langsam sind. Wenn deine Daten stark partitioniert sind, verwende die Partitionsprojektion um den Abfragevorgang zu beschleunigen und die Partitionsverwaltung zu automatisieren.

Ähnliche Informationen

Warum erhalte ich keine Datensätze, wenn ich meine Amazon-Athena-Tabelle abfrage?

Warum hat meine Athena-Abfrage keine Ergebnisse zurückgegeben, nachdem ich neue Partitionen hinzugefügt habe?

AWS OFFICIALAktualisiert vor einem Jahr