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.
Verwenden Sie die Partitionsprojektion mit Amazon Athena
Sie können die Partitionsprojektion in Athena verwenden, um die Abfrageverarbeitung von hochpartitionierten Tabellen zu beschleunigen und die Partitionsverwaltung zu automatisieren.
Bei der Partitionsprojektion berechnet Athena Partitionswerte und Speicherorte aus Tabelleneigenschaften, die Sie direkt in Ihrer Tabelle in AWS Glue konfigurieren. Die Tabelleneigenschaften ermöglichen es Athena, die erforderlichen Partitionsinformationen zu „projizieren“ oder zu ermitteln, anstatt eine zeitaufwändigere Suche nach Metadaten in AWS Glue Data Catalog durchführen zu müssen. Da In-Memory-Operationen oft schneller sind als Remote-Operationen, kann die Partitionsprojektion die Laufzeit von Abfragen für hochpartitionierte Tabellen reduzieren. Je nach den spezifischen Merkmalen der Abfrage und den zugrunde liegenden Daten kann die Partitionsprojektion die Abfragelaufzeit für Abfragen, die auf den Abruf von Partitionsmetadaten beschränkt sind, erheblich verkürzen.
Verstehen Sie Partitionsbereinigung und Partitionsprojektion
Die Partitionsbeschneidung erfasst Metadaten und „beschneidet“ sie nur für die Partitionen, die für Ihre Abfrage gelten. Dies beschleunigt häufig Abfragen. Athena verwendet die Partitionsbeschneidung für alle Tabellen mit Partitionsspalten, einschließlich der Tabellen, die für die Partitionsprojektion konfiguriert sind.
Normalerweise GetPartitions
ruft Athena bei der Verarbeitung von Abfragen den auf, AWS Glue Data Catalog bevor die Partition bereinigt wird. Wenn eine Tabelle über eine große Anzahl von Partitionen verfügt, kann die Verwendung von GetPartitions
die Leistung negativ beeinflussen. Um dies zu vermeiden, können Sie die Partitionsprojektion verwenden. Die Partitionsprojektion ermöglicht es Athena, Aufrufe von GetPartitions
zu vermeiden, da die Partitionsprojektionskonfiguration Athena alle notwendigen Informationen gibt, um die Partitionen selbst zu erstellen.
Wie benutzt man die Partitionsprojektion
Um die Partitionsprojektion zu verwenden, geben Sie die Bereiche der Partitionswerte und Projektionstypen für jede Partitionsspalte in den Tabelleneigenschaften im AWS Glue Data Catalog oder in Ihrem externen Hive-Metastore an. Diese benutzerdefinierten Eigenschaften in der Tabelle ermöglichen es Athena zu wissen, welche Partitionsmuster zu erwarten sind, wenn eine Abfrage für die Tabelle ausgeführt wird. Während der Abfrageausführung verwendet Athena diese Informationen, um die Partitionswerte zu projizieren, anstatt sie aus dem AWS Glue Data Catalog oder einem externen Hive-Metastore abzurufen. Dies reduziert nicht nur die Ausführungszeit der Abfrage, sondern automatisiert auch das Partitionsmanagement, da dadurch keine manuelle Erstellung von Partitionen in Athena, AWS Glue oder Ihrem externen Hive-Metastore erforderlich ist.
Wichtig
Wenn Sie die Partitionsprojektion für eine Tabelle aktivieren, ignoriert Athena alle Partitionsmetadaten, die für die Tabelle im AWS Glue Data Catalog oder Hive-Metastore registriert sind.
Einige Anwendungsfälle
Szenarien, in denen Partitionsprojektion sinnvoll ist, sind die etwa folgenden:
-
Abfragen für eine hochpartitionierte Tabelle werden nicht so schnell abgeschlossen, wie Sie dies wünschen.
-
Sie fügen regelmäßig Partitionen zu Tabellen hinzu, wenn neue Datums- oder Zeitpartitionen in Ihren Daten erstellt werden. Mit der Partitionsprojektion konfigurieren Sie relative Datumsbereiche, die beim Eintreffen neuer Daten verwendet werden können.
-
Sie haben stark partitionierte Daten in Amazon S3. Es ist nicht praktikabel, die Daten in Ihrem AWS Glue Data Catalog oder Hive-Metastore zu modellieren, und Ihre Abfragen lesen nur kleine Teile davon.
Projizierbare Partitionsstrukturen
Die Partitionsprojektion kann am einfachsten konfiguriert werden, wenn Ihre Partitionen einem vorhersehbaren Muster folgen, wie z. B.
-
Ganzzahlen – Jede fortlaufende Folge von ganzen Zahlen wie
[1, 2, 3, 4, ..., 1000]
oder[0500, 0550, 0600, ..., 2500]
. -
Datumsangaben – Jede fortlaufende Folge von Datumsangaben oder Datum/Uhrzeitangaben wie
[20200101, 20200102, ..., 20201231]
oder[1-1-2020 00:00:00, 1-1-2020 01:00:00, ..., 12-31-2020 23:00:00]
. -
Aufzählungswerte — Eine endliche Menge von Aufzählungswerten wie Flughafencodes oder. AWS-Regionen
-
AWS-Service Logs — AWS-Service Logs haben in der Regel eine bekannte Struktur, deren Partitionsschema Sie angeben können AWS Glue und die Athena daher für die Partitionsprojektion verwenden kann.
Wie passt man die Vorlage für den Partitionspfad an
Standardmäßig erstellt Athena Partitionsspeicherorte mithilfe des Formulars s3://amzn-s3-demo-bucket/
, aber wenn Ihre Daten anders organisiert sind, bietet Athena einen Mechanismus zum Anpassen dieser Pfadvorlage. Informationen zu den erforderlichen Schritten finden Sie unter Wie spezifiziert man benutzerdefinierte S3-Speicherorte.<table-root>
/partition-col-1=<partition-col-1-val>
/partition-col-2=<partition-col-2-val>
/
Überlegungen und Einschränkungen
Beachten Sie die folgenden Überlegungen:
-
Die Partitionsprojektion beseitigt die Notwendigkeit, Partitionen manuell in AWS Glue oder einem externen Hive-Metastore anzugeben.
-
Wenn Sie die Partitionsprojektion für eine Tabelle aktivieren, ignoriert Athena alle Partitionsmetadaten im AWS Glue Data Catalog oder externen Hive-Metastore für diese Tabelle.
-
Wenn eine projizierte Partition in Amazon S3 nicht vorhanden ist, projiziert Athena die Partition weiter aus. Athena löst keinen Fehler aus, aber es werden keine Daten zurückgegeben. Wenn jedoch zu viele Ihrer Partitionen leer sind, kann die Leistung im Vergleich zu herkömmlichen Partitionen langsamer sein. AWS Glue Wenn mehr als die Hälfte der projizierten Partitionen leer ist, wird empfohlen, herkömmliche Partitionen zu verwenden.
-
Abfragen für Werte, die außerhalb der für die Partitionsprojektion definierten Bereichsgrenzen liegen, geben keinen Fehler zurück. Stattdessen wird die Abfrage ausgeführt, gibt aber null Zeilen aus. Wenn Sie beispielsweise zeitbezogene Daten haben, die im Jahr 2020 beginnen und als
'projection.timestamp.range'='2020/01/01,NOW'
definiert sind, wird eine Abfrage wieSELECT * FROM
erfolgreich abgeschlossen, aber Nullzeilen zurückgeben.table-name
WHERE timestamp = '2019/02/02' -
Die Partitionsprojektion ist nur verwendbar, wenn die Tabelle über Athena abgefragt wird. Wenn dieselbe Tabelle über einen anderen Dienst wie Amazon Redshift Spectrum, Athena for Spark oder Amazon EMR gelesen wird, werden die Standard-Partitionsmetadaten verwendet.
-
Da es sich bei der Partitionsprojektion DML nur um eine Funktion handelt, werden
SHOW PARTITIONS
keine Partitionen aufgeführt, die von Athena projiziert, aber nicht im AWS Glue Katalog oder im externen Hive-Metastore registriert sind. -
Athena verwendet die Tabelleneigenschaften von Ansichten nicht als Konfiguration für die Partitionsprojektion. Um diese Einschränkung zu umgehen, konfigurieren und aktivieren Sie die Partitionsprojektion in den Tabelleneigenschaften für die Tabellen, auf die die Ansichten verweisen.
-
Lake Formation Formation-Datenfilter können in Athena-Engine-Version 2 nicht mit Partitionsprojektion verwendet werden.
Video
Das folgende Video zeigt, wie Sie die Partitionsprojektion verwenden, um die Leistung Ihrer Abfragen in Athena zu verbessern.