J'ai utilisé un analyseur AWS Glue pour créer une table Amazon Athena à partir d'un fichier .CSV. Lorsque j'interroge la première colonne de la table, je reçois un message d'erreur similaire au suivant : « SYNTAX_ERROR: line 1:9: Column 'column_id' cannot be resolved. »

Cette erreur se produit généralement lorsque votre fichier CSV est codé au format UTF-8 avec une marque d'ordre d'octet (BOM). AWS Glue ne reconnaît pas les BOM et les transforme en points d'interrogation, non reconnus par Amazon Athena.

Pour résoudre l'erreur de syntaxe, supprimez le point d'interrogation dans Athena ou dans AWS Glue.

Les marques d'ordre d'octet sont automatiquement ajoutées au début du nom de la première colonne. Pour voir la marque d'ordre d'octet, ouvrez votre fichier dans un éditeur hexadécimal. Elle doit ressembler à ceci : 

         
1 POSTAL_CODE_START  POSTAL_CODE_START    NM_REGION REGION_CODE
2 69900001 69924999 AC - Capital 15

Lorsque vous exécutez un analyseur AWS Glue sur le fichier, l'analyseur ajoute un point d'interrogation près de la marque d'ordre d'octet. L'analyseur utilisant les en-têtes de colonne en tant que noms de colonne, la première colonne de votre table Athena risque d'avoir un nom tel que ?POSTAL_CODE_START. (Vous pouvez voir le point d'interrogation lorsque vous exécutez SHOW CREATE TABLE.) Dans Athena, les noms de colonne n'acceptent pas de caractères spéciaux autres que le trait de soulignement (_).

Pour supprimer le point d'interrogation dans Athena

  1. Copiez l'instruction DDL de l'analyseur (SHOW CREATE TABLE table_name).
  2. Supprimez le point d'interrogation.
  3. Exécutez l'instruction.
    Remarque : Veillez à inclure 'skip.header.line.count'='1' dans les propriétés de la table.

Pour supprimer le point d'interrogation dans AWS Glue

  1. Ouvrez la console AWS Glue.
  2. Sélectionnez votre table.
  3. Dans le menu déroulant Action, choisissez Afficher les détails.
  4. Choisissez Modifier le schéma.
  5. Sélectionnez la première colonne et renommez-la. Vous pouvez utiliser le même nom pour la colonne, si vous le souhaitez.
    Remarque : Lorsque vous entrez le nom, AWS Glue supprime le point d'interrogation, même si celui-ci peut ne pas apparaître pas sur la console.
  6. Choisissez Enregistrer dans le coin supérieur droit de la page.

Pour configurer AWS Glue de sorte qu'il ne reconstruise pas le schéma de table

Avant d'exécuter de nouveau l'analyseur sur la même table :

  1. Sur la console AWS Glue, choisissez Analyseurs, puis sélectionnez votre analyseur.
  2. Ouvrez le menu déroulant Action, puis choisissez Modifier un analyseur.
  3. Choisissez Sortie.
  4. Développez Options de configuration.
  5. Sélectionnez les options suivantes sous Lorsque l'analyseur détecte des modifications de schéma dans le magasin de données, comment AWS Glue doit-il gérer les mises à jour de table dans le catalogue de données ?
    Ignorez les modifications et ne mettez pas la table à jour dans le catalogue de données.
    Mettez à jour toutes les partitions nouvelles ou existantes à partir des métadonnées de la table.
  6. Sous Comment AWS Glue doit-il gérer les objets supprimés du magasin de données ?, sélectionnez Delete tables and partitions from the data catalog (Supprimer les tables et les partitions du catalogue de données).
  7. Choisissez Suivant, puis Terminer.

Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 07/01/2019