Je rencontre des erreurs lorsque j'utilise une table Apache Iceberg avec Amazon Athena.
Résolution
Suivez les étapes de dépannage correspondant à l'erreur que vous rencontrez.
Clé de propriété de table non prise en charge
Cette erreur se produit lorsque la clause TBLPROPERTIES de l’instruction CREATE TABLE ou ALTER TABLE n'utilise pas de propriété de table prise en charge. Lorsque vous créez ou modifiez des tables Iceberg, Athena n'autorise qu'une liste prédéfinie de paires clé-valeur dans les propriétés de la table.
Pour résoudre ce problème, assurez-vous que votre table Iceberg utilise des propriétés de table prises en charge.
Athena ne peut pas générer l'instruction CREATE TABLE car la table comporte des propriétés non prises en charge
Le message d'erreur « UNSUPPORTED » s'affiche lorsqu'Athena ne parvient pas à reproduire la structure de la table car vous avez utilisé l'instruction DDL SHOW CREATE TABLE dans votre requête. Utilisez plutôt l'instruction DESCRIBE FORMATTED pour afficher les propriétés de la table.
L'erreur « TABLE_REDIRECTION_ERROR » s'affiche
Cette erreur se produit avec les requêtes SELECT Athena qui utilisent des métadonnées de table Iceberg non prises en charge. Assurez-vous que votre requête SELECT Athena contient les métadonnées de table Iceberg de requêtes prises en charge.
Le message d'erreur « Unsupported Hive type » s'affiche
Cette erreur se produit lorsque vous utilisez un type de données non pris en charge avec une table Iceberg. Par exemple, vous pouvez recevoir l'erreur « SHORT, use integer » car les tables Iceberg ne prennent pas en charge les types de données tinyint ou smallint. Vous pouvez également recevoir l'erreur « CHAR, use string » car les tables Iceberg ne prennent pas en charge les types de données char Athena.
Pour résoudre ce problème, vérifiez que votre requête Athena utilise un type de données pris en charge pour les tables Iceberg.
L'erreur « ICEBERG_COMMIT_ERROR » s'affiche
Cette erreur peut se produire lorsque plusieurs instructions tentent de modifier le même ensemble de fichiers qui s'exécutent en parallèle lors des mises à jour des tables Iceberg. Par exemple, lorsque plusieurs instructions DELETE sont utilisées en parallèle pour essayer de supprimer le même ensemble d'enregistrements en même temps.
Pour éviter ce problème, procédez comme suit :
- Assurez-vous que les mises à jour des requêtes s'exécutent de manière séquentielle pour éviter tout traitement parallèle des données.
- Implémentez un mécanisme de nouvelle tentative avec backoff exponentiel lorsque vous mettez à jour les tables Iceberg.
Remarque : Athena ne prend en charge que le verrouillage optimiste d'AWS Glue. Lorsque vous modifiez une table Iceberg à l'aide d'autres méthodes de verrouillage, vous risquez de perdre des données et d'interrompre les transactions. Pour plus d'informations, consultez la page Verrouillage optimiste sur le site Web d'Apache Iceberg.
Le message d’erreur « NOT_SUPPORTED: Iceberg table updates require at least format version 2 » s’affiche
Cette erreur se produit lorsque vous tentez l'opération DELETE sur une table Iceberg version 1. Athena crée et fonctionne uniquement sur les tables Iceberg version 2. Assurez-vous que votre table Iceberg utilise le moteur Athena version 2. Si vous utilisez un autre type de moteur, définissez la propriété de table format-version sur 2 pour autoriser les suppressions au niveau des lignes. Par exemple, utilisez la version 2 lorsque vous écrivez une table Iceberg et que vous l'enregistrez dans le catalogue de données AWS Glue. Pour plus d'informations, consultez la page Supprimer des formats sur le site Web d'Apache Iceberg.
Le message d'erreur « GENERIC_INTERNAL_ERROR: » s'affiche
Le message d’erreur suivant s’affiche :
« GENERIC_INTERNAL_ERROR: com.amazonaws.trino.exceptions.UnrecoverableS3OperationException: com.amazonaws.services.s3.model.AmazonS3Exception: The specified key does not exist »
Cette erreur se produit lorsque vous supprimez un fichier de métadonnées, tel qu'une liste de manifestes ou metadata.json. La requête Athena échoue alors. Si vous ne parvenez pas à récupérer le fichier correctement, restaurez la table sous forme d'instantané ou d'horodatage.
Remarque : Vous devez restaurer la table dans un environnement Apache Spark tel qu'AWS Glue ou Amazon EMR, et non dans l'éditeur de requêtes Athena.
Pour restaurer la table à un ID d’instantané spécifique, exécutez la commande roll_to_snapshot Apache Iceberg :
CALL catalog_name.system.rollback_to_snapshot('your-db.your-table', your-snapshot-id)
Remarque : Remplacez your-db, your-table et your-snapshot-id par vos valeurs.
Pour restaurer la table à un horodatage spécifique, exécutez la commande rollback_to_timestamp Apache Iceberg :
CALL catalog_name.system.rollback_to_timestamp('your-db.your-table', TIMESTAMP 'yyyy-mm-dd hh:mm:ss')
Remarque : Remplacez your-db, your-table et yyyy-mm-dd hh:mm:ss par vos valeurs.
Pour plus d'informations, consultez les pages rollback_to_snapshot et rollback_to_timestamp sur le site Web d'Apache Iceberg.
Informations connexes
Résoudre les problèmes liés à Athena
Comment puis-je utiliser Apache Iceberg avec un catalogue de données AWS Glue entre comptes dans Spark ?
Interroger les tables Apache Iceberg