Résoudre les problèmes de transfert de données

Cette page explique comment résoudre les problèmes liés au transfert ou au chargement de données dans BigQuery. Vous pouvez résoudre les erreurs courantes liées au service de transfert de données BigQuery, aux connexions réseau sur Google Cloud, aux réseaux Amazon Web Services (AWS), Cloud SQL et de cloud privé virtuel (VPC), ainsi qu'aux jobs de chargement de données CSV depuis Cloud Storage.

Résoudre les problèmes liés aux configurations de transfert

Pour savoir comment résoudre les problèmes liés au service de transfert de données BigQuery, consultez Résoudre les problèmes de configuration des transferts.

Si vous configurez ou exécutez des transferts à partir de sources de données externes ou partenaires, consultez Résoudre les problèmes de configuration d'un transfert tiers.

Diagnostiquer les jobs avec les vues INFORMATION_SCHEMA

Vous pouvez interroger la vue INFORMATION_SCHEMA.JOBS pour diagnostiquer les échecs ou la lenteur des jobs de chargement et des requêtes de transfert en temps quasi réel. Lorsqu'une tâche de chargement ou une requête de transfert échoue, examinez les colonnes error_result et errors pour identifier la cause première, comme des incompatibilités de schéma, des limites de quota ou des erreurs d'autorisation.

L'exemple suivant interroge INFORMATION_SCHEMA.JOBS pour récupérer les détails des erreurs des jobs de chargement ayant échoué au cours des dernières 24 heures :

SELECT
  job_id,
  creation_time,
  user_email,
  error_result.reason AS error_reason,
  error_result.message AS error_message,
  errors
FROM
  `region-REGION`.INFORMATION_SCHEMA.JOBS
WHERE
  job_type = 'LOAD'
  AND state = 'DONE'
  AND error_result IS NOT NULL
  AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
ORDER BY
  creation_time DESC;

Remplacez <var>REGION</var> par le nom de la région de l'ensemble de données, par exemple us ou europe-west1.

Résoudre les problèmes de connexion réseau pour les transferts

Lorsque vous transférez des données depuis des fournisseurs de cloud externes ou des instances de bases de données privées, le routage réseau ou les règles de pare-feu peuvent bloquer la connectivité. Utilisez les sections suivantes pour résoudre les problèmes liés aux pièces jointes VPN et aux connexions réseau privées.

AWS-Google Cloud VPN et rattachements réseau

Si vous rencontrez des problèmes lors de la configuration de votre rattachement de réseau, procédez comme suit :

  • Assurez-vous que les connexions VPN sont opérationnelles dans la console AWS et dans la console Google Cloud .
  • Recherchez les erreurs ou les paquets abandonnés dans les journaux du VPN.
  • Vérifiez que les tables de routage dans AWS etGoogle Cloud sont correctement configurées.
  • Assurez-vous que les ports nécessaires sont ouverts à la fois dans les groupes de sécurité AWS et dans les règles de pare-feu Google Cloud .

Pour en savoir plus sur la configuration des rattachements VPN, consultez Créer un rattachement de réseau et un VPN AWS-Google Cloud .

Accès aux instances Cloud SQL

Si vous rencontrez des problèmes pour configurer votre réseau, procédez comme suit :

  • Assurez-vous que l'appairage VPC est établi et que les routes sont correctement configurées.
  • Vérifiez que les règles de pare-feu autorisent le trafic sur les ports requis.
  • Consultez les journaux du proxy Cloud SQL pour détecter les erreurs et assurez-vous qu'il fonctionne correctement.
  • Assurez-vous que le rattachement de réseau est correctement configuré et connecté.

Pour en savoir plus sur la configuration de l'accès privé aux bases de données, consultez Se connecter à une instance Cloud SQL.

Résoudre les problèmes de chargement de fichiers CSV

Lorsque vous chargez des données CSV depuis Cloud Storage dans BigQuery, les jobs peuvent échouer en raison d'erreurs de mise en forme, de limites de taille de fichier ou de problèmes de détection automatique du schéma. Utilisez les sections suivantes pour résoudre les erreurs courantes de chargement de fichiers CSV.

