Dépannage et débogage

Cette page fournit des conseils de dépannage et des stratégies de débogage susceptibles de vous être utiles si vous rencontrez des problèmes pour créer ou exécuter votre pipeline Cloud Dataflow. Ces informations peuvent vous aider à détecter une défaillance dans un pipeline, à déterminer la raison de l'échec de son exécution et à identifier les mesures correctives possibles.

Dans la mesure où Cloud Dataflow vous fournit des informations en temps réel sur votre tâche, les premières mesures de routine consisteront à vérifier les messages d'erreur, à examiner les journaux et à détecter des problèmes éventuels tels que le blocage de la progression de votre tâche.

Pour plus d'informations sur les erreurs courantes que vous êtes susceptible de rencontrer lors de l'exécution de votre tâche Cloud Dataflow, consultez la page Guidage d'erreur commun.

Vérifier l'état de votre pipeline

Vous pouvez détecter les erreurs d'exécution éventuelles de votre pipeline à l'aide de l'interface de surveillance de Cloud Dataflow.

  1. Accédez à la console Google Cloud Platform.
  2. Sélectionnez votre projet Google Cloud Platform (GCP) dans la liste des projets.
  3. Cliquez sur le menu dans le coin supérieur gauche.
  4. Accédez à la section Big Data et cliquez sur Dataflow. La liste des tâches en cours apparaît dans le volet de droite.
  5. Sélectionnez la tâche de pipeline à afficher. La colonne Status (État) vous permet de voir l'état de chaque tâche d'un seul coup d'œil : "Running" (En cours d'exécution), "Succeeded" (Réussie) ou "Failed" (Échec).
