Comment stocker la sortie d'une requête Amazon Athena dans un format autre que le CSV, par exemple un format compressé ?

Dernière mise à jour : 20/12/2021

Je souhaite stocker les résultats de requête Amazon Athena dans un format autre que CSV, tel que JSON ou un format compressé.

Solution

Athena prend uniquement en charge les fichiers de sortie CSV. La requête UNLOAD écrit les résultats de requête 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. CSV est le seul format de sortie utilisé par la requête Athena SELECT, mais vous pouvez utiliser la requête UNLOAD pour écrire la sortie d'une requête SELECT dans les formats pris en charge par UNLOAD. Bien que vous puissiez utiliser l'instruction CTAS pour générer des données dans des formats autres que CSV, ces instructions nécessitent également la création d'un tableau dans Athena. L'instruction UNLOAD est utile lorsque vous souhaitez générer les résultats d'une requête SELECT dans un format autre que CSV, mais ne nécessite pas de 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 peuvent offrir un avantage en termes de performances par rapport au format CSV si vous envisager d'utiliser les résultats de la requête SELECT pour une analyse supplémentaire.

Si vous souhaitez stocker les fichiers de sortie de requête dans un autre format, utilisez une requête CREATE TABLE AS SELECT (CTAS) et configurez la propriété de format. Une fois la requête terminée, supprimez la table CTAS. Tenez compte des points suivants :

  • Vous pouvez définir le format sur ORC, PARQUET, AVRO, JSON ou TEXTFILE. Si vous ne précisez pas de format pour la requête CTAS, Athena utilise Parquet par défaut.
  • Le nom du paramètre, le format, doivent être répertorié en minuscules, sinon votre requête CTAS échoue. Pour obtenir un exemple, consultez la section Exemple : Écriture des résultats de requête dans un autre format.
  • Par défaut, toutes les requêtes CTAS utilisent la compression GZIP. Pour Parquet et ORC, vous pouvez utiliser les options parquet_compression et orc_compression pour spécifier d'autres types de compression, tels que SNAPPY. Pour obtenir un exemple, consultez la section Exemple : spécification des formats de stockage et de compression des données.
  • Pour les formats texte, vous pouvez spécifier un field_delimiter comme suit : WITH (field_delimiter = ','). Si vous ne précisez pas de délimiteur de champ, Athena utilise \001 par défaut.
  • Si vous utilisez le paramètre external_location dans la requête CTAS, assurez-vous que l'emplacement Amazon Simple Storage Service (Amazon S3) ne comporte pas de données. Sinon, vous pouvez voir une erreur similaire à celle-ci : « HIVE_PATH_ALREADY_EXISTS: Target directory for table 'table_name' already exists: s3://AWSDOC-EXAMPLE-BUCKET ». Pour plus d'informations sur le paramètre external_location consultez Propriétés de la table CTAS.

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?