Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Écrit les résultats de requête à partir d'une instruction SELECT
au format de données spécifié. Les formats pris en charge pour UNLOAD
comprennent Apache Parquet, ORC, Apache Avro et JSON. Le format CSV est le seul format de sortie pris en charge par la SELECT
commande Athena, mais vous pouvez utiliser cette UNLOAD
commande, qui prend en charge différents formats de sortie, pour inclure votre SELECT
requête et réécrire sa sortie dans l'un des formats pris en charge. UNLOAD
Bien que vous puissiez utiliser l'instruction CREATE TABLE AS
(CTAS) pour générer des données dans des formats autres que CSV, les instructions CTAS nécessitent la création d'un tableau dans Athena. L'UNLOAD
instruction est utile lorsque vous souhaitez générer les résultats d'une SELECT
requête dans un format autre que CSV mais que vous ne souhaitez pas obtenir la table associée. Par exemple, une application en aval peut exiger que les résultats d'une requête SELECT
soient au format JSON, et Parquet ou ORC peut offrir un avantage de performance par rapport au CSV si vous avez l'intention d'utiliser les résultats de la requête SELECT
pour une analyse supplémentaire..
Considérations et restrictions
Lorsque vous utilisez l'instruction UNLOAD
dans Athena, gardez à l'esprit les points suivants :
-
Aucun ordre global des fichiers – Les résultats
UNLOAD
sont écrits dans plusieurs fichiers en parallèle. Si la requêteSELECT
de l'instructionUNLOAD
spécifie un ordre de tri, le contenu de chaque fichier est trié, mais les fichiers ne sont pas triés les uns par rapport aux autres. -
Données orphelines non supprimées – En cas d'échec, Athena ne tente pas de supprimer les données orphelines. Ce comportement est le même que pour les instructions CTAS et
INSERT INTO
. -
Partitions maximales – Le nombre maximal de partitions pouvant être utilisées avec
UNLOAD
est 100. -
Fichiers manifestes et métadonnées – Athena génère un fichier de métadonnées et un fichier manifeste de données pour chaque requête
UNLOAD
. Le manifeste suit les fichiers écrits par la requête. Les deux fichiers sont enregistrés dans votre emplacement de résultat de requête Athena dans Simple Storage Service (Amazon S3). Pour de plus amples informations, veuillez consulter Identifier les fichiers de sortie des requêtes. -
Chiffrement – Les fichiers de sortie
UNLOAD
sont chiffrés selon la configuration de chiffrement utilisée pour Simple Storage Service (Amazon S3). Pour configurer la configuration du chiffrement afin de chiffrer votreUNLOAD
résultat, vous pouvez utiliser l'EncryptionConfiguration API. -
Instructions préparées –
UNLOAD
peut être utilisé avec des instructions préparées. Pour plus d'informations sur les instructions préparées dans Athena, voir Utiliser des requêtes paramétrées. -
Quotas de service :
UNLOAD
utilise des quotas de requêtes DML. Pour plus d'informations sur les quotas, voir Service Quotas. -
Propriétaire du compartiment attendu – Le paramètre propriétaire du compartiment attendu ne s'applique pas à l'emplacement de destination de Simple Storage Service (Amazon S3) spécifié dans la requête
UNLOAD
. Le paramètre propriétaire du compartiment attendu s'applique uniquement à l'emplacement de sortie de Simple Storage Service (Amazon S3) que vous spécifiez pour les résultats de la requête Athena. Pour de plus amples informations, veuillez consulter Spécifier l'emplacement des résultats d'une requête à l'aide de la console Athena.
Syntaxe
L'instruction UNLOAD
utilise la syntaxe suivante.
UNLOAD (SELECT col_name
[, ...] FROM old_table
)
TO 's3://amzn-s3-demo-bucket/my_folder
/'
WITH ( property_name
= 'expression
' [, ...] )
Sauf lors de l'écriture sur des partitions, la TO
destination doit spécifier un emplacement dans Amazon S3 qui ne contient aucune donnée. Avant que la requête UNLOAD
n'écrive à l'emplacement spécifié, elle vérifie que l'emplacement du compartiment est vide. Comme UNLOAD
n'écrit pas de données dans l'emplacement spécifié si celui-ci contient déjà des données, UNLOAD
n'écrase pas les données existantes. Pour réutiliser un emplacement de compartiment comme destination pour UNLOAD
, supprimez les données de l'emplacement de compartiment, puis exécutez à nouveau la requête.
Notez qu'en cas d'UNLOAD
écriture sur des partitions, ce comportement est différent. Si vous exécutez plusieurs fois la même UNLOAD
requête avec la même SELECT
instruction, le même TO
emplacement et les mêmes partitions, chaque UNLOAD
requête décharge les données dans Amazon S3 à l'emplacement et aux partitions spécifiés.
Paramètres
Les valeurs possibles pour property_name
sont les suivantes.
- format = «
file_format
» -
Obligatoire. Spécifie le format de fichier de sortie. Les valeurs possibles pour
file_format
sontORC
PARQUET
,AVRO
,JSON
, ouTEXTFILE
. - compression = «
compression_format
» -
Facultatif. Cette option est spécifique aux formats ORC et Parquet. Pour ORC, la valeur par défaut est
zlib
; pour Parquet, la valeur par défaut estgzip
. Pour plus d'informations sur les formats de compression pris en charge, consultez Prise en charge de la compression Athena.Note
Cette option ne s'applique pas au format
AVRO
. Athena utilisegzip
pour les formatsJSON
etTEXTFILE
. - niveau_de compression =
compression_level
-
Facultatif. Le niveau de compression à utiliser pour la compression ZSTD. Cette propriété s’applique uniquement à la compression ZSTD. Pour de plus amples informations, veuillez consulter Utiliser les niveaux de compression ZSTD.
- field_delimiter = « »
delimiter
-
Facultatif. Spécifie un délimiteur de champ à un seul caractère pour les fichiers au format CSV, TSV et autres formats texte. L'exemple suivant spécifie une virgule comme délimiteur.
WITH (field_delimiter = ',')
Actuellement, les délimiteurs de champ à plusieurs caractères ne sont pas pris en charge. Si vous ne spécifiez pas de délimiteur de champ, le caractère octal
\001
(^A) est utilisé. - partitioned_by = TABLEAU [[,...]
col_name
] -
Facultatif. Tableau composé de colonnes à l'aide duquel la sortie est partitionnée.
Note
Dans votre instruction
SELECT
, veillez à ce que les noms des colonnes partitionnées figurent en dernier dans votre liste de colonnes.
Exemples
L'exemple suivant écrit la sortie d'une requête SELECT
à l'emplacement Simple Storage Service (Amazon S3) s3://amzn-s3-demo-bucket/unload_test_1/
en utilisant le format JSON.
UNLOAD (SELECT * FROM old_table)
TO 's3://amzn-s3-demo-bucket/unload_test_1/'
WITH (format = 'JSON')
L'exemple suivant écrit la sortie d'une requête SELECT
au format Parquet en utilisant la compression Snappy.
UNLOAD (SELECT * FROM old_table)
TO 's3://amzn-s3-demo-bucket/'
WITH (format = 'PARQUET',compression = 'SNAPPY')
L'exemple suivant écrit quatre colonnes au format texte, la sortie étant divisée par la dernière colonne.
UNLOAD (SELECT name1, address1, comment1, key1 FROM table1)
TO 's3://amzn-s3-demo-bucket/ partitioned/'
WITH (format = 'TEXTFILE', partitioned_by = ARRAY['key1'])
L’exemple suivant décharge les résultats de la requête vers l’emplacement spécifié à l’aide du format de fichier Parquet, de la compression ZSTD et du niveau de compression ZSTD 4.
UNLOAD (SELECT * FROM old_table)
TO 's3://amzn-s3-demo-bucket/'
WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)
Ressources supplémentaires
-
Simplifier vos pipelines ETL et ML à l'aide de la fonctionnalité Amazon Athena UNLOAD
sur le blog AWS Big Data.