Figure 1 : Liste de tâches Cloud Dataflow dans Developers Console, présentant des tâches dans les états "Running" (En cours d'exécution), "Succeeded" (Réussie) et "Failed" (Échec).

Procédure de base pour résoudre un problème

Si l'une de vos tâches de pipeline échoue, vous pouvez sélectionner cette tâche pour afficher des informations plus détaillées sur les erreurs et sur les résultats de l'exécution. En sélectionnant une tâche, vous affichez son graphique d'exécution, ainsi qu'un ensemble d'informations sur cette tâche présentées dans le volet Job summary (Résumé de la tâche), à droite du graphique. Pendant l'exécution, le haut de la page présente un bouton permettant d'afficher les journaux, ainsi que des indicateurs signalant si la tâche a généré des erreurs ou des avertissements.

Figure 2: Résumé d'une tâche Cloud Dataflow avec indicateur signalant les erreurs générées.

Vérifier les messages d'erreur liés à la tâche

Vous pouvez cliquer sur le bouton Logs (Journaux) pour afficher les messages de journal générés par le code de votre pipeline et par le service Cloud Dataflow. Vous avez la possibilité de filtrer les messages qui apparaissent dans le panneau des journaux à l'aide du sélecteur de niveau de gravité minimal. Sélectionnez le filtre Error (Erreur) pour afficher uniquement les messages d'erreur.

Pour développer un message d'erreur, cliquez sur l'icône en forme de triangle située à côté de celui-ci.

Figure 3 : Liste des messages d'erreur relatifs à une tâche Cloud Dataflow, avec un message développé.

Afficher les journaux d'étape correspondant à votre tâche

Lorsque vous sélectionnez une étape dans le graphique de votre pipeline, le panneau des journaux passe de l'affichage des journaux relatifs à la tâche générés par le service Cloud Dataflow à l'affichage des journaux relatifs aux instances Compute Engine exécutant l'étape sélectionnée du pipeline.

Figure 4 : Bouton donnant accès à Cloud Logging depuis le résumé d'une tâche Cloud Dataflow.

Stackdriver Logging combine dans un même emplacement tous les journaux collectés à partir des instances Compute Engine de votre projet. Reportez-vous à la section Enregistrer les messages de pipeline pour plus d'informations sur l'utilisation des différentes fonctionnalités de journalisation de Cloud Dataflow.

Traiter un rejet de pipeline automatisé

Dans certains cas, le service Cloud Dataflow détermine que votre pipeline est susceptible de provoquer des problèmes connus liés au SDK. Pour éviter la soumission de pipelines susceptibles de rencontrer des problèmes, Cloud Dataflow rejette automatiquement votre pipeline en affichant le message suivant :

The workflow was automatically rejected by the service because it may trigger an
identified bug in the SDK (details below). If you think this identification is
in error, and would like to override this automated rejection, please re-submit
this workflow with the following override flag: [OVERRIDE FLAG].
Bug details: [BUG DETAILS].
Contact Google Cloud Support for further help.
Please use this identifier in your communication: [BUG ID].

Si, après avoir pris connaissance des mises en garde formulées dans les détails du bug fournis en lien, vous souhaitez tout de même tenter d'exécuter votre pipeline, vous avez la possibilité d'annuler ce rejet automatique. Ajoutez l'indicateur --experiments=<override-flag> et soumettez à nouveau votre pipeline.

Déterminer la cause de l'échec d'un pipeline

L'échec de l'exécution d'un pipeline Apache Beam est généralement dû à l'une des causes suivantes :

  • Erreurs liées à la construction du graphique ou du pipeline. De telles erreurs se produisent lorsque Cloud Dataflow rencontre un problème à la construction du graphique des étapes qui composent votre pipeline, comme décrit par votre pipeline Apache Beam.
  • Erreurs liées à la validation de la tâche. Le service CloudDataflow valide toutes les tâches que vous lancez. Des erreurs liées à ce processus de validation peuvent empêcher la création ou l'exécution de votre tâche. Les erreurs de validation peuvent résulter de problèmes liés au bucket Cloud Storage de votre projet GCP ou aux autorisations accordées à ce projet.
  • Exceptions dans le code destiné aux nœuds de calcul. Ces erreurs résultent de la présence d'anomalies ou de bugs dans le code fourni par l'utilisateur et que Cloud Dataflow distribue aux nœuds de calcul en parallèle – par exemple, dans les instances DoFn d'une transformation ParDo.
  • Pipelines à exécution ralentie ou absence de sortie. Si votre pipeline fonctionne lentement ou s'il s'exécute pendant une longue période sans générer de résultats, il convient de vérifier vos quotas de sources et de récepteurs de données en flux, en particulier pour Cloud Pub/Sub. Notez également que certaines transformations sont mieux adaptées que d'autres aux pipelines traitant de grands volumes de données en flux.
  • Erreurs causées par des défaillances transitoires dans d'autres services GCP. Votre pipeline peut échouer en raison d'une panne ou d'un autre problème temporaire survenu dans l'un des services GCP dont dépend Cloud Dataflow, tels que Compute Engine ou Cloud Storage.

Détecter les erreurs de construction d'un graphique ou d'un pipeline

Une erreur de construction de graphique peut survenir lorsque Cloud Dataflow crée le graphique d'exécution de votre pipeline à partir du code de votre programme Cloud Dataflow. Durant la construction du graphique, Cloud Dataflow vérifie la validité des opérations spécifiées.

Si Cloud Dataflow détecte une erreur dans la construction du graphique, gardez à l'esprit qu'aucune tâche ne sera créée sur le service Cloud Dataflow. Par conséquent, vous ne verrez aucun retour dans l'interface de surveillance de Cloud Dataflow. Au lieu de cela, vous verrez un message d'erreur semblable au suivant dans la fenêtre de la console ou du terminal sur lequel vous avez exécuté votre pipeline Apache Beam :

Java : SDK 2.x

Par exemple, si votre pipeline tente d'effectuer une opération d'agrégation comme GroupByKey sur une collection PCollection illimitée soumise à un fenêtrage global et dépourvue de déclencheur, un message d'erreur semblable à celui-ci s'affiche :

...
... Exception in thread "main" java.lang.IllegalStateException:
... GroupByKey cannot be applied to non-bounded PCollection in the GlobalWindow without a trigger.
... Use a Window.into or Window.triggering transform prior to GroupByKey
...

Python

Par exemple, si votre pipeline utilise des indicateurs de type et qu'un argument de l'une des transformations n'est pas du type attendu, un message d'erreur semblable à celui-ci s'affiche :

... in <module> run()
... in run | beam.Map('count', lambda (word, ones): (word, sum(ones))))
... in __or__ return self.pipeline.apply(ptransform, self)
... in apply transform.type_check_inputs(pvalueish)
... in type_check_inputs self.type_check_inputs_or_outputs(pvalueish, 'input')
... in type_check_inputs_or_outputs pvalue_.element_type))
google.cloud.dataflow.typehints.decorators.TypeCheckError: Input type hint violation at group: expected Tuple[TypeVariable[K], TypeVariable[V]], got <type 'str'>

