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à.
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 CREATE TABLE AS
(CTAS) per generare dati in formati diversi da CSV, le istruzioni CTAS richiedono la creazione di una tabella in Athena. L'UNLOAD
istruzione è utile quando si desidera restituire i risultati di una SELECT
query in un formato non CSV ma non si desidera 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 querySELECT
nell'istruzioneUNLOAD
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 Identifica i file di output delle query. -
Crittografia –
UNLOAD
vengono crittografati in base alla configurazione di crittografia utilizzata per Amazon S3. Per configurare la configurazione di crittografia per crittografare iUNLOAD
risultati, puoi utilizzare l'API. EncryptionConfiguration -
Istruzioni preparate –
UNLOAD
può essere utilizzato con istruzioni preparate. Per informazioni sulle istruzioni preparate in Athena, consulta Usa interrogazioni con parametri. -
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 la posizione dei risultati della query utilizzando la console Athena.
Sintassi
L'istruzione UNLOAD
utilizza la sintassi seguente.
UNLOAD (SELECT col_name
[, ...] FROM old_table
)
TO 's3://amzn-s3-demo-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.
- format = ''
file_format
-
Obbligatorio. Specifica il formato di file dell'output. I valori possibili per
file_format
sonoORC
PARQUET
,AVRO
,JSON
, oTEXTFILE
. - 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 utilizzagzip
per i formatiJSON
eTEXTFILE
. - livello_compressione =
compression_level
-
Facoltativo. Il livello di compressione da utilizzare per la compressione ZSTD. Questa proprietà si applica solo alla compressione ZSTD. Per ulteriori informazioni, consulta Usa i livelli di compressione ZSTD.
- 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). - partizionato_da = 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://amzn-s3-demo-bucket/unload_test_1/
utilizzando il formato JSON.
UNLOAD (SELECT * FROM old_table)
TO 's3://amzn-s3-demo-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://amzn-s3-demo-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://amzn-s3-demo-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://amzn-s3-demo-bucket/'
WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)
Risorse aggiuntive
-
Semplifica le tue pipeline ETL e ML utilizzando la funzionalità Amazon Athena UNLOAD
nel Blog sui Big Data di AWS .