Como solucionar problemas e fazer depuração

Nesta página, você verá dicas de solução de problemas e estratégias de depuração que podem ser úteis se você tiver problemas para criar ou executar seu pipeline do Cloud Dataflow. Essas informações podem ajudar a detectar uma falha em um pipeline, determinar o motivo por trás da falha e sugerir algumas ações recomendadas para corrigir o problema.

Com o Cloud Dataflow, você recebe feedback em tempo real sobre seu job, além de um conjunto básico de etapas utilizadas para verificar mensagens de erro, registros e condições, como a paralisação do andamento do job.

Para orientações sobre erros comuns na execução de um job do Cloud Dataflow, consulte a página Orientação para erros comuns.

Como verificar o status do pipeline

É possível detectar erros de execução no pipeline com a Interface de monitoramento do Cloud Dataflow.

  1. Acesse o Console do Google Cloud Platform.
  2. Na lista de projetos, selecione seu projeto do Google Cloud Platform (GCP).
  3. Clique no menu no canto superior esquerdo.
  4. Navegue até a seção Big Data e clique em Dataflow. No painel do lado direito, será exibida uma lista de jobs em execução.
  5. Selecione o job de pipeline que quer visualizar. Será possível ver o status dos jobs no campo Status: "Em execução", "Finalizado" ou "Com falha".
Figura 1: uma lista de jobs do Cloud Dataflow no Developers Console com jobs nos estados "Em execução", "Finalizado" e "Com falha".

Fluxo de trabalho da solução de problemas básicos

Caso tenha ocorrido falha em um dos jobs da pipeline, selecione o job para ver informações mais detalhadas sobre os erros e os resultados da execução. Ao selecionar um job, você vê o gráfico de execução, bem como algumas informações sobre o job na página Resumo, à direita do gráfico. Durante a execução, a parte superior da página contém um botão para exibir registros, bem como indicadores que mostram se o job gerou erros ou avisos.

Figura 2: um resumo do job do Cloud Dataflow com os erros indicados.

Como verificar mensagens de erro de jobs

Clique no botão Registros para ver as mensagens de registro geradas pelo código do pipeline e pelo serviço do Cloud Dataflow. Use o menu suspenso Gravidade mínima para filtrar as mensagens que aparecem no painel de registros. Selecione o filtro Erros para exibir apenas mensagens de erro.

Clique no ícone de triângulo ao lado de cada mensagem de erro para expandi-la.

Figura 3: uma lista de mensagens com erros de um job do Cloud Dataflow, com uma mensagem expandida.

Como exibir registros de etapas do job

Ao selecionar uma etapa no gráfico do pipeline, o painel de registros alterna a exibição dos "Registros de jobs" gerados pelo serviço do Cloud Dataflow para mostrar os registros das instâncias do Compute Engine que executam a etapa do pipeline.

Figura 4: botão do Cloud Logging no resumo do job do Cloud Dataflow.

O Stackdriver Logging combina todos os registros coletados das instâncias do Compute Engine do seu projeto em um único local. Para mais informações sobre como usar os diversos recursos de geração de registros do Cloud Dataflow, veja Como gerar registros de mensagens do pipeline.

Como lidar com a rejeição automática do pipeline

Em alguns casos, o serviço do Cloud Dataflow identifica que talvez o pipeline acione os problemas conhecidos do SDK. Para evitar o envio de pipelines com possíveis problemas, o Cloud Dataflow rejeitará automaticamente o pipeline e exibirá a seguinte mensagem:

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].

Depois de ler as advertências nos detalhes de bugs associados, se ainda assim você quiser tentar executar o pipeline, modifique a rejeição automática. Adicione a sinalização --experiments=<override-flag> e reenvie o pipeline.

Como determinar a causa da falha em um pipeline