Java : SDK 1.x

Par exemple, si votre pipeline tente d'effectuer une opération d'agrégation comme GroupByKey sur une collection PCollection illimitée soumise à un fenêtrage global et dépourvue de déclencheur, un message d'erreur semblable à celui-ci s'affiche :

...
... Exception in thread "main" java.lang.IllegalStateException:
... GroupByKey cannot be applied to non-bounded PCollection in the GlobalWindow without a trigger.
... Use a Window.into or Window.triggering transform prior to GroupByKey
...

Si vous rencontrez une telle erreur, vérifiez le code de votre pipeline pour vous assurer que les opérations qu'il contient sont valides.

Détecter des erreurs dans la validation d'une tâche Cloud Dataflow

Une fois que le service Cloud Dataflow a reçu le graphique de votre pipeline, il tente de valider votre tâche. Cette validation comprend les éléments suivants :

  • Vérification de l'accès par le service aux buckets Cloud Storage associés à votre tâche pour les fichiers temporaires et les sorties intermédiaires
  • Vérification des autorisations requises dans votre projet GCP
  • Vérification de l'accès par le service aux sources d'entrée et de sortie (telles que les fichiers)

Si votre tâche échoue au cours du processus de validation, un message d'erreur apparaît dans l'interface de surveillance de Cloud Dataflow, ainsi que dans la fenêtre de votre console ou de votre terminal si vous avez opté pour une exécution bloquante. Le message d'erreur ressemblera à celui-ci :

Java : SDK 2.x

INFO: To access the Cloud Dataflow monitoring console, please navigate to
  https://console.developers.google.com/project/google.com%3Aclouddfe/dataflow/job/2016-03-08_18_59_25-16868399470801620798
Submitted job: 2016-03-08_18_59_25-16868399470801620798
...
... Starting 3 workers...
... Executing operation BigQuery-Read+AnonymousParDo+BigQuery-Write
... Executing BigQuery import job "dataflow_job_16868399470801619475".
... Stopping worker pool...
... Workflow failed. Causes: ...BigQuery-Read+AnonymousParDo+BigQuery-Write failed.
Causes: ... BigQuery getting table "non_existent_table" from dataset "cws_demo" in project "my_project" failed.
Message: Not found: Table x:cws_demo.non_existent_table HTTP Code: 404
... Worker pool stopped.
... com.google.cloud.dataflow.sdk.runners.BlockingDataflowPipelineRunner run
INFO: Job finished with status FAILED
Exception in thread "main" com.google.cloud.dataflow.sdk.runners.DataflowJobExecutionException:
  Job 2016-03-08_18_59_25-16868399470801620798 failed with status FAILED
    at com.google.cloud.dataflow.sdk.runners.DataflowRunner.run(DataflowRunner.java:155)
    at com.google.cloud.dataflow.sdk.runners.DataflowRunner.run(DataflowRunner.java:56)
    at com.google.cloud.dataflow.sdk.Pipeline.run(Pipeline.java:180)
    at com.google.cloud.dataflow.integration.BigQueryCopyTableExample.main(BigQueryCopyTableExample.java:74)

Python

