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.
Conversion de chaînes d’ID de version vides dans les rapports d’inventaire Amazon S3 en chaînes null
Note
La procédure suivante s’applique uniquement aux rapports d’inventaire Amazon S3 qui incluent toutes les versions, et uniquement si les rapports « toutes les versions » sont utilisés comme manifestes pour S3 Batch Operations sur des compartiments sur lesquels la gestion des versions S3 est activée. Il n’est pas nécessaire de convertir des chaînes pour les rapports d’inventaire S3 qui spécifient uniquement la version actuelle.
Vous pouvez utiliser les rapports d’inventaire S3 en tant que manifestes pour S3 Batch Operations. Toutefois, si la gestion des versions S3 est activée sur un compartiment, les rapports d’inventaire S3 qui incluent toutes les versions marquent tous les objets versionnés NULL avec des chaînes vides dans le champ d’ID de version. Lorsqu'un rapport d'inventaire inclut toutes les versions de l'objet IDs, Batch Operations reconnaît null
les chaînes comme des versions IDs, mais pas les chaînes vides.
Si une tâche S3 Batch Operations utilise un rapport d’inventaire S3 « toutes les versions » comme manifeste, il échoue toutes les tâches sur les objets dont la chaîne est vide dans le champ d’ID de version. Pour convertir des chaînes vides dans le champ d’ID de version du rapport d’inventaire S3 en chaînes null
pour Batch Operations, suivez la procédure suivante.
Mise à jour d’un rapport d’inventaire Amazon S3 pour l’utiliser avec Batch Operations
Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/s3/
. -
Accédez à votre rapport d’inventaire S3. Le rapport d’inventaire se trouve dans le compartiment de destination que vous avez spécifié lors de la configuration de votre rapport d’inventaire. Pour de plus amples informations sur la manière de trouver les rapports d’inventaire, consultez Localisation de votre liste d’inventaire.
-
Choisissez le compartiment de destination.
-
Choisissez le dossier. Le dossier porte le nom du compartiment source d’origine.
-
Choisissez le dossier nommé d’après la configuration d’inventaire.
-
Cochez la case en regard du dossier nommé hive. En haut de la page, choisissez Copy S3 URI (Copier l’URI S3) pour copier l’URI S3 du dossier.
-
-
Ouvrez la console Amazon Athena à l'adresse. https://console.aws.amazon.com/athena/
-
Dans l’éditeur de requête, choisissez Settings (Paramètres), puis Manage (Gérer). Sur la page Manage settings (Gérer les paramètres), pour Location of query result (Emplacement des résultats de la requête), choisissez un compartiment S3 dans lequel stocker les résultats de votre requête.
-
Dans l’éditeur de requête, créez une table Athena pour contenir les données du rapport d’inventaire à l’aide de la commande suivante. Remplacez
par un nom de votre choix, et dans la clausetable_name
LOCATION
, insérez l’URI S3 que vous avez copié précédemment. Choisissez ensuite Run (Exécuter) pour exécuter la requête.CREATE EXTERNAL TABLE
table_name
(bucket string, key string, version_id string) PARTITIONED BY (dt string)ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' LOCATION 'Copied S3 URI
'; -
Pour effacer l’éditeur de requête, cliquez sur Clear (Effacer). Ensuite, chargez le rapport d’inventaire dans la table à l’aide de la commande suivante. Remplacez
par le nom que vous avez choisi lors de l’étape précédente. Choisissez ensuite Run (Exécuter) pour exécuter la requête.table_name
MSCK REPAIR TABLE
table_name
; -
Pour effacer l’éditeur de requête, cliquez sur Clear (Effacer). Exécutez la
SELECT
requête suivante pour récupérer toutes les entrées du rapport d'inventaire d'origine et remplacez toute version vide par IDs desnull
chaînes. Remplacez
par le nom que vous avez choisi précédemment, et remplaceztable_name
dans la clauseYYYY-MM-DD-HH-MM
WHERE
par la date du rapport d’inventaire à laquelle vous souhaitez que cet outil soit exécuté. Choisissez ensuite Run (Exécuter) pour exécuter la requête.SELECT bucket as Bucket, key as Key, CASE WHEN version_id = '' THEN 'null' ELSE version_id END as VersionId FROM
table_name
WHERE dt = 'YYYY-MM-DD-HH-MM
'; -
Retournez à la console Amazon S3 (https://console.aws.amazon.com/s3/
) et accédez au compartiment S3 que vous avez choisi pour Emplacement du résultat de la requête plus tôt. Il devrait contenir une série de dossiers se terminant par la date. Par exemple, vous devriez voir quelque chose comme s3 ://
/amzn-s3-demo-bucket
query-result-location
/Unsaved/2021/10/07/. Vous devriez voir des fichiers.csv
contenant les résultats de la requêteSELECT
que vous avez exécutée.Choisissez le fichier CSV avec la date de modification la plus récente. Téléchargez ce fichier sur votre ordinateur local pour la prochaine étape.
-
Le fichier CSV généré contient une ligne d’en-tête. Pour utiliser ce fichier CSV en tant qu’entrée pour une tâche S3 Batch Operations, vous devez supprimer la ligne d’en-tête, car Batch Operations ne prend pas en charge les lignes d’en-tête sur les manifestes CSV.
Pour supprimer la ligne d’en-tête, vous pouvez exécuter l’une des commandes suivantes sur le fichier. Remplacez
par le nom de votre fichier CSV.file.csv
Pour les machines macOS et Linux, exécutez la commande
tail
dans une fenêtre Terminal.tail -n +2
file.csv
> tmp.csv && mv tmp.csvfile.csv
Pour les machines Windows, exécutez le script suivant dans une PowerShell fenêtre Windows. Remplacez
par le chemin de votre fichier etFile-location
par le nom du fichier.file.csv
$ins = New-Object System.IO.StreamReader
File-location
\file.csv
$outs = New-Object System.IO.StreamWriterFile-location
\temp.csv try { $skip = 0 while ( !$ins.EndOfStream ) { $line = $ins.ReadLine(); if ( $skip -ne 0 ) { $outs.WriteLine($line); } else { $skip = 1 } } } finally { $outs.Close(); $ins.Close(); } Move-ItemFile-location
\temp.csvFile-location
\file.csv
-Force -
Après avoir supprimé la ligne d’en-tête du fichier CSV, vous êtes prêt à utiliser ce dernier comme manifeste dans une tâche S3 Batch Operations. Chargez le fichier CSV dans un compartiment S3 ou un emplacement de votre choix, puis créez une tâche Batch Operations en utilisant le fichier CSV comme manifeste.
Pour de plus amples informations sur la création d’une tâche Batch Operations, consultez Création d’une tâche d’opérations par lot S3.