Geralmente, a causa da falha em uma execução do pipeline do Apache Beam é atribuída a um dos seguintes casos:

  • Erros de construção de gráfico ou pipeline. Esses erros ocorrem quando o Cloud Dataflow se depara com um problema na criação do gráfico das etapas que compõem o pipeline, conforme descrito pelo pipeline do Apache Beam.
  • Erros na validação do job. O serviço do Cloud Dataflow valida qualquer job de pipeline que você iniciar. Erros no processo de validação podem impedir que seu job seja criado ou executado com sucesso. Erros de validação incluem problemas com o intervalo do Cloud Storage do projeto no GCP ou com as permissões do projeto.
  • Exceções no código do worker. Isso ocorre quando há erros ou bugs no código fornecido pelo usuário distribuído pelo Cloud Dataflow para workers paralelos, como as instâncias DoFn de uma transformação ParDo.
  • Canais de execução lenta ou falta de resultado. Caso o pipeline seja executado lentamente ou por um longo período de tempo sem relatar resultados, verifique as cotas das origens de dados e coletores de streaming, como o Cloud Pub/Sub. Há também certas transformações que se adaptam melhor do que outras a pipelines com alto volume de streaming.
  • Erros causados por falhas temporárias em outros serviços do GCP. Talvez ocorra falha no pipeline devido a uma interrupção temporária ou outro problema nos serviços do GCP de que o Cloud Dataflow depende, como o Compute Engine ou o Cloud Storage.

Como detectar erros de construção de gráfico ou pipeline

É possível ocorrer um erro de construção de gráfico quando o Cloud Dataflow cria o gráfico de execução do pipeline com base no código do programa. Durante a criação do gráfico, o Cloud Dataflow verifica se há operações ilegais.

Se o Cloud Dataflow detectar um erro na construção do gráfico, lembre-se de que nenhum job será criado no serviço do Cloud Dataflow. Assim, você não verá o feedback na interface de monitoramento do Cloud Dataflow. Em vez disso, no console ou na janela do terminal em que o pipeline do Apache Beam foi executado, será exibida uma mensagem de erro semelhante às seguintes:

Java: SDK 2.x

Por exemplo, se o pipeline tentar executar uma agregação como GroupByKey em uma PCollection ilimitada, com janelas globais e sem acionamento, será exibida uma mensagem de erro semelhante a esta:

...
... 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

Por exemplo, se no canal forem usadas dicas de tipo e o tipo de argumento em uma das transformações não for o esperado, você verá uma mensagem de erro semelhante a esta:

... 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

Por exemplo, se o pipeline tentar executar uma agregação como GroupByKey em uma PCollection ilimitada, com janelas globais e sem acionamento, será exibida uma mensagem de erro semelhante a esta:

...
... 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
...

Caso você encontre esse erro, verifique o código do pipeline para garantir que as operações sejam legais.

Como detectar erros na validação de jobs do Cloud Dataflow

Após receber o gráfico do pipeline, o serviço do Cloud Dataflow tentará validar o job. Essa validação inclui o seguinte:

  • Verificar se o serviço pode acessar os intervalos do Cloud Storage associados ao job para a preparação de arquivos e a saída temporária.
  • Verificar as permissões necessárias no seu projeto do GCP.
  • Verificar se o serviço pode acessar fontes de entrada e saída, como arquivos.

Em caso de falha do job no processo de validação, será exibida uma mensagem de erro na interface de monitoramento do Cloud Dataflow, bem como no console ou na janela do terminal quando você usa a execução do bloqueio. A mensagem de erro será semelhante a esta:

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)

Como detectar uma exceção no código do worker

Durante a execução do job, podem ocorrer erros ou exceções no código do worker. Esses erros geralmente significam que os DoFns no código do pipeline geraram exceções não processadas, o que resulta em tarefas com falha em seu job do Cloud Dataflow.

Exceções no código do usuário, como instâncias DoFn, são relatadas na Interface de monitoramento do Cloud Dataflow. Se você executar o pipeline com a execução de bloqueio, também serão exibidas mensagens de erro impressas no console ou na janela do terminal, como as seguintes:

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.

Observação: as tarefas com falha do serviço do Cloud Dataflow são repetidas até quatro vezes no modo em lote e um número ilimitado de vezes no modo de streaming. No modo em lote, o job vai falhar. No modo de streaming, ele poderá ficar parado indefinidamente.

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'

Observação: as tarefas com falha do serviço do Cloud Dataflow são repetidas até quatro vezes no modo em lote e um número ilimitado de vezes no modo de streaming. No modo em lote, o job vai falhar. No modo de streaming, ele poderá ficar parado indefinidamente.

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.

Observação: as tarefas com falha do serviço do Cloud Dataflow são repetidas até quatro vezes no modo em lote e um número ilimitado de vezes no modo de streaming. No modo em lote, o job vai falhar. No modo de streaming, ele poderá ficar parado indefinidamente.