INFO:root:Created job with id: [2016-03-08_14_12_01-2117248033993412477]
... Checking required Cloud APIs are enabled.
... Job 2016-03-08_14_12_01-2117248033993412477 is in state JOB_STATE_RUNNING.
... Combiner lifting skipped for step group: GroupByKey not followed by a combiner.
... Expanding GroupByKey operations into optimizable parts.
... Lifting ValueCombiningMappingFns into MergeBucketsMappingFns
... Annotating graph with Autotuner information.
... Fusing adjacent ParDo, Read, Write, and Flatten operations
... Fusing consumer split into read
...
... Starting 1 workers...
...
... Executing operation read+split+pair_with_one+group/Reify+group/Write
... Executing failure step failure14
... Workflow failed.
Causes: ... read+split+pair_with_one+group/Reify+group/Write failed.
Causes: ... Unable to view metadata for files: gs://dataflow-samples/shakespeare/missing.txt.
... Cleaning up.
... Tearing down pending resources...
INFO:root:Job 2016-03-08_14_12_01-2117248033993412477 is in state JOB_STATE_FAILED.

Java : SDK 1.x

INFO: To access the Cloud Dataflow monitoring console, please navigate to
  https://console.developers.google.com/project/google.com%3Aclouddfe/dataflow/job/2016-03-08_18_59_25-16868399470801620798
Submitted job: 2016-03-08_18_59_25-16868399470801620798
...
... Starting 3 workers...
... Executing operation BigQuery-Read+AnonymousParDo+BigQuery-Write
... Executing BigQuery import job "dataflow_job_16868399470801619475".
... Stopping worker pool...
... Workflow failed. Causes: ...BigQuery-Read+AnonymousParDo+BigQuery-Write failed.
Causes: ... BigQuery getting table "non_existent_table" from dataset "cws_demo" in project "x" failed.
Message: Not found: Table x:cws_demo.non_existent_table HTTP Code: 404
... Worker pool stopped.
... com.google.cloud.dataflow.sdk.runners.BlockingDataflowPipelineRunner run
INFO: Job finished with status FAILED
Exception in thread "main" com.google.cloud.dataflow.sdk.runners.DataflowJobExecutionException:
  Job 2016-03-08_18_59_25-16868399470801620798 failed with status FAILED
    at com.google.cloud.dataflow.sdk.runners.BlockingDataflowPipelineRunner.run(BlockingDataflowPipelineRunner.java:155)
    at com.google.cloud.dataflow.sdk.runners.BlockingDataflowPipelineRunner.run(BlockingDataflowPipelineRunner.java:56)
    at com.google.cloud.dataflow.sdk.Pipeline.run(Pipeline.java:180)
    at com.google.cloud.dataflow.integration.BigQueryCopyTableExample.main(BigQueryCopyTableExample.java:74)

Détecter une exception dans le code distribué aux nœuds de calcul

Durant l'exécution de votre tâche, vous pouvez rencontrer des erreurs ou des exceptions liées au code distribué aux nœuds de calcul. Ces erreurs signifient généralement que les DoFn du code de votre pipeline ont généré des exceptions non gérées, ce qui entraîne l'échec de sous-tâches dans votre tâche Cloud Dataflow.

Les exceptions détectées dans le code utilisateur (par exemple, vos instances DoFn) sont visibles dans l'interface de surveillance de Cloud Dataflow. Si vous avez spécifié l'exécution bloquante pour votre pipeline, des messages d'erreur tels que ceux-ci s'afficheront également dans la fenêtre de votre console ou de votre terminal :

Java : SDK 2.x

