Résolution des problèmes liés aux requêtes dans Amazon Redshift Spectrum - Amazon Redshift

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.

Résolution des problèmes liés aux requêtes dans Amazon Redshift Spectrum

Cette rubrique est une référence pour les problèmes courants que vous pouvez rencontrer avec les requêtes Amazon Redshift Spectrum.

Pour afficher les erreurs générées par les requêtes Redshift Spectrum, interrogez la table système SVL_S3LOG.

Dépassement des nouvelles tentatives

En cas d’expiration d’une requête Amazon Redshift Spectrum, celle-ci est annulée puis soumise à nouveau. Après cinq tentatives, la requête échoue avec l’erreur suivante.

error:  Spectrum Scan Error: Retries exceeded

Les causes possibles sont notamment les suivantes :

  • Fichiers de taille volumineuse (supérieure à 1 Go). Vérifiez la taille de vos fichiers dans Amazon S3 et recherchez les fichiers volumineux et la distorsion de la taille des fichiers. Fractionnez les fichiers volumineux en fichiers plus petits, d’une taille comprise entre 100 Mo et 1 Go. Faites en sorte que les fichiers aient à peu près la même taille.

  • Débit lent du réseau. Réessayez la requête plus tard.

Accès limité

Amazon Redshift Spectrum est soumis aux quotas de service des AWS autres services. En cas d’utilisation élevée, les requêtes Redshift Spectrum peuvent être amenées à ralentir, ce qui entraîne l’erreur suivante.

error:  Spectrum Scan Error: Access throttled

Deux types de limitation peuvent se produire :

  • Accès limité par Amazon S3.

  • Accès limité par. AWS KMS

Le contexte d’erreur fournit plus de détails sur le type de limitation. Vous trouverez ci-dessous les causes et les résolutions possibles pour cette limitation.

Accès limité par Amazon S3

Amazon S3 peut bloquer une demande de Redshift  Spectrum si le taux de demande de lecture sur un préfixe est trop élevé. Pour plus d'informations sur le taux de HEAD requêtesGET/que vous pouvez atteindre dans Amazon S3, consultez le guide de l'utilisateur d'Amazon Simple Storage Service sur l'optimisation des performances d'Amazon S3. Le taux de HEAD requêtesGET/d'Amazon S3 prend en compte toutes les HEAD requêtesGET/d'un préfixe, de sorte que les différentes applications accédant au même préfixe partagent le taux total de demandes.

Si vos demandes Redshift Spectrum sont fréquemment limitées par Amazon S3, réduisez le nombre de GET demandes Amazon S3/HEADque Redshift Spectrum envoie à Amazon S3. Pour ce faire, essayez de fusionner de petits fichiers dans des fichiers plus volumineux. Nous vous recommandons d’utiliser des fichiers de 64 Mo ou plus.

Envisagez également de partitionner vos tables Redshift Spectrum pour bénéficier d’un filtrage précoce et réduire le nombre de fichiers accédés dans Amazon S3. Pour de plus amples informations, consultez Partitionnement des tables externes Redshift Spectrum.

Accès limité par AWS KMS

Si vous stockez vos données dans Amazon S3 à l'aide du chiffrement côté serveur (SSE-S3 ou SSE -KMS), Amazon S3 appelle une API opération AWS KMS pour chaque fichier auquel Redshift Spectrum accède. Ces demandes sont prises en compte dans votre quota d’opérations cryptographiques ; pour de plus amples informations, consultez Quotas de demande AWS KMS. Pour plus d'informations sur SSE -S3 et SSE -KMS, consultez Protection des données à l'aide du chiffrement côté serveur et Protection des données à l'aide du chiffrement côté serveur avec des clés KMS stockées dans le guide de l'utilisateur d' AWS KMSAmazon Simple Storage Service.

La première étape pour réduire le nombre de demandes adressées par Redshift Spectrum AWS KMS consiste à réduire le nombre de fichiers consultés. Pour ce faire, essayez de fusionner de petits fichiers dans des fichiers plus volumineux. Nous vous recommandons d’utiliser des fichiers de 64 Mo ou plus.

Si vos demandes Redshift Spectrum sont fréquemment limitées AWS KMS, envisagez de demander une augmentation du quota pour votre taux de demandes pour les opérations AWS KMS cryptographiques. Pour demander une augmentation de quota, consultez les Limites de service AWS dans le Référence générale d'Amazon Web Services.

Limite de ressource dépassée

Redshift Spectrum applique une limite supérieure à la quantité de mémoire qu’une requête peut utiliser. Une requête Redshift Spectrum qui nécessite plus de mémoire échoue, ce qui entraîne l’erreur suivante.

error:  Spectrum Scan Error: Resource limit exceeded

Il y a deux raisons courantes pour lesquelles une requête Redshift Spectrum peut dépasser sa capacité de mémoire :

  • Redshift Spectrum traite une grande partie de données qui ne peut pas être divisée en sections plus petites.

  • Une étape d’agrégation importante est traitée par Redshift Spectrum.

