UNLOAD - Amazon Athena

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.

UNLOAD

Écrit les résultats de requête à partir d'une instruction SELECT au format de données spécifié. Les formats pris en charge UNLOAD incluent Apache ParquetORC, Apache Avro etJSON. CSVest 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 queCSV, CTAS les instructions nécessitent la création d'une table dans Athena. L'UNLOADinstruction est utile lorsque vous souhaitez afficher les résultats d'une SELECT requête dans un CSV format non formaté 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 SELECT requête soient au JSON format, et Parquet ORC peut offrir un avantage en termes de performances par rapport à une application CSV si vous avez l'intention d'utiliser les résultats de la SELECT requête 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ête SELECT de l'instruction UNLOAD 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 identique à celui des INSERT INTO instructions for CTAS et.

  • 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 de chiffrement afin de chiffrer votre UNLOAD résultat, vous pouvez utiliser le EncryptionConfiguration API.

  • Instructions préparéesUNLOAD 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 DML requêtes. 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

Valeurs possibles pour property_name sont les suivants.

format = 'file_format'

Obligatoire. Spécifie le format de fichier de sortie. Valeurs possibles pour file_format sontORC, PARQUETAVRO,JSON, ouTEXTFILE.

compression = 'compression_format'

Facultatif. Cette option est spécifique aux formats ORC et Parquet. PourORC, la valeur par défaut estzlib, et 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 utilise gzip pour les formats JSON et TEXTFILE.

niveau_de compression = compression_level

Facultatif. Le niveau de compression à utiliser pour la ZSTD compression. Cette propriété s'applique uniquement à la ZSTD compression. Pour de plus amples informations, veuillez consulter Utiliser les niveaux ZSTD de compression.

field_delimiter = 'delimiter'

Facultatif. Spécifie un délimiteur de champ à caractère unique pour les fichiers au CSV format texteTSV, et autres. 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é.

partitionné_par = [ARRAY 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 le résultat d'une SELECT requête sur le site Amazon S3 s3://amzn-s3-demo-bucket/unload_test_1/ en utilisant le JSON format.

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 à l'emplacement spécifié en utilisant le format de fichier Parquet, la ZSTD compression et le niveau ZSTD de compression 4.

UNLOAD (SELECT * FROM old_table) TO 's3://amzn-s3-demo-bucket/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)

Ressources supplémentaires