Usa la compressione in Athena - Amazon Athena

Usa la compressione in Athena

Athena supporta diversi formati di compressione per la lettura e la scrittura di dati, inclusa la lettura da una tabella che utilizza più formati di compressione. Ad esempio, Athena può leggere correttamente i dati in una tabella che utilizza il formato file Parquet quando alcuni file Parquet vengono compressi con Snappy e altri file Parquet vengono compressi con GZIP. Lo stesso principio vale per i formati di archiviazione ORC, file di testo e JSON.

Athena supporta i seguenti formati di compressione:

  • BZIP2: formato che utilizza l'algoritmo Burrows-Wheeler.

  • DEFLATE: algoritmo di compressione basato su LZSS e codifica Huffman. Deflate è rilevante solo per il formato file Avro.

  • GZIP: algoritmo di compressione basato su Deflate. Per le tabelle Hive nel motore Athena versioni 2 e 3 e le tabelle Iceberg nel motore Athena versione 2, il formato di compressione in scrittura predefinito per i file nei formati di archiviazione dei file di testo e Parquet è GZIP. I file nel formato tar.gz non sono supportati.

  • LZ4: questo membro della famiglia Lempel-Ziv 77 (LZ7) si concentra sulla velocità di compressione e decompressione piuttosto che sulla compressione massima dei dati. LZ4 ha i seguenti formati di framing:

    • LZ4 raw/senza frame: una implementazione standard senza frame del formato di compressione a blocchi LZ4. Per ulteriori informazioni, consulta Descrizione del formato a blocchi LZ4 su GitHub.

    • LZ4 con frame: la consueta implementazione di framing di LZ4. Per ulteriori informazioni, consulta Descrizione del formato con frame LZ4 su GitHub.

    • Compatibile con Hadoop LZ4: l'implementazione di Apache Hadoop di LZ4. Questa implementazione include la compressione LZ4 con la classe BlockCompressorStream.java.

  • LZO: formato che utilizza l'algoritmo Lempel-Ziv-Oberhumer, che si concentra sull'elevata velocità di compressione e decompressione anziché sulla compressione massima dei dati. LZO ha due implementazioni:

    • LZO standard: per ulteriori informazioni, consulta il riassunto su LZO sul sito Web di Oberhumer.

    • Compatibile con Hadoop LZO: questa implementazione include l'algoritmo LZO con la classe BlockCompressorStream.java.

  • SNAPPY: algoritmo di compressione che fa parte della famiglia Lempel-Ziv 77 (LZ7). Snappy si concentra sull'elevata velocità di compressione e decompressione piuttosto che sulla compressione massima dei dati.

  • ZLIB: basato su Deflate, ZLIB è il formato di compressione della scrittura di default per i file nel formato di archiviazione dati ORC. Per ulteriori informazioni, consulta la pagina zlib su GitHub.

  • ZSTD: l'algoritmo di compressione dei dati in tempo reale Zstandard è un algoritmo di compressione veloce che fornisce rapporti di compressione elevati. La libreria Zstandard (ZSTD) viene fornita come software open source tramite una licenza BSD. ZSTD è la compressione predefinita per le tabelle Iceberg. Quando si scrivono dati compressi ZSTD, Athena utilizza il livello di compressione ZSTD 3 per impostazione predefinita. Per ulteriori informazioni sui livelli di compressione ZSTD in Athena, consulta Usa i livelli di compressione ZSTD.

Nota

Athena non supporta la scrittura di file Parquet compressi nei formati LZ4 o LZO. Sono però supportate le letture per questi formati di compressione.

Specifica i formati di compressione

Quando si scrivono istruzioni CREATE TABLE o CTAS, è possibile specificare le proprietà di compressione che specificano il tipo di compressione da utilizzare quando Athena scrive su tali tabelle.

Specifica l'assenza di compressione

Le istruzioni CREATE TABLE supportano la scrittura di file non compressi. Per scrivere file non compressi, utilizza la sintassi seguente:

  • CREATE TABLE (file di testo o JSON): in TBLPROPERTIES, specifica write.compression = NONE.

  • CREATE TABLE (Parquet): in TBLPROPERTIES, specifica parquet.compression = UNCOMPRESSED.

  • CREATE TABLE (ORC): in TBLPROPERTIES, specifica orc.compress = NONE.

Note e risorse

  • Attualmente, estensioni di file in lettere maiuscole come .GZ o .BZIP2 non sono riconosciute da Athena. Evitare di utilizzare set di dati con estensioni di file in lettere maiuscole o rinominare le estensioni dei file di dati in lettere minuscole.

  • Per i dati in CSV, TSV e JSON, Athena determina il tipo di compressione dall'estensione del file. Se non è presente alcuna estensione di file, i dati vengono gestiti da Athena come testo normale non compresso. Se i dati sono compressi, verifica che il nome del file includa l'estensione della compressione, ad esempio gz.

  • Il formato di file ZIP non è supportato.

  • Per interrogare i log di Amazon Data Firehose da Athena, i formati supportati includono la compressione GZIP o i file ORC con compressione SNAPPY.

  • Per maggiori informazioni sull'utilizzo della compressione, consulta la sezione 3 ("Compressione e suddivisione dei file") del post del blog AWS Big Data I 10 principali consigli per la messa a punto delle prestazioni di Amazon Athena.