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 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 CTAS pour produire des données dans des formats autres que CSV, ces instructions nécessitent également la création d'une table dans Athena. L'instruction UNLOAD est utile lorsque vous voulez produire les résultats d'une requête SELECT dans un format non CSV, mais que vous n'avez pas besoin de 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ê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 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 plus d’informations, consultez Identification des fichiers de sortie de requête.

  • 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 votre UNLOAD résultat, vous pouvez utiliser l'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 Utilisation de requêtes paramétrées.

  • Service Quotas – UNLOAD utilise des quotas de requête 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 plus d’informations, consultez Spécification d'un emplacement de résultats de 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://DOC-EXAMPLE-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 sont ORC, PARQUET, AVRO, JSON ou TEXTFILE.

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 est gzip. 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.

compression_level = compression_level

Facultatif. Le niveau de compression à utiliser pour la compression ZSTD. Cette propriété s’applique uniquement à la compression ZSTD. Pour plus d’informations, consultez Utilisation des niveaux de compression ZSTD dans Athena.

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 = 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 la sortie d'une requête SELECT à l'emplacement Simple Storage Service (Amazon S3) s3://DOC-EXAMPLE-BUCKET/unload_test_1/ en utilisant le format JSON.

UNLOAD (SELECT * FROM old_table) TO 's3://DOC-EXAMPLE-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://DOC-EXAMPLE-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://DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET/' WITH (format = 'PARQUET', compression = 'ZSTD', compression_level = 4)

Ressources supplémentaires