INFO: To access the Cloud Dataflow monitoring console, please navigate to https://console.developers.google.com/project/example_project/dataflow/job/2017-05-23_14_02_46-1117850763061203461
Submitted job: 2017-05-23_14_02_46-1117850763061203461
...
... To cancel the job using the 'gcloud' tool, run: gcloud beta dataflow jobs --project=example_project cancel 2017-05-23_14_02_46-1117850763061203461
... Autoscaling is enabled for job 2017-05-23_14_02_46-1117850763061203461.
... The number of workers will be between 1 and 15.
... Autoscaling was automatically enabled for job 2017-05-23_14_02_46-1117850763061203461.
...
... Executing operation BigQueryIO.Write/BatchLoads/Create/Read(CreateSource)+BigQueryIO.Write/BatchLoads/GetTempFilePrefix+BigQueryIO.Write/BatchLoads/TempFilePrefixView/BatchViewOverrides.GroupByWindowHashAsKeyAndWindowAsSortKey/ParDo(UseWindowHashAsKeyAndWindowAsSortKey)+BigQueryIO.Write/BatchLoads/TempFilePrefixView/Combine.GloballyAsSingletonView/Combine.globally(Singleton)/WithKeys/AddKeys/Map/ParMultiDo(Anonymous)+BigQueryIO.Write/BatchLoads/TempFilePrefixView/Combine.GloballyAsSingletonView/Combine.globally(Singleton)/Combine.perKey(Singleton)/GroupByKey/Reify+BigQueryIO.Write/BatchLoads/TempFilePrefixView/Combine.GloballyAsSingletonView/Combine.globally(Singleton)/Combine.perKey(Singleton)/GroupByKey/Write+BigQueryIO.Write/BatchLoads/TempFilePrefixView/BatchViewOverrides.GroupByWindowHashAsKeyAndWindowAsSortKey/BatchViewOverrides.GroupByKeyAndSortValuesOnly/Write
... Workers have started successfully.
...
... org.apache.beam.runners.dataflow.util.MonitoringUtil$LoggingHandler process SEVERE: 2017-05-23T21:06:33.711Z: (c14bab21d699a182): java.lang.RuntimeException: org.apache.beam.sdk.util.UserCodeException: java.lang.ArithmeticException: / by zero
        at com.google.cloud.dataflow.worker.runners.worker.GroupAlsoByWindowsParDoFn$1.output(GroupAlsoByWindowsParDoFn.java:146)
        at com.google.cloud.dataflow.worker.runners.worker.GroupAlsoByWindowFnRunner$1.outputWindowedValue(GroupAlsoByWindowFnRunner.java:104)
        at com.google.cloud.dataflow.worker.util.BatchGroupAlsoByWindowAndCombineFn.closeWindow(BatchGroupAlsoByWindowAndCombineFn.java:191)
...
... Cleaning up.
... Stopping worker pool...
... Worker pool stopped.

Remarque : En cas d'échec, le service Cloud Dataflow relance jusqu'à 4 fois les tâches en mode de traitement par lot, et un nombre illimité de fois les tâches en mode de traitement par flux. En mode de traitement par lot, votre tâche finit par échouer, tandis qu'en mode de traitement par flux, elle peut rester indéfiniment bloquée.

Python

INFO:root:Job 2016-03-08_14_21_32-8974754969325215880 is in state JOB_STATE_RUNNING.
...
INFO:root:... Expanding GroupByKey operations into optimizable parts.
INFO:root:... Lifting ValueCombiningMappingFns into MergeBucketsMappingFns
INFO:root:... Annotating graph with Autotuner information.
INFO:root:... Fusing adjacent ParDo, Read, Write, and Flatten operations
...
INFO:root:...: Starting 1 workers...
INFO:root:...: Executing operation group/Create
INFO:root:...: Value "group/Session" materialized.
INFO:root:...: Executing operation read+split+pair_with_one+group/Reify+group/Write
INFO:root:Job 2016-03-08_14_21_32-8974754969325215880 is in state JOB_STATE_RUNNING.
INFO:root:...: ...: Workers have started successfully.
INFO:root:Job 2016-03-08_14_21_32-8974754969325215880 is in state JOB_STATE_RUNNING.
INFO:root:...: Traceback (most recent call last):
  File ".../dataflow_worker/batchworker.py", line 384, in do_work self.current_executor.execute(work_item.map_task)
  ...
  File ".../apache_beam/examples/wordcount.runfiles/py/apache_beam/examples/wordcount.py", line 73, in <lambda>
ValueError: invalid literal for int() with base 10: 'www'

Remarque : En cas d'échec, le service Cloud Dataflow relance jusqu'à 4 fois les tâches en mode de traitement par lot, et un nombre illimité de fois les tâches en mode de traitement par flux. En mode de traitement par lot, votre tâche finit par échouer, tandis qu'en mode de traitement par flux, elle peut rester indéfiniment bloquée.

Java : SDK 1.x

