UNLOAD - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

UNLOAD

Scrive i risultati delle query da un'istruzione SELECT al formato di dati specificato. I formati supportati per UNLOAD includono Apache Parquet, ORC, Apache Avro e JSON. CSV è l'unico formato di output supportato dal comando SELECT Athena, ma è possibile utilizzare UNLOAD il comando, che supporta diversi formati di output, per racchiudere SELECT la query e riscriverne l'output in uno dei formati supportati. UNLOAD

Sebbene sia possibile utilizzare l'istruzione CTAS per generare dati in formati diversi da CSV, tali istruzioni richiedono anche la creazione di una tabella in Athena. L'istruzione UNLOAD è utile quando si desidera generare i risultati di una query SELECT in un formato non CSV ma non richiedono la tabella associata. Ad esempio, un'applicazione downstream potrebbe richiedere i risultati di una query SELECT in formato JSON, e Parquet o ORC potrebbe fornire un vantaggio in termini di prestazioni rispetto a CSV se si intende utilizzare i risultati della query SELECT per ulteriori analisi.

Considerazioni e limitazioni

Quando utilizzi l'istruzione UNLOAD in Athena, devi considerare quanto segue:

  • Nessun ordine globale dei file – I risultati UNLOAD vengono scritti in più file in parallelo. Se la query SELECT nell'istruzione UNLOAD specifica un ordine, il contenuto di ogni file è in ordine ordinato, ma i file non sono ordinati l'uno rispetto all'altro.

  • Dati orfani non eliminati — In caso di guasto, Athena non tenta di eliminare i dati orfani. Questo comportamento è lo stesso per CTAS e per le istruzioni INSERT INTO.

  • Partizioni massime: Il numero massimo di partizioni che possono essere utilizzate con UNLOAD è 100.

  • File manifest e metadati — Athena genera un file di metadati e un file manifesto di dati per ogni query UNLOAD. Il manifest tiene traccia dei file scritti dalla query. Entrambi i file vengono salvati nella posizione dei risultati della query Athena in Amazon S3. Per ulteriori informazioni, consulta Identificazione dei file di output delle query.

  • CrittografiaUNLOAD vengono crittografati in base alla configurazione di crittografia utilizzata per Amazon S3. Per configurare la configurazione di crittografia per crittografare i UNLOAD risultati, puoi utilizzare l'API. EncryptionConfiguration

  • Istruzioni preparateUNLOAD può essere utilizzato con istruzioni preparate. Per informazioni sulle istruzioni preparate in Athena, consulta Utilizzo di query parametrizzate.

  • Quote di servizio — UNLOAD utilizza le quote di query DML. Per informazioni sulle quote, consulta Service Quotas (Quote di Servizio).

  • Proprietario previsto del bucket: l'impostazione relativa al proprietario previsto del bucket non si applica al percorso del bucket Amazon S3 di destinazione specificato nella query UNLOAD. L'impostazione attesa relativa al proprietario del bucket si applica solo al percorso di output di Amazon S3 specificato per i risultati delle query di Athena. Per ulteriori informazioni, consulta Specificare una posizione dei risultati delle query utilizzando la console Athena.

Sintassi

L'istruzione UNLOAD utilizza la sintassi seguente.

UNLOAD (SELECT col_name[, ...] FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/my_folder/' WITH ( property_name = 'expression' [, ...] )

Tranne quando si scrive su partizioni, la TO destinazione deve specificare una posizione in Amazon S3 priva di dati. Prima che la query UNLOAD scrive nella posizione specificata, verifica che la posizione del bucket sia vuota. Poiché UNLOAD non scrive i dati nella posizione specificata se la posizione contiene già dati, UNLOAD non sovrascrive i dati esistenti. Per riutilizzare una posizione bucket come destinazione per UNLOAD, elimina i dati nella posizione del bucket e quindi esegui nuovamente la query.

Tieni presente che quando si UNLOAD scrive su partizioni, questo comportamento è diverso. Se esegui la stessa UNLOAD query più volte con la stessa SELECT istruzione, la stessa TO posizione e le stesse partizioni, ogni UNLOAD query scarica i dati in Amazon S3 nella posizione e nelle partizioni specificate.

Parametri

I valori possibili di property_name sono indicati di seguito.

formato = 'file_format'

Obbligatorio. Specifica il formato di file dell'output. Valori possibili per file_format sono ORC, PARQUET, AVRO, JSON o TEXTFILE.

compressione = 'compression_format'

Facoltativo. Questa opzione è specifica per i formati ORC e Parquet. Per ORC il valore predefinito è zlib e per Parquet il valore predefinito è gzip. Per informazioni sui formati di compressione supportati, consulta Supporto alla compressione Athena.

Nota

Questa opzione non è valida per il formato AVRO. Athena utilizza gzip per i formati JSON e TEXTFILE.

compression_level = livello_compressione

Facoltativo. Il livello di compressione da utilizzare per la compressione ZSTD. Questa proprietà si applica solo alla compressione ZSTD. Per ulteriori informazioni, consulta Utilizzo dei livelli di compressione ZSTD in Athena.

field_delimiter = 'delimiter'

Facoltativo. Specifica un delimitatore di campo a carattere singolo per file in CSV, TSV e altri formati di testo. L'esempio seguente specifica la virgola come separatore decimale.

WITH (field_delimiter = ',')

Attualmente, i delimitatori di campo multicarattere non sono supportati. Se non si specifica un separatore di campo, viene usato il carattere ottale \001 (^A).

partitioned_by = ARRAY[ col_name[,…] ]

Facoltativo. Un elenco matrice di colonne in base al quale l'output è partizionato.

Nota

Nell'istruzione SELECT, assicurati che i nomi delle colonne partizionate siano elencati per ultimi nell'elenco delle colonne.

Esempi

L'esempio seguente scrive l'output di una query SELECT per la posizione Amazon S3 s3://DOC-EXAMPLE-BUCKET/unload_test_1/ utilizzando il formato JSON.

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/unload_test_1/' WITH (format = 'JSON')

L'esempio seguente scrive l'output di una query SELECT in formato Parquet utilizzando la compressione Snappy.

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET',compression = 'SNAPPY')

Nell'esempio seguente vengono scritte quattro colonne in formato testo, con l'output partizionato dall'ultima colonna.

UNLOAD (SELECT name1, address1, comment1, key1 FROM table1) TO 's3://DOC-EXAMPLE-BUCKET/ partitioned/' WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])

L'esempio seguente scarica i risultati della query nella posizione specificata utilizzando il formato file Parquet, la compressione ZSTD e il livello di compressione ZSTD 4.

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)

Risorse aggiuntive