Use a amostragem de dados para observar os dados do pipeline

A amostragem de dados permite-lhe observar os dados em cada passo de um pipeline do Dataflow. Estas informações podem ajudar a depurar problemas com o seu pipeline, mostrando as entradas e as saídas reais num trabalho em execução ou concluído.

As utilizações da amostragem de dados incluem o seguinte:

  • Durante o desenvolvimento, veja que elementos são produzidos ao longo do pipeline.

  • Se um pipeline gerar uma exceção, veja os elementos correlacionados com essa exceção.

  • Quando depurar, veja os resultados das transformações para garantir que o resultado está correto.

  • Compreenda o comportamento de um pipeline sem ter de examinar o código do pipeline.

  • Veja os elementos com amostragem mais tarde, após a conclusão da tarefa, ou compare os dados com amostragem com uma execução anterior.

Vista geral

O Dataflow pode fazer a amostragem de dados de pipelines das seguintes formas:

  • Amostragem periódica. Com este tipo de amostragem, o Dataflow recolhe amostras à medida que a tarefa é executada. Pode usar os dados de amostragem para verificar se o pipeline processa os elementos conforme esperado e para diagnosticar problemas de tempo de execução, como teclas de atalho ou resultados incorretos. Para mais informações, consulte a secção Use a amostragem de dados periódica neste documento.

  • Amostragem de exceções. Com este tipo de amostragem, o Dataflow recolhe amostras se um pipeline gerar uma exceção. Pode usar os exemplos para ver os dados que estavam a ser processados quando ocorreu a exceção. A amostragem de exceções está ativada por predefinição e pode ser desativada. Para mais informações, consulte a secção Use a amostragem de exceções neste documento.

O Dataflow escreve os elementos amostrados no caminho do Cloud Storage especificado pela opção de pipeline gcpTempLocation para Java e temp_location para Python e Go. Pode ver os dados amostrados na consola Google Cloud ou examinar os ficheiros de dados não processados no Cloud Storage. Os ficheiros permanecem no Cloud Storage até que os elimine.

A amostragem de dados é executada pelos trabalhadores do Dataflow. A amostragem é feita da melhor forma possível. As amostras podem ser ignoradas se ocorrerem erros temporários.

Requisitos

Para usar a amostragem de dados, tem de ativar o Runner v2. Para mais informações, consulte o artigo Ative o Dataflow Runner v2.

Para ver os dados de amostragem na Google Cloud consola, precisa das seguintes autorizações de gestão de identidades e acessos:

  • storage.buckets.get
  • storage.objects.get
  • storage.objects.list

A amostragem periódica requer o seguinte SDK do Apache Beam:

  • SDK Java do Apache Beam 2.47.0 ou posterior
  • SDK Python do Apache Beam 2.46.0 ou posterior
  • SDK Go do Apache Beam 2.53.0 ou posterior

A amostragem de exceções requer o seguinte SDK do Apache Beam:

  • SDK Java do Apache Beam 2.51.0 ou posterior
  • SDK Python do Apache Beam 2.51.0 ou posterior
  • O SDK Go do Apache Beam não suporta a amostragem de exceções.

A partir destes SDKs, o Dataflow ativa a amostragem de exceções para todas as tarefas por predefinição.

Use a amostragem de dados periódica

Esta secção descreve como fazer a amostragem contínua de dados do pipeline à medida que uma tarefa é executada.

Ative a amostragem de dados periódica

A amostragem periódica está desativada por predefinição. Para a ativar, defina a seguinte opção de pipeline:

Java

--experiments=enable_data_sampling

Python

--experiments=enable_data_sampling

Go

--experiments=enable_data_sampling

Pode definir a opção de forma programática ou através da linha de comandos. Para mais informações, consulte Defina opções de pipeline experimentais.

Quando executar um modelo do Dataflow, use a flag additional-experiments para ativar a amostragem de dados:

--additional-experiments=enable_data_sampling

Quando a amostragem periódica está ativada, o Dataflow recolhe amostras de cada PCollection no gráfico de tarefas. A taxa de amostragem é de aproximadamente uma amostra a cada 30 segundos.

Consoante o volume de dados, a amostragem de dados periódica pode adicionar uma sobrecarga de desempenho significativa. Por isso, recomendamos que ative apenas a amostragem periódica durante os testes e a desative para cargas de trabalho de produção.

Veja os dados de amostragem

Para ver os dados amostrados na Google Cloud consola, siga os seguintes passos:

  1. Na Google Cloud consola, aceda à página Tarefas do Dataflow.

    Aceda a Empregos

  2. Selecione uma tarefa.

  3. Clique em no painel inferior para expandir o painel de registos.

  4. Clique no separador Amostragem de dados.

  5. No campo Passo, selecione um passo do pipeline. Também pode selecionar um passo no gráfico de tarefas.

  6. No campo Coleção, escolha uma PCollection.