INFO: To access the Cloud Dataflow monitoring console, please navigate to https://console.developers.google.com/project/google.com%3Aclouddfe/dataflow/job/2016-03-08_19_09_07-6448127003704955959
Submitted job: 2016-03-08_19_09_07-6448127003704955959
...
... Expanding GroupByKey operations into optimizable parts.
... Lifting ValueCombiningMappingFns into MergeBucketsMappingFns
... Annotating graph with Autotuner information.
... Fusing adjacent ParDo, Read, Write, and Flatten operations
...
... Starting 1 workers...
... Executing operation TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/GroupByKey/Create
... Executing operation AnonymousParDo+TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/Window.Into()+TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/RandomKey+TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/GroupByKey/Reify+TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/GroupByKey/Write
... Workers have started successfully.
... java.lang.ArithmeticException: / by zero
    at com.google.cloud.dataflow.integration.WorkerCrashRecovery.crash(WorkerCrashRecovery.java:166)
    at com.google.cloud.dataflow.integration.WorkerCrashRecovery.access$200(WorkerCrashRecovery.java:51)
    at com.google.cloud.dataflow.integration.WorkerCrashRecovery$1.processElement(WorkerCrashRecovery.java:199)
... Executing operation TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/GroupByKey/Close
... Executing operation TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/GroupByKey/Read+TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/GroupByKey/GroupByWindow+TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.ReshardForWrite/Ungroup+TextIO.Write/DataflowPipelineRunner.BatchTextIOWrite/DataflowPipelineRunner.BatchTextIONativeWrite
... Stopping worker pool...
... Worker pool stopped.
... Cleaning up.

Remarque : En cas d'échec, le service Cloud Dataflow relance jusqu'à 4 fois les tâches en mode de traitement par lot, et un nombre illimité de fois les tâches en mode de traitement par flux. En mode de traitement par lot, votre tâche finit par échouer, tandis qu'en mode de traitement par flux, elle peut rester indéfiniment bloquée.

Envisagez d'ajouter des gestionnaires d'exceptions pour éviter toute erreur dans votre code. Par exemple, si vous souhaitez supprimer les éléments qui font échouer une validation d'entrée personnalisée effectuée dans une transformation ParDo, traitez l'exception au sein de votre fonction DoFn et supprimez l'élément. Vous pouvez également suivre les éléments défaillants de différentes manières :

