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.
-
Für CTAS siehe CTAS-Tabelleneigenschaften. Beispiele finden Sie unter Beispiele für CTAS-Abfragen.
-
Für Informationen zu CREATE TABLE finden Sie unter ALTER TABLE SET TBLPROPERTIES eine Liste der Eigenschaften von Komprimierungstabellen.
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, spezifizierenwrite.compression = NONE. -
CREATE TABLE (Parquet) — In
TBLPROPERTIES, spezifizierenparquet.compression = UNCOMPRESSED. -
CREATE TABLE (ORC) — In
TBLPROPERTIES, spezifizierenorc.compress = NONE.
Notizen und Ressourcen
-
Derzeit werden Großbuchstaben-Dateierweiterungen wie
.GZoder.BZIP2von 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
.