O Dataflow é um Google Cloud serviço que oferece processamento unificado de dados de stream e em lote em escala. Use o Dataflow para criar pipelines de dados que leiam uma ou mais fontes, transformem os dados e gravem os dados em um destino.
Os casos de uso comuns do Dataflow são os seguintes:
- Movimento de dados: ingestão ou replicação de dados em subsistemas.
- Fluxos de trabalho de ETL (extração, transformação e carregamento) que ingerem dados em um data warehouse como o BigQuery.
- Suporte de back-end para painéis de business intelligence (BI)
- Análise de machine learning (ML) em tempo real de dados de streaming.
- Processamento de dados de sensor ou registro de dados em escala.
O Dataflow usa o mesmo modelo de programação para análise em lote e de stream. Os pipelines de streaming podem atingir uma latência baixa. É possível ingerir, processar e analisar volumes flutuantes de dados em tempo real. Por padrão, o Dataflow oferece processamento único de cada registro. Para pipelines de streaming que toleram cópias, é possível reduzir o custo e melhorar a latência ativando o modo pelo menos uma vez.
Vantagens do processamento de dados com o Dataflow
Esta seção descreve algumas das vantagens de usar o Dataflow.
Processamento de dados gerenciado
O Dataflow é um serviço totalmente gerenciado. Isso significa que o Google gerencia todos os recursos necessários para executar o Dataflow. Quando você executa um job do Dataflow, o serviço aloca um pool de VMs de worker para executar o pipeline. Não é preciso provisionar ou gerenciar essas VMs. Quando o job é concluído ou cancelado, o Dataflow exclui as VMs automaticamente. Você será cobrado pelos recursos de computação que seu job usa. Para mais informações sobre custos, consulte Preços do Dataflow.
Pipelines de dados escalonáveis
O Dataflow foi projetado para aceitar pipelines em lote e de streaming em grande escala. Os dados são processados em paralelo para que o trabalho seja distribuído em várias VMs.
O Dataflow pode ser escalonado automaticamente provisionando VMs extras de worker ou encerrando algumas delas se forem necessárias. Ele também otimiza o trabalho com base nas características do pipeline. Por exemplo, o Dataflow pode reequilibrar dinamicamente o trabalho entre as VMs para que o trabalho paralelo seja concluído com mais eficiência.
Portátil com o Apache Beam
O Dataflow é baseado no projeto de código aberto Apache Beam. O Apache Beam permite escrever pipelines usando um SDK específico da linguagem. No momento, o Apache Beam é compatível com SDKs do Java, Python e Go, além de pipelines em várias linguagens.
Dataflow executa pipelines do Apache Beam. Se, posteriormente, você decidir executar o pipeline em uma plataforma diferente, como Apache Flink ou Apache Spark, será possível fazer isso sem reescrever o código do pipeline.
Desenvolvimento flexível de pipelines de dados
É possível usar o Dataflow para pipelines com casos de uso simples, como apenas mover dados. No entanto, Dataflow também é adequado para aplicativos mais avançados, como análise de streaming em tempo real. Uma solução criada no Dataflow pode crescer de acordo com suas necessidades conforme você migra do lote para o streaming ou encontra casos de uso mais avançados.
O Dataflow é compatível com várias maneiras diferentes de criar e executar pipelines, dependendo das suas necessidades:
Escreva o código usando os SDKs do Apache Beam.
Implantar um modelo do Dataflow. Com os modelos, é possível executar pipelines predefinidos. Por exemplo, um desenvolvedor pode criar um modelo e, em seguida, um cientista de dados pode implantá-lo sob demanda.
O Google também fornece uma biblioteca de modelos para cenários comuns. É possível implantar esses modelos sem conhecer os conceitos de programação do Apache Beam.
Use os notebooks do JupyterLab para desenvolver e executar pipelines de maneira iterativa.
Jobs de pipeline de dados observáveis
É possível monitorar o status dos jobs do Dataflow por meio da interface de monitoramento do Dataflow no console Google Cloud . A interface de monitoramento inclui uma representação gráfica do pipeline, mostrando o progresso e os detalhes de execução de cada estágio do pipeline. A interface de monitoramento facilita a detecção de problemas como gargalos ou alta latência. Também é possível criar um perfil dos jobs do Dataflow para monitorar o uso de CPU e a alocação de memória.
Como os pipelines de dados funcionam para processamento em lote e de stream
O Dataflow usa um modelo de pipeline de dados, em que os dados se movem por uma série de estágios. As fases podem incluir a leitura de dados de uma fonte, a transformação e a agregação dos dados e a gravação dos resultados em um destino.
Os pipelines podem variar de um processamento muito básico a um mais complexo. Por exemplo, um pipeline pode fazer o seguinte:
- Mover os dados no estado em que se encontram para um destino.
- Transformar os dados para que sejam mais utilizáveis pelo sistema de destino.
- Agregar, processar e aprimorar os dados para análise.
- Combine dados com outros.
Um pipeline definido no Apache Beam não especifica como o pipeline é executado. A execução do pipeline é o trabalho de um executor. A finalidade de um executor é executar um pipeline do Apache Beam em uma plataforma específica. O Apache Beam é compatível com vários executores, incluindo um executor do Dataflow.
Para usar o Dataflow com pipelines do Apache Beam, especifique o executor do Dataflow. O executor faz upload do código executável e das dependências para um bucket do Cloud Storage e cria um job do Dataflow. O Dataflow aloca um pool de VMs para executar o pipeline.
O diagrama a seguir mostra uma solução típica de ETL e BI usando o Dataflow e outros serviços do Google Cloud :

Este diagrama mostra os seguintes estágios:
- O Pub/Sub ingere dados de um sistema externo.
- O Dataflow lê os dados do Pub/Sub e os grava no BigQuery. Durante esse estágio, o Dataflow pode transformar ou agregar os dados.
- O BigQuery atua como um data warehouse, permitindo que analistas de dados executem consultas ad hoc nos dados.
- O Looker fornece insights de BI em tempo real com base nos dados armazenados no BigQuery.
Para situações básicas de movimentação de dados, basta executar um modelo fornecido pelo Google. Alguns modelos são compatíveis com funções definidas pelo usuário (UDFs) escritas em JavaScript. UDFs permitem adicionar lógica de processamento personalizada a um modelo. Para pipelines mais complexos, comece com o SDK do Apache Beam.
A seguir
- Para mais informações sobre o Apache Beam, consulte Modelo de programação para o Apache Beam.
- Crie seu primeiro pipeline seguindo o Guia de início rápido do Job builder ou o Guia de início rápido do modelo do Dataflow.
- Saiba como usar o Apache Beam para criar pipelines.