Java : SDK 2.x

  • Pour suivre les propriétés d'un pipeline en cours d'exécution, vous pouvez utiliser la classe Metrics comme illustré dans l'exemple suivant :
    final Counter counter = Metrics.counter("stats", "even-items");
    PCollection<Integer> input = pipeline.apply(...);
    ...
    input.apply(ParDo.of(new DoFn<Integer, Integer>() {
      @ProcessElement
      public void processElement(ProcessContext c) {
        if (c.element() % 2 == 0) {
          counter.inc();
        }
    });
    
  • Vous pouvez journaliser les éléments défaillants et vérifier la sortie à l'aide de Cloud Logging.
  • Vous pouvez utiliser votre transformation ParDo pour écrire les éléments défaillants dans une sortie supplémentaire pour inspection ultérieure.

Python

  • Vous disposez de la classe Metrics pour suivre les propriétés d'un pipeline en cours d'exécution, comme illustré dans l'exemple suivant :
    class FilterTextFn(beam.DoFn):
          """A DoFn that filters for a specific key based on a regex."""
    
          def __init__(self, pattern):
            self.pattern = pattern
            # A custom metric can track values in your pipeline as it runs. Create
            # custom metrics to count unmatched words, and know the distribution of
            # word lengths in the input PCollection.
            self.word_len_dist = Metrics.distribution(self.__class__,
                                                      'word_len_dist')
            self.unmatched_words = Metrics.counter(self.__class__,
                                                   'unmatched_words')
    
          def process(self, element):
            word = element
            self.word_len_dist.update(len(word))
            if re.match(self.pattern, word):
              yield element
            else:
              self.unmatched_words.inc()
    
        filtered_words = (
            words | 'FilterText' >> beam.ParDo(FilterTextFn('s.*')))
    
  • Vous pouvez journaliser les éléments défaillants et vérifier la sortie à l'aide de Cloud Logging.
  • Vous pouvez utiliser votre transformation ParDo pour écrire les éléments défaillants dans une sortie supplémentaire pour inspection ultérieure.

Java : SDK 1.x

  • Vous pouvez journaliser les éléments défaillants et vérifier la sortie à l'aide de Cloud Logging.
  • Vous pouvez utiliser votre fonction ParDo pour écrire les éléments défaillants dans une sortie secondaire pour inspection ultérieure.

Résoudre un problème de pipeline ralenti ou d'absence de sortie

Java : SDK 2.x

Si vous avez un pipeline gérant de grands volumes de données en mode de traitement par flux qui s'exécute lentement ou reste bloqué, il convient de vérifier les points suivants :

Quota Pub/Sub

Si votre pipeline lit des données d'entrée issues de Cloud Pub/Sub, il est possible que le quota de votre projet GCP soit insuffisant. Si votre tâche génère un nombre élevé d'erreurs 429 (Rate Limit Exceeded), cela peut être une indication d'un problème de quota insuffisant. Pour confirmer l'existence de ces erreurs, procédez comme suit :

  1. Accédez à la console Google Cloud Platform.
  2. Dans le volet de navigation de gauche, cliquez sur API et services.
  3. Dans le champ de recherche, recherchez Cloud Pub/Sub.
  4. Cliquez sur l'onglet Utilisation.
  5. Vérifiez les codes de réponse et recherchez les codes d'erreur client (4xx).

Utiliser .withFanout dans vos transformations combinées

Si votre pipeline traite des collections PCollection illimitées contenant de grands volumes de données, nous vous recommandons les mesures correctives suivantes :

  • Utilisez Combine.Globally.withFanout au lieu de Combine.Globally.
  • Utilisez Combine.PerKey.withHotKeyFanout au lieu de Count.PerKey.

Python

Si vous avez un pipeline gérant de grands volumes de données en mode de traitement par flux qui s'exécute lentement ou reste bloqué, il convient de vérifier les points suivants :

Quota Pub/Sub

Si votre pipeline lit des données d'entrée issues de Cloud Pub/Sub, il est possible que le quota de votre projet GCP soit insuffisant. Si votre tâche génère un nombre élevé d'erreurs 429 (Rate Limit Exceeded), cela peut être une indication d'un problème de quota insuffisant. Pour confirmer l'existence de ces erreurs, procédez comme suit :

  1. Accédez à la console Google Cloud Platform.
  2. Dans le volet de navigation de gauche, cliquez sur API et services.
  3. Dans le champ de recherche, recherchez Cloud Pub/Sub.
  4. Cliquez sur l'onglet Utilisation.
  5. Vérifiez les codes de réponse et recherchez les codes d'erreur client (4xx).

Java : SDK 1.x

Si vous avez un pipeline gérant de grands volumes de données en mode de traitement par flux qui s'exécute lentement ou reste bloqué, il convient de vérifier les points suivants :

Quota Pub/Sub

Si votre pipeline lit des données d'entrée issues de Cloud Pub/Sub, il est possible que le quota de votre projet GCP soit insuffisant. Si votre tâche génère un nombre élevé d'erreurs 429 (Rate Limit Exceeded), cela peut être une indication d'un problème de quota insuffisant. Pour confirmer l'existence de ces erreurs, procédez comme suit :

  1. Accédez à la console Google Cloud Platform.
  2. Dans le volet de navigation de gauche, cliquez sur API et services.
  3. Dans le champ de recherche, recherchez Cloud Pub/Sub.
  4. Cliquez sur l'onglet Utilisation.
  5. Vérifiez les codes de réponse et recherchez les codes d'erreur client (4xx).

Utiliser .withFanout dans vos transformations combinées

Si votre pipeline traite des collections PCollection illimitées contenant de grands volumes de données, nous vous recommandons les mesures correctives suivantes :

  • Utilisez Combine.Globally.withFanout au lieu de Combine.Globally.
  • Utilisez Combine.PerKey.withHotKeyFanout au lieu de Count.PerKey.

Erreurs courantes et mesures correctives

Pour plus d'informations sur les erreurs courantes que vous êtes susceptible de rencontrer lors de l'exécution de votre tâche Cloud Dataflow, consultez la page Guidage d'erreur commun.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.