Proteja o código contra erros adicionando gerenciadores de exceção. Por exemplo, para soltar elementos que falham em alguma validação de entrada personalizada feita em um ParDo, gerencie a exceção dentro de DoFn e solte o elemento. Rastreie elementos com falha de várias maneiras:

Java: SDK 2.x

  • Para rastrear as propriedades de um pipeline em execução, use a classe Metrics, conforme mostrado no exemplo a seguir:
    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();
        }
    });
    
  • Use o Cloud Logging para registrar os elementos com falha e verificar a saída.
  • Faça com que ParDo grave os elementos com falha em uma saída complementar para uma futura inspeção.

Python

  • Use a classe Metrics para rastrear as propriedades de um canal em execução, conforme mostrado no exemplo a seguir:
    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.*')))
    
  • Use o Cloud Logging para registrar os elementos com falha e verificar a saída.
  • Faça com que ParDo grave os elementos com falha em uma saída complementar para uma futura inspeção.

Java: SDK 1.x

  • Use o Cloud Logging para registrar os elementos com falha e verificar a saída.
  • Faça com que ParDo grave os elementos com falha em uma saída secundária para uma futura inspeção.

Como solucionar problemas de pipelines de execução lenta ou falta de resultado

Java: SDK 2.x

Se um canal com alto volume de streaming estiver sendo executado lentamente ou parado, há alguns pontos que podem ser verificados:

Cota de Pub/Sub

Caso o pipeline leia a entrada do Cloud Pub/Sub, é provável que seu projeto do GCP tenha uma cota do Cloud Pub/Sub insuficiente. Se o seu job estiver gerando um alto número de erros de 429 (Rate Limit Exceeded), isso quer dizer que a sua cota é insuficiente. Tente seguir estas etapas para verificar esses erros:

  1. Acesse o Console do Google Cloud Platform.
  2. No painel de navegação à esquerda, clique em APIs e serviços.
  3. Na caixa de pesquisa, consulte Cloud Pub/Sub.
  4. Clique na guia Uso.
  5. Selecione os Códigos de resposta e procure códigos de erro de cliente (4xx).

Uso de .withFanout nas transformações Combine

Se o canal processa PCollections ilimitadas com alto volume, recomendamos:

  • Use Combine.Globally.withFanout em vez de Combine.Globally.
  • Use Combine.PerKey.withHotKeyFanout em vez de Count.PerKey.

Python

Se um canal com alto volume de streaming estiver sendo executado lentamente ou parado, há alguns pontos que podem ser verificados:

Cota de Pub/Sub

Caso o pipeline leia a entrada do Cloud Pub/Sub, é provável que seu projeto do GCP tenha uma cota do Cloud Pub/Sub insuficiente. Se o seu job estiver gerando um alto número de erros 429 (Rate Limit Exceeded), a cota é insuficiente. Tente seguir estas etapas para verificar esses erros:

  1. Acesse o Console do Google Cloud Platform.
  2. No painel de navegação à esquerda, clique em APIs e serviços.
  3. Na caixa de pesquisa, consulte Cloud Pub/Sub.
  4. Clique na guia Uso.
  5. Selecione os Códigos de resposta e procure códigos de erro de cliente (4xx).

Java: SDK 1.x

Se um canal com alto volume de streaming estiver sendo executado lentamente ou parado, há alguns pontos que podem ser verificados:

Cota de Pub/Sub

Caso o pipeline leia a entrada do Cloud Pub/Sub, é provável que seu projeto do GCP tenha uma cota do Cloud Pub/Sub insuficiente. Se o seu job estiver gerando um alto número de erros 429 (Rate Limit Exceeded), a cota é insuficiente. Tente seguir estas etapas para verificar esses erros:

  1. Acesse o Console do Google Cloud Platform.
  2. No painel de navegação à esquerda, clique em APIs e serviços.
  3. Na caixa de pesquisa, consulte Cloud Pub/Sub.
  4. Clique na guia Uso.
  5. Selecione os Códigos de resposta e procure códigos de erro de cliente (4xx).

Uso de .withFanout nas transformações Combine

Se o canal processa PCollections ilimitadas com alto volume, recomendamos:

  • Use Combine.Globally.withFanout em vez de Combine.Globally.
  • Use Combine.PerKey.withHotKeyFanout em vez de Count.PerKey.

Erros comuns e ações recomendadas

Para orientações sobre erros comuns na execução de um job do Cloud Dataflow, consulte a página Orientação para erros comuns.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.