Se o Dataflow tiver recolhido amostras para esse PCollection, os dados amostrados aparecem no separador. Para cada exemplo, o separador apresenta a data de criação e o elemento de saída. O elemento de saída é uma representação serializada do elemento de recolha, incluindo os dados do elemento, a indicação de tempo e as informações da janela e do painel.

Os exemplos seguintes mostram elementos com amostragem.

Java

TimestampedValueInGlobalWindow{value=KV{way, [21]},
timestamp=294247-01-09T04:00:54.775Z, pane=PaneInfo{isFirst=true, isLast=true,
timing=ON_TIME, index=0, onTimeIndex=0}}

Python

(('THE', 1), MIN_TIMESTAMP, (GloblWindow,), PaneInfo(first: True, last: True,
timing: UNKNOWN, index: 0, nonspeculative_index: 0))

Go

KV<THE,1> [@1708122738999:[[*]]:{3 true true 0 0}]

A imagem seguinte mostra como os dados de amostra são apresentados na Google Cloud consola.

Dados de amostragem na consola Google Cloud

Use a amostragem de exceções

Se o seu pipeline gerar uma exceção não processada, pode ver a exceção e o elemento de entrada correlacionado com essa exceção. A amostragem de exceções está ativada por predefinição quando usa um SDK do Apache Beam suportado.

Veja as exceções

Para ver uma exceção, siga estes passos:

  1. Na Google Cloud consola, aceda à página Tarefas do Dataflow.

    Aceda a Empregos

  2. Selecione uma tarefa.

  3. Para expandir o painel Registos, clique em Ativar/desativar painel no painel Registos.

  4. Clique no separador Amostragem de dados.

  5. No campo Passo, selecione um passo do pipeline. Também pode selecionar um passo no gráfico de tarefas.

  6. No campo Coleção, escolha uma PCollection.

    A coluna Exceção contém os detalhes da exceção. Não existe um elemento de saída para uma exceção. Em alternativa, a coluna Elemento de saída contém a mensagem Failed to process input element: INPUT_ELEMENT, em que INPUT_ELEMENT é o elemento de entrada correlacionado.

  7. Para ver o exemplo de entrada e os detalhes da exceção numa nova janela, clique em Abrir num novo.

A imagem seguinte mostra como uma exceção é apresentada na Google Cloud consola.

Exceção com amostragem na consola Google Cloud

Desative a amostragem de exceções

Para desativar a amostragem de exceções, defina a seguinte opção de pipeline:

Java

--experiments=disable_always_on_exception_sampling

Python

--experiments=disable_always_on_exception_sampling

Pode definir a opção de forma programática ou através da linha de comandos. Para mais informações, consulte Defina opções de pipeline experimentais.

Quando executar um modelo do Dataflow, use a flag additional-experiments para desativar a amostragem de exceções:

--additional-experiments=disable_always_on_exception_sampling

Considerações de segurança

O Dataflow escreve os dados de amostra num contentor do Cloud Storage que cria e gere. Use as funcionalidades de segurança do Cloud Storage para salvaguardar a segurança dos seus dados. Em particular, considere as seguintes medidas de segurança adicionais:

Também pode ocultar campos individuais no seu tipo de dados PCollection, para que o valor não processado não apareça nos dados de amostragem:

  • Python: substitua o método __repr__ ou __str__.
  • Java: substitua o método toString.

No entanto, não pode ocultar as entradas e as saídas dos conetores de E/S, a menos que modifique o código fonte do conetor para o fazer.

Faturação

Quando o Dataflow realiza a amostragem de dados, é-lhe cobrado o armazenamento de dados do Cloud Storage e as operações de leitura e escrita no Cloud Storage. Para mais informações, consulte os preços do Cloud Storage.

Cada worker do Dataflow escreve exemplos em lotes, incorrendo numa operação de leitura e numa operação de escrita por lote.

Resolução de problemas

Esta secção contém informações sobre problemas comuns ao usar a amostragem de dados.

Erro de autorizações

Se não tiver autorização para ver os exemplos, a Google Cloud consola apresenta o seguinte erro:

You don't have permission to view a data sample.

Para resolver este erro, verifique se tem as autorizações de IAM necessárias. Se o erro continuar a ocorrer, pode ficar sujeito a uma política de negação do IAM.

Não vejo exemplos

Se não vir exemplos, verifique o seguinte:

  1. Certifique-se de que a amostragem de dados está ativada definindo a opção enable_data_sampling. Consulte o artigo Ative a amostragem de dados.
  2. Certifique-se de que está a usar o Runner v2
  3. Certifique-se de que os trabalhadores começaram. A amostragem não começa até os trabalhadores começarem.
  4. Certifique-se de que a tarefa e os trabalhadores estão em bom estado.
  5. Verifique novamente as quotas do Cloud Storage do projeto. Se exceder os limites da quota do Cloud Storage, o Dataflow não pode escrever os dados de amostra.
  6. A amostragem de dados não pode ser feita a partir de iteráveis. Não estão disponíveis exemplos destes tipos de streams.

O que se segue?