Partitionsprojektions einrichten
Das Einrichten der Partitionsprojektion in den Eigenschaften einer Tabelle ist ein zweistufiger Prozess:
-
Geben Sie die Datenbereiche und relevanten Muster für jede Partitionsspalte an oder verwenden Sie eine benutzerdefinierte Vorlage.
-
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
Melden Sie sich bei der AWS-Managementkonsole an und öffnen Sie die AWS Glue-Konsole unter https://console.aws.amazon.com/glue/
. -
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.
-
Wählen Sie in der Liste der Tabellen den Link für die Tabelle aus, die Sie bearbeiten möchten.
-
Wählen Sie Actions (Aktionen) und Edit table (Tabelle bearbeiten) aus.
-
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:
-
Fügen Sie für Key (Schlüssel)
projection.hinzu.columnName.type -
Fügen Sie für Value (Wert) einen der unterstützten Typen hinzu:
enum,integer,dateoderinjected. Weitere Informationen finden Sie unter Unterstützte Typen für die Partitionsprojektion.
-
-
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.
-
Fügen Sie ein Schlüssel-Wert-Paar hinzu, um die Partitionsprojektion zu aktivieren. Geben Sie für Key (Schlüssel) den Wert
projection.enabledund für dessen Value (Wert)trueein.Anmerkung
Sie können die Partitionsprojektion für diese Tabelle jederzeit deaktivieren, indem Sie
projection.enabledauffalsesetzen. -
Klicken Sie auf Save , sobald Sie fertig sind.
-
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 deryear-Spalte zurückzugeben. Die Datenbank enthält Daten von 1987 bis 2016, aber dieprojection.year.range-Eigenschaft beschränkt die zurückgegebenen Werte auf die Jahre 2010 bis 2016.
Anmerkung
Wenn Sie
projection.enabledauftruefestlegen, aber nicht mindestens eine Partitionsspalte konfigurieren, erhalten Sie eine Fehlermeldung wie die folgende:HIVE_METASTORE_ERROR: Table.database_name.table_nameis configured for partition projection, but the following partition columns are missing projection configuration: [column_name] (tabledatabase_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:
-
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:
-
Geben Sie für Key (Schlüssel)
storage.location.templateein. -
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,bundcausgegangen.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/
-
-
Wählen Sie Anwenden aus.