Résoudre les erreurs d'analyse

En cas de problème d'analyse de vos fichiers CSV, la ressource errors du job de chargement est renseignée avec les détails de l'erreur.

En règle générale, ces erreurs identifient le début de la ligne problématique avec un décalage d'octets. Pour les fichiers non compressés, vous pouvez utiliser gcloud storage avec l'argument --recursive pour accéder à la ligne concernée.

Par exemple, vous exécutez la commande bq load et recevez une erreur :

bq load
    --skip_leading_rows=1 \
    --source_format=CSV \
    mydataset.mytable \
    gs://my-bucket/mytable.csv \
    'Number:INTEGER,Name:STRING,TookOffice:STRING,LeftOffice:STRING,Party:STRING'

L'erreur affichée dans le résultat est semblable à celle-ci :

Waiting on bqjob_r5268069f5f49c9bf_0000018632e903d7_1 ... (0s)
Current status: DONE
BigQuery error in load operation: Error processing job
'myproject:bqjob_r5268069f5f49c9bf_0000018632e903d7_1': Error while reading
data, error message: Error detected while parsing row starting at position: 1405.
Error: Data between close quote character (") and field separator.
File: gs://my-bucket/mytable.csv
Failure details:
- gs://my-bucket/mytable.csv: Error while reading data,
error message: Error detected while parsing row starting at
position: 1405. Error: Data between close quote character (") and
field separator. File: gs://my-bucket/mytable.csv
- Error while reading data, error message: CSV processing encountered
too many errors, giving up. Rows: 22; errors: 1; max bad: 0; error
percent: 0

D'après l'erreur précédente, le fichier comporte une erreur de format. Pour afficher le contenu du fichier, exécutez la commande gcloud storage cat :

gcloud storage cat 1405-1505 gs://my-bucket/mytable.csv --recursive

Le résultat ressemble à ce qui suit :

16,Abraham Lincoln,"March 4, 1861","April 15, "1865,Republican
18,Ulysses S. Grant,"March 4, 1869",
...

D'après le résultat du fichier, le problème est une guillemet mal placée dans "April 15, "1865.

Fichiers CSV compressés

Le débogage des erreurs d'analyse est plus difficile pour les fichiers CSV compressés, car le décalage d'octets signalé fait référence à l'emplacement dans le fichier non compressé. La commande gcloud storage cat suivante diffuse le fichier à partir de Cloud Storage, décompresse le fichier, identifie le décalage d'octets approprié et imprime la ligne avec l'erreur de format :

gcloud storage cat gs://my-bucket/mytable.csv.gz | gunzip - | tail -c +1406 | head -n 1

Le résultat ressemble à ce qui suit :

16,Abraham Lincoln,"March 4, 1861","April 15, "1865,Republican

Résoudre les erreurs de quota

Utilisez les informations de cette section pour résoudre les erreurs de quota ou de limite liées au chargement de fichiers CSV dans BigQuery.

Si vous chargez un fichier CSV volumineux à l'aide de la commande bq load avec l'option --allow_quoted_newlines, cette erreur peut se produire.

Message d'erreur

Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...

Solution

Pour résoudre cette erreur de quota, procédez comme suit :

  • Définissez l'indicateur --allow_quoted_newlines sur false.
  • Scindez le fichier CSV en fragments plus petits de moins de 4 Go chacun.

Pour en savoir plus sur les limites qui s'appliquent lorsque vous chargez des données dans BigQuery, consultez la section Tâches de chargement.

Résoudre les problèmes liés à la détection automatique de schéma

Lorsque vous détectez automatiquement le schéma des fichiers CSV, vous pouvez rencontrer l'erreur suivante :

Erreur : Error while reading data, error message: CSV processing encountered too many errors, giving up.

Cette erreur peut se produire lorsque votre fichier CSV comporte une ligne d'en-tête avec des valeurs de chaîne, et que BigQuery ne l'a pas détectée comme en-tête. Vous pouvez utiliser l'option --skip_leading_rows pour ignorer la ligne d'en-tête.