Partitionsprojektion mit Amazon Athena verwenden - Amazon Athena

Partitionsprojektion mit Amazon Athena verwenden

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.

Grundlegendes über Partitionsbereinigung im Vergleich zu 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 führt Athena bei der Verarbeitung von Abfragen eine GetPartitions-Abfrage an AWS Glue Data Catalog durch, bevor die Partitionsbeschneidung durchgeführt 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.

So verwenden Sie Partitionsprojektion

Um die Partitionsprojektion zu verwenden, geben Sie die Bereiche von Partitionswerten und Projektionstypen für jede Partitionsspalte in den Tabelleneigenschaften im AWS Glue Data Catalog oder im externen Hive-Metastorean. 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 dem 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 in der 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. Die Daten sind nicht für die Modellierung in Ihrem AWS Glue Data Catalog oder Hive-Metastore geeignet 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 – Ein endlicher Satz von Aufzählungswerten wie Flughafencodes oder AWS-Regionen.

  • AWS-Service-Protokolle – AWS-Service -Protokolle verfügen in der Regel über eine bekannte Struktur, deren Partitionsschema Sie in AWS Glue angeben können und die Athena daher für die Partitionsprojektion verwenden kann.

So passen Sie die Partitionspfadvorlage an

Standardmäßig erstellt Athena Partitionsspeicherorte mithilfe des Formulars s3://amzn-s3-demo-bucket/<table-root>/partition-col-1=<partition-col-1-val>/partition-col-2=<partition-col-2-val>/, aber wenn Ihre Daten anders organisiert sind, bietet Athena einen Mechanismus zum Anpassen dieser Pfadvorlage. Informationen zu den erforderlichen Schritten finden Sie unter So geben Sie benutzerdefinierte S3-Speicherorten an.

Ü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 im 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 AWS Glue-Partitionen langsamer sein. 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 wie SELECT * FROM table-name WHERE timestamp = '2019/02/02' erfolgreich abgeschlossen, aber Nullzeilen zurückgeben.

  • Die Partitionsprojektion ist nur verwendbar, wenn die Tabelle über Athena abgefragt wird. Wenn dieselbe Tabelle durch einen anderen Service wie Amazon Redshift Spectrum, Athena for Spark oder Amazon EMR gelesen wird, werden die Standard-Partitionsmetadaten verwendet.

  • Da die Partitionsprojektion ein Nur-DML-Feature ist, listet SHOW PARTITIONS Partitionen nicht auf, 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.

Video

Das folgende Video zeigt, wie Sie die Partitionsprojektion verwenden, um die Leistung Ihrer Abfragen in Athena zu verbessern.