Komprimierung in Athena verwenden - Amazon Athena

Komprimierung in Athena verwenden

Athena unterstützt eine Vielzahl von Komprimierungsformate zum Lesen und Schreiben von Daten, einschließlich des Lesens aus einer Tabelle, die mehrere Komprimierungsformate verwendet. Zum Beispiel kann Athena die Daten in einer Tabelle erfolgreich lesen, die das Parquet-Dateiformat verwendet, wenn einige Parquet-Dateien mit Snappy komprimiert werden und andere Parquet-Dateien mit GZIP komprimiert werden. Das gleiche Prinzip gilt für ORC-, Textfile- und JSON-Speicherformate.

Athena unterstützt folgende Komprimierungsformate:

  • BZIP2 – Format, das den Burrows-Wheeler-Algorithmus verwendet.

  • ENTLEEREN (Deflate) – Komprimierungsalgorithmus basierend auf LZSS und Huffman-Kodierung. Entleeren (Deflate) ist nur für das Avro-Dateiformat relevant.

  • GZIP – Komprimierungsalgorithmus basierend auf Entleeren (Deflate). Für Hive-Tabellen in Athena-Engine-Version 2 und 3 und Iceberg-Tabellen in Athena-Engine-Version 2 ist GZIP das standardmäßige Schreibkomprimierungsformat für Dateien in den Parquet- und Textdateispeicherformaten. Dateien im tar.gz-Format werden nicht unterstützt.

  • LZ4 – Dieses Mitglied der Lempel-Ziv 77 (LZ7)-Familie konzentriert sich auch auf die Komprimierungs- und Dekomprimierungsgeschwindigkeit und nicht auf die maximale Komprimierung von Daten. LZ4 hat die folgenden Framing-Formate:

    • LZ4 Roh/ungerahmt – Eine ungerahmte Standardimplementierung des LZ4-Blockkomprimierungsformats. Weitere Informationen finden Sie im Beschreibung des LZ4-Blockformats auf GitHub.

    • LZ4 framed – Die übliche Framing-Implementierung von LZ4. Weitere Informationen finden Sie im Beschreibung des LZ4-Frame-Formats auf GitHub.

    • LZ4 hadoop-kompatibel – Die Apache-Hadoop-Implementierung von LZ4. Diese Implementierung schließt die LZ4-Komprimierung mit dem BlockCompressorStream.java.

  • LZOO – Format, das den Lempel-Ziv-Oberhumer-Algorithmus verwendet, der sich eher auf eine hohe Komprimierungs- und Dekompressionsgeschwindigkeit als auf die maximale Komprimierung von Daten konzentriert. LZO hat zwei Implementierungen:

    • LZO-Standard – Weitere Informationen hierzu finden Sie im LZO-Abstract auf der Oberhumer-Website.

    • LZO hadoop-kompatibel – Diese Implementierung umschließt den LZO-Algorithmus mit der BlockCompressorStream.java-Klasse.

  • SNAPPY – Komprimierungsalgorithmus, der Teil der Lempel-Ziv-77(LZ7)-Familie ist. Snappy konzentriert sich eher auf eine hohe Komprimierungs- und Dekomprimierungsgeschwindigkeit als auf die maximale Komprimierung von Daten.

  • ZLIB – ZLIB basiert auf Deflate das Standard-Schreibkomprimierungsformat für Dateien im ORC-Datenspeicherformat. Weitere Informationen finden Sie auf der zlib-Seite auf GitHub.

  • ZSTD – Der Zstandard-Echtzeit-Datenkomprimierungsalgorithmus ist ein schneller Komprimierungsalgorithmus, der hohe Komprimierungsverhältnisse bietet. Die Zstandard-Bibliothek (ZSTD) wird als Open-Source-Software unter Verwendung einer BSD-Lizenz bereitgestellt. ZSTD ist die Standardkomprimierung für Iceberg-Tabellen. Beim Schreiben komprimierter ZSTD-Daten verwendet Athena standardmäßig ZSTD-Komprimierungsstufe 3. Weitere Informationen zur Verwendung von ZSTD-Komprimierungsstufen in Athena finden Sie unter ZSTD-Komprimierungsstufen verwenden.

Anmerkung

Athena unterstützt das Schreiben von Parquet-Dateien, die mit den Formaten LZ4 oder LZO komprimiert wurden, nicht. Lesevorgänge für diese Komprimierungsformate werden unterstützt.

Komprimierungsformate festlegen

Wenn Sie CREATE TABLE- oder CTAS-Anweisungen schreiben, können Sie Komprimierungseigenschaften angeben, die den Komprimierungstyp angeben, der verwendet werden soll, wenn Athena in diese Tabellen schreibt.

Keine Komprimierung festlegen

CREATE-TABLE-Anweisungen unterstützen das Schreiben unkomprimierter Dateien. Verwenden Sie die folgende Syntax, um unkomprimierte Dateien zu schreiben:

  • CREATE TABLE (Textdatei oder JSON) — In TBLPROPERTIES, spezifizieren write.compression = NONE.

  • CREATE TABLE (Parquet) — In TBLPROPERTIES, spezifizieren parquet.compression = UNCOMPRESSED.

  • CREATE TABLE (ORC) — In TBLPROPERTIES, spezifizieren orc.compress = NONE.

Notizen und Ressourcen

  • Derzeit werden Großbuchstaben-Dateierweiterungen wie .GZ oder .BZIP2 von Athena nicht anerkannt. Vermeiden Sie die Verwendung von Datensätzen mit Dateierweiterungen in Großbuchstaben oder benennen Sie die Datendateierweiterungen in Kleinbuchstaben um.

  • Athena bestimmt den Komprimierungstyp für Daten in den Formaten CSV, TSV und JSON anhand der Dateierweiterung. Wenn keine Dateierweiterung vorhanden ist, behandelt Athena die Daten als unkomprimierten Klartext. Wenn Ihre Daten komprimiert sind, stellen Sie sicher, dass der Dateiname die Komprimierungserweiterung enthält, z. B. gz.

  • Das ZIP-Dateiformat wird nicht unterstützt.

  • Für das Abfragen von Protokollen für Amazon Data Firehose von Athena aus umfassen die unterstützten Formate GZIP-Komprimierung oder ORC-Dateien mit SNAPPY-Komprimierung.

  • Weitere Informationen zur Verwendung der Komprimierung finden Sie in Abschnitt 3 („Komprimieren und Teilen von Dateien“) des AWS-Big-Data-Blogbeitrags Top 10 Tipps zur Leistungsoptimierung für Amazon Athena.