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:
Na Google Cloud consola, aceda à página Tarefas do Dataflow.
Selecione uma tarefa.
Clique em keyboard_capslock no painel inferior para expandir o painel de registos.
Clique no separador Amostragem de dados.
No campo Passo, selecione um passo do pipeline. Também pode selecionar um passo no gráfico de tarefas.
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.
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:
Na Google Cloud consola, aceda à página Tarefas do Dataflow.
Selecione uma tarefa.
Para expandir o painel Registos, clique em keyboard_capslock Ativar/desativar painel no painel Registos.
Clique no separador Amostragem de dados.
No campo Passo, selecione um passo do pipeline. Também pode selecionar um passo no gráfico de tarefas.
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.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.
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:
- Use uma chave de encriptação gerida pelo cliente (CMEK) para encriptar o contentor do Cloud Storage. Para mais informações sobre como escolher uma opção de encriptação, consulte Escolha a encriptação certa para as suas necessidades.
- Defina um tempo de vida (TTL) no contentor do Cloud Storage para que os ficheiros de dados sejam eliminados automaticamente após um período. Para mais informações, consulte o artigo Defina a configuração do ciclo de vida para um contentor.
- Use o princípio do menor privilégio ao atribuir autorizações da IAM ao contentor do Cloud Storage.
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:
- 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. - Certifique-se de que está a usar o Runner v2
- Certifique-se de que os trabalhadores começaram. A amostragem não começa até os trabalhadores começarem.
- Certifique-se de que a tarefa e os trabalhadores estão em bom estado.
- 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.
- 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.