Partitionsprojektions einrichten - Amazon Athena

Partitionsprojektions einrichten

Das Einrichten der Partitionsprojektion in den Eigenschaften einer Tabelle ist ein zweistufiger Prozess:

  1. Geben Sie die Datenbereiche und relevanten Muster für jede Partitionsspalte an oder verwenden Sie eine benutzerdefinierte Vorlage.

  2. Aktivieren Sie die Partitionsprojektion für die Tabelle.

Anmerkung

Bevor Sie einer vorhandenen Tabelle Partitionsprojektionseigenschaften hinzufügen, muss die Partitionsspalte, für die Sie Partitionsprojektionseigenschaften einrichten, bereits im Tabellenschema vorhanden sein. Wenn die Partitionsspalte noch nicht vorhanden ist, müssen Sie der vorhandenen Tabelle manuell eine Partitionsspalte hinzufügen. AWS Glue führt diesen Schritt nicht automatisch für Sie durch.

In diesem Abschnitt wird gezeigt, wie Sie die Tabelleneigenschaften für AWS Glue festlegen. Um dies zu tun, können Sie die AWS Glue-Konsole, Athena CREATE TABLE-Abfragen oder AWS Glue API-Operationen verwenden. Im folgenden Verfahren wird gezeigt, wie die Eigenschaften in der AWS Glue-Konsole festgelegt werden.

So konfigurieren und aktivieren Sie die Partitionsprojektion mit der AWS Glue-Konsole
  1. Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die AWS Glue-Konsole unter https://console.aws.amazon.com/glue/.

  2. Wählen Sie die Registerkarte Tables (Tabellen).

    Auf der Registerkarte Tables (Tabellen) können Sie vorhandene Tabellen bearbeiten oder mit Add tables (Tabellen hinzufügen) neue Tabellen erstellen. Informationen zum manuellen Hinzufügen von Tabellen oder zur Verwendung eines Crawlers dafür finden Sie unter Arbeiten mit Tabellen in der AWS Glue-Konsole im AWS Glue-Entwicklerhandbuch.

  3. Wählen Sie in der Liste der Tabellen den Link für die Tabelle aus, die Sie bearbeiten möchten.

    Wählen Sie in der AWS Glue-Konsole eine zu bearbeitende Tabelle aus.
  4. Wählen Sie Actions (Aktionen) und Edit table (Tabelle bearbeiten) aus.

  5. Fügen Sie auf der Seite Edit table (Tabelle bearbeiten) im Abschnitt Table properties (Tabelleneigenschaften) für jede partitionierte Spalte das folgende Schlüssel-Wert-Paar hinzu:

    1. Fügen Sie für Key (Schlüssel) projection.columnName.type hinzu.

    2. Fügen Sie für Value (Wert) einen der unterstützten Typen hinzu: enum, integer, date oder injected. Weitere Informationen finden Sie unter Unterstützte Typen für die Partitionsprojektion.

  6. Fügen Sie nach den Anweisungen in Unterstützte Typen für die Partitionsprojektion zusätzliche Schlüssel-Wert-Paare gemäß Ihren Konfigurationsanforderungen hinzu.

    In der folgenden Beispieltabellenkonfiguration wird die year-Spalte für die Partitionsprojektion konfiguriert, wobei die Werte, die zurückgegeben werden können, auf einen Bereich von 2010 bis 2016 beschränkt werden.

    Konfigurieren der Partitionsprojektion für eine Partitionsspalte in den Eigenschaften der AWS Glue-Konsolentabelle.
  7. Fügen Sie ein Schlüssel-Wert-Paar hinzu, um die Partitionsprojektion zu aktivieren. Geben Sie für Key (Schlüssel) den Wert projection.enabled und für dessen Value (Wert) true ein.

    Anmerkung

    Sie können die Partitionsprojektion für diese Tabelle jederzeit deaktivieren, indem Sie projection.enabled auf false setzen.

  8. Klicken Sie auf Save , sobald Sie fertig sind.

  9. Prüfen Sie im Athena-Abfrage-Editor die Spalten, die Sie für die Tabelle konfiguriert haben.

    Die folgende Beispielabfrage verwendet SELECT DISTINCT, um die eindeutigen Werte aus der year-Spalte zurückzugeben. Die Datenbank enthält Daten von 1987 bis 2016, aber die projection.year.range-Eigenschaft beschränkt die zurückgegebenen Werte auf die Jahre 2010 bis 2016.

    Abfragen einer Spalte, die die Partitionsprojektion verwendet.
    Anmerkung

    Wenn Sie projection.enabled auf true festlegen, aber nicht mindestens eine Partitionsspalte konfigurieren, erhalten Sie eine Fehlermeldung wie die folgende:

    HIVE_METASTORE_ERROR: Table database_name.table_name is configured for partition projection, but the following partition columns are missing projection configuration: [column_name] (table database_name.table_name).

So geben Sie benutzerdefinierte S3-Speicherorten an

Wenn Sie Tabelleneigenschaften in AWS Glue bearbeiten, können Sie auch eine benutzerdefinierte Amazon-S3-Pfadvorlage für die projizierten Partitionen angeben. Eine benutzerdefinierte Vorlage ermöglicht Athena die ordnungsgemäße Zuweisung von Partitionswerten zu benutzerdefinierten Amazon-S3-Dateispeicherorten, die keinem typischen .../column=value/...-Muster folgen.

Die Verwendung einer benutzerdefinierten Vorlage ist optional. Wenn Sie jedoch eine benutzerdefinierte Vorlage verwenden, muss die Vorlage einen Platzhalter für jede Partitionsspalte enthalten. Vorlagenspeicherorte müssen mit einem Schrägstrich enden, damit die partitionierten Datendateien pro Partition in einem „Ordner“ gespeichert werden.

So geben Sie eine benutzerdefinierte Partitionsspeicherortvorlage an:
  1. Befolgen Sie die Schritte zum Konfigurieren und Aktivieren der Partitionsprojektion mithilfe der AWS Glue-Konsole und fügen Sie ein zusätzliches Schlüssel-Wert-Paar hinzu, das eine benutzerdefinierte Vorlage wie folgt angibt:

    1. Geben Sie für Key (Schlüssel) storage.location.template ein.

    2. Geben Sie für Value (Wert) einen Speicherort an, der für jede Partitionsspalte einen Platzhalter enthält. Stellen Sie sicher, dass jeder Platzhalter (und der S3-Pfad selbst) durch einen einzelnen Schrägstrich beendet wird.

      In den folgenden Beispielvorlagenwerten wird von einer Tabelle mit den Partitionsspalten a, b und c ausgegangen.

      s3://amzn-s3-demo-bucket/table_root/a=${a}/${b}/some_static_subdirectory/${c}/
      s3://amzn-s3-demo-bucket/table_root/c=${c}/${b}/some_static_subdirectory/${a}/${b}/${c}/${c}/

      Für dieselbe Tabelle ist der folgende Beispielvorlagenwert ungültig, da er keinen Platzhalter für die Spalte enthält c.

      s3://amzn-s3-demo-bucket/table_root/a=${a}/${b}/some_static_subdirectory/
  2. Wählen Sie Anwenden aus.