Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Comment ajuster le nombre ou la taille des fichiers lorsque j'exécute une requête CTAS dans Amazon Athena ?
Lorsque j'exécute une requête CREATE TABLE AS SELECT (CTAS) dans Amazon Athena, je souhaite définir le nombre de fichiers ou la quantité de données pour chaque fichier.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Vous pouvez utiliser le compartiment dans une requête CTAS pour contrôler le nombre de fichiers de sortie. Cependant, il se peut que le nombre de fichiers créés ne corresponde pas toujours au nombre de compartiments spécifié. La fonction de compartimentation peut regrouper des données similaires, mais elle ne peut pas contrôler avec précision le nombre de fichiers.
La résolution suivante utilise le jeu de données public du Global Historical Climatology Network Daily, s3://noaa-ghcn-pds/csv.gz/. Pour plus d'informations, consultez la section Visualiser plus de 200 ans de données climatiques mondiales à l'aide d'Amazon Athena et d’Amazon Quick Sight.
Remarque : Dans les exemples de commandes suivants, remplacez les valeurs suivantes par les vôtres :
external_location : Emplacement Amazon Simple Storage Service (Amazon S3) où vous avez enregistré votre requête CTAS.
format : Format souhaité pour la sortie, tel que ORC, PARQUET, AVRO, JSON ou TEXTFILE.
bucket_count : Nombre de compartiments souhaités.
bucketed_by : Champ permettant de hacher et d'enregistrer les données dans le compartiment, par exemple yearmonthday.
Examiner le jeu de données
Pour vérifier le nombre de fichiers et la taille du jeu de données, exécutez la commande ls suivante :
aws s3 ls s3://noaa-ghcn-pds/csv.gz/ --summarize --recursive --human-readable
Remarque : Remplacez s3://noaa-ghcn-pds/csv.gz/ par le chemin de votre compartiment s3.
Exemple de sortie :
2019-11-30 01:58:05 3.3 KiB csv.gz/1763.csv.gz 2019-11-30 01:58:06 3.2 KiB csv.gz/1764.csv.gz 2019-11-30 01:58:06 3.3 KiB csv.gz/1765.csv.gz 2019-11-30 01:58:07 3.3 KiB csv.gz/1766.csv.gz ... 2019-11-30 02:05:43 199.7 MiB csv.gz/2016.csv.gz 2019-11-30 02:05:50 197.7 MiB csv.gz/2017.csv.gz 2019-11-30 02:05:54 197.0 MiB csv.gz/2018.csv.gz 2019-11-30 02:05:57 168.8 MiB csv.gz/2019.csv.gz Total Objects: 257 Total Size: 15.4 GiB
Créer l'environnement
Procédez comme suit :
-
Pour créer une table, exécutez la commande suivante :
CREATE EXTERNAL TABLE historic_climate_gz( id string, yearmonthday int, element string, temperature int, m_flag string, q_flag string, s_flag string, obs_time int) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://noaa-ghcn-pds/csv.gz/' -
Pour tester la table, exécutez la commande suivante :
SELECT * FROM historic_climate_gz LIMIT 10La sortie montre 10 lignes du jeu de données.
Après avoir créé l'environnement, utilisez les méthodes suivantes pour modifier le jeu de données lorsque vous exécutez des requêtes CTAS.
Modifier le nombre de fichiers dans le jeu de données
Il est recommandé de regrouper les données selon une colonne présentant une cardinalité élevée et des valeurs uniformément réparties. Pour plus d'informations, consultez la section Avantages de la compartimentation.
Procédez comme suit :
-
Pour convertir le jeu de données en 20 fichiers, exécutez la commande suivante :
CREATE TABLE "historic_climate_gz_20_files" WITH ( external_location = 's3://awsexamplebucket/historic_climate_gz_20_files/', format = 'TEXTFILE', bucket_count=20, bucketed_by = ARRAY['yearmonthday'] ) AS SELECT * FROM historic_climate_gzRemarque : L'exemple précédent utilise le champ yearmonthday.
-
Pour vérifier que le compartiment contient le nombre de fichiers souhaité, exécutez la commande ls suivante :
aws s3 ls s3://awsexamplebucket/historic_climate_gz_20_files/ --summarize --recursive --human-readableExemple de sortie :
Total Objects: 20 Total Size: 15.6 Gib
Définir la taille approximative de chaque fichier
Procédez comme suit :
-
Déterminez le nombre de compartiments que vous devez utiliser pour atteindre le nombre de fichiers souhaité. Par exemple, pour diviser le jeu de données de 15,4 Go en fichiers de 2 Go, vous devez disposer de 8 fichiers (15,4/2 = 7,7, arrondis à 8).
-
Pour créer une nouvelle table compartimentée, exécutez la commande suivante :
CREATE TABLE "historic_climate_gz_2GB_files" WITH ( external_location = 's3://awsexamplebucket/historic_climate_gz_2GB_file/', format = 'TEXTFILE', bucket_count=8, bucketed_by = ARRAY['yearmonthday']) AS SELECT * FROM historic_climate_gz -
Pour vérifier que le jeu de données contient le nombre de fichiers souhaité, exécutez la commande ls suivante :
aws s3 ls s3://awsexamplebucket/historic_climate_gz_2GB_file/ --summarize --recursive --human-readableExemple de sortie :
2019-09-03 10:59:20 1.7 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00000.gz 2019-09-03 10:59:20 2.0 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00001.gz 2019-09-03 10:59:20 2.0 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00002.gz 2019-09-03 10:59:19 1.9 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00003.gz 2019-09-03 10:59:17 1.7 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00004.gz 2019-09-03 10:59:21 1.9 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00005.gz 2019-09-03 10:59:18 1.9 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00006.gz 2019-09-03 10:59:17 1.9 GiB historic_climate_gz_2GB_file/20190903_085819_00005_bzbtg_bucket-00007.gz Total Objects: 8 Total Size: 15.0 GiB
Convertir le format de données et définir la taille de fichier approximative
Procédez comme suit :
-
Pour convertir les données dans un autre format, exécutez la commande suivante :
CREATE TABLE "historic_climate_parquet" WITH ( external_location = 's3://awsexamplebucket/historic_climate_parquet/', format = 'PARQUET') AS SELECT * FROM historic_climate_gz -
Pour confirmer la taille du jeu de données, exécutez la commande ls suivante :
aws s3 ls s3://awsexamplebucket/historic_climate_parquet/ --summarize --recursive --human-readableExemple de sortie :
Total Objects: 30 Total Size: 9.8 GiB -
Déterminez le nombre de compartiments que vous devez utiliser pour atteindre le nombre de fichiers souhaité. Par exemple, pour des fichiers de 500 Mo et un jeu de données de 9,8 Go, vous devez disposer de 20 fichiers.
-
Pour convertir le jeu de données en fichiers de 500 Mo, exécutez la commande suivante :
CREATE TABLE "historic_climate_parquet_500mb" WITH ( external_location = 's3://awsexamplebucket/historic_climate_parquet_500mb/', format = 'PARQUET', bucket_count=20, bucketed_by = ARRAY['yearmonthday'] ) AS SELECT * FROM historic_climate_parquet -
Pour vérifier que le jeu de données contient le nombre de fichiers souhaité, exécutez la commande ls suivante :
aws s3 ls s3://awsexamplebucket/historic_climate_parquet_500mb/ --summarize --recursive --human-readableExemple de sortie :
2019-09-03 12:01:45 333.9 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00000 2019-09-03 12:01:01 666.7 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00001 2019-09-03 12:01:00 665.6 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00002 2019-09-03 12:01:06 666.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00003 2019-09-03 12:00:59 667.3 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00004 2019-09-03 12:01:27 666.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00005 2019-09-03 12:01:10 666.5 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00006 2019-09-03 12:01:12 668.3 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00007 2019-09-03 12:01:03 666.8 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00008 2019-09-03 12:01:10 646.4 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00009 2019-09-03 12:01:35 639.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00010 2019-09-03 12:00:52 529.5 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00011 2019-09-03 12:01:29 334.2 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00012 2019-09-03 12:01:32 333.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00013 2019-09-03 12:01:34 332.2 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00014 2019-09-03 12:01:44 333.3 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00015 2019-09-03 12:01:51 333.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00016 2019-09-03 12:01:39 333.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00017 2019-09-03 12:01:47 333.0 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00018 2019-09-03 12:01:49 332.3 MiB historic_climate_parquet_500mb/20190903_095742_00001_uipqt_bucket-00019 Total Objects: 20 Total Size: 9.9 GiB
Remarque : Les tables compartimentées ne prennent pas en charge l'instruction INSERT INTO.
Informations connexes
- Sujets
- Analytics
- Balises
- Amazon Athena
- Langue
- Français

Contenus pertinents
- demandé il y a 3 ans
- demandé il y a 8 mois
- demandé il y a 3 ans
- demandé il y a un an
AWS OFFICIELA mis à jour il y a 2 ans
AWS OFFICIELA mis à jour il y a 4 mois