Nous vous recommandons d’utiliser un format de fichier prenant en charge les lectures parallèles avec des tailles fractionnées de 128 Mo ou moins. Consultez Fichiers de données pour les requêtes dans Amazon Redshift Spectrum pour connaître les formats de fichiers pris en charge et les instructions génériques pour la création de fichiers de données. Lorsque vous utilisez des formats de fichier ou des algorithmes de compression qui ne prennent pas en charge les lectures parallèles, nous vous recommandons de conserver les tailles de fichier entre 64 et 128 Mo.

Aucune ligne retournée pour une table partitionnée

Si votre requête ne retourne aucune ligne depuis une table externe partitionnée, vérifiez si une partition a été ajoutée pour cette table externe. Redshift Spectrum analyse uniquement les fichiers dans un emplacement Amazon S3 qui a été explicitement ajouté à l’aide de l’instruction ALTER TABLE … ADD PARTITION. Pour afficher les partitions existantes, interrogez la vue SVV_EXTERNAL_PARTITIONS. Exécutez ALTER TABLE … ADD PARTITION pour chaque partition manquante.

Erreur Non autorisé

Vérifiez que le IAM rôle du cluster autorise l'accès aux objets du fichier Amazon S3. Si votre base de données externe se trouve sur Amazon Athena, vérifiez que le IAM rôle autorise l'accès aux ressources Athena. Pour de plus amples informations, veuillez consulter IAMpolitiques relatives à Amazon Redshift Spectrum.

Formats de données incompatibles

Dans les fichiers en colonnes (fichiers Apache Parquet par exemple), le type de colonne est incorporé aux données. Le type de colonne indiqué dans la CREATE EXTERNAL TABLE définition doit correspondre au type de colonne du fichier de données. En cas de décalage, vous recevez un message d’erreur similaire au suivant :

File 'https://s3bucket/location/file has an incompatible Parquet schema for column ‘s3://s3bucket/location.col1'. Column type: VARCHAR, Par

Le message d’erreur peut être tronqué en raison de la limite de la longueur du message. Pour récupérer le message d’erreur complet, notamment le nom et le type de colonne, interrogez la vue système SVL_S3LOG.

L'exemple suivant interroge SVL _S3 LOG pour la dernière requête terminée.

select message from svl_s3log where query = pg_last_query_id() order by query,segment,slice;

Voici un exemple de résultat affichant le message d’erreur complet.

                            message
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-
Spectrum Scan Error. File 'https://s3bucket/location/file has an incompatible
Parquet schema for column ' s3bucket/location.col1'. 
Column type: VARCHAR, Parquet schema:\noptional int64 l_orderkey [i:0 d:1 r:0]\n

Pour corriger l’erreur, modifiez la table externe afin qu’elle corresponde au type de colonne du fichier Parquet.

Erreur de syntaxe lors de l'utilisation de Hive DDL dans Amazon Redshift

Amazon Redshift prend en charge le langage de définition des données (DDL), CREATE EXTERNAL TABLE qui est similaire à Hive. DDL Cependant, les deux types DDL ne sont pas toujours exactement les mêmes. Si vous copiez Hive DDL pour créer ou modifier des tables externes Amazon Redshift, vous risquez de rencontrer des erreurs de syntaxe. Voici des exemples de différences entre Amazon Redshift et Hive : DDL

  • Amazon Redshift nécessite des guillemets simples (') alors que Hive DDL accepte les guillemets doubles («).

  • Amazon Redshift ne prend pas en charge ce type de STRING données. Utilisez VARCHAR à la place.

Autorisation de créer des tables temporaires

Pour exécuter des requêtes Redshift Spectrum, l’utilisateur de la base de données doit avoir l’autorisation d’y créer des tables temporaires. L’exemple suivant accorde une autorisation temporaire concernant la base de données spectrumdb au groupe d’utilisateurs spectrumusers.

grant temp on database spectrumdb to group spectrumusers;

Pour de plus amples informations, veuillez consulter GRANT.

Plage non valide

Redshift Spectrum s’attend à ce que les fichiers dans Amazon S3 appartenant à une table externe ne soient pas écrasés pendant une requête. Dans cela se produit, cela peut entraîner l’erreur suivante.

Error: HTTP response error code: 416 Message: InvalidRange The requested range is not satisfiable

Pour éviter cette erreur, vérifiez que les fichiers Amazon S3 ne sont pas écrasés lorsqu’ils sont interrogés avec Redshift Spectrum.

Numéro de version Parquet non valide

Redshift Spectrum vérifie les métadonnées de chaque fichier Apache Parquet auquel il accède. Si la vérification échoue, cela peut entraîner une erreur semblable à celle-ci :

File 'https://s3.region.amazonaws.com/s3bucket/location/file has an invalid version number

Deux raisons courantes peuvent provoquer l’échec de la vérification :

  • Le fichier Parquet a été écrasé pendant la requête (consultez Plage non valide ).

  • Le fichier Parquet est corrompu.