Modelos do Dataflow

Os modelos do Dataflow permitem organizar seus pipelines no Google Cloud e executá-los usando o Console do Google Cloud, a ferramenta de linha de comando gcloud ou chamadas da API REST. Os modelos clássicos são organizados como gráficos de execução no Cloud Storage. Já os modelos flexíveis empacotam o pipeline como uma imagem do Docker e organizam essas imagens no Container Registry do projeto. É possível usar um dos modelos fornecidos pelo Google ou criar seu próprio.

Os modelos oferecem outros benefícios em comparação com a implantação do Dataflow sem modelo, como:

  • A execução do pipeline não exige que o código seja recompilado todas as vezes.
  • É possível executar os pipelines sem o ambiente de desenvolvimento e as dependências associadas que são comuns na implantação sem modelo. Isso é útil para programar jobs em lote recorrentes.
  • Os parâmetros do ambiente de execução permitem personalizar a execução do pipeline.
  • Usuários não técnicos têm a possibilidade de executar modelos com o Console do Google Cloud, com a ferramenta de linha de comando gcloud ou com a API REST.

Como comparar jobs sem modelo e com modelos

Os modelos do Dataflow apresentam um novo fluxo de trabalho de desenvolvimento e execução que difere do fluxo de trabalho de execução do job sem modelo. O fluxo de trabalho com modelo separa a etapa de desenvolvimento da etapa de execução.

Jobs do Dataflow sem modelos

Normalmente, o desenvolvimento de pipeline e a execução de jobs no Apache Beam ocorrem dentro de um ambiente de desenvolvimento.

Fluxo de trabalho típico para jobs do Dataflow sem modelos:

  1. Os desenvolvedores criam um ambiente de desenvolvimento e elaboram o canal. O ambiente inclui o SDK do Apache Beam e outras dependências.
  2. Os usuários executam o pipeline do ambiente de desenvolvimento. O SDK do Apache Beam organiza arquivos no Cloud Storage, cria um arquivo de solicitação de job e o envia para o serviço do Dataflow.

Jobs do Dataflow com modelo

Se você usa modelos clássicos ou modelos flexíveis, a preparação e a execução são etapas separadas. Essa separação dá mais flexibilidade para decidir quem executa jobs e onde eles serão executados.

Fluxo de trabalho típico dos jobs do Dataflow com modelo:

  1. Os desenvolvedores criam um ambiente de desenvolvimento e elaboram o pipeline. O ambiente inclui o SDK do Apache Beam e outras dependências.
  2. Esta etapa depende do tipo de modelo usado.
    • Modelos clássicos. Os desenvolvedores executam o pipeline e criam um modelo. O SDK do Apache Beam organiza arquivos no Cloud Storage, cria um arquivo de modelo (semelhante ao de solicitação de job) e o salva no Cloud Storage.
    • Modelos flexíveis. Os desenvolvedores empacotam o pipeline em uma imagem do Docker e usam a ferramenta de linha de comando gcloud para criar e salvar o arquivo de especificação do modelo Flex no Cloud Storage.
  3. Outros usuários têm a possibilidade de executar jobs facilmente com o Console do Cloud, com a ferramenta de linha de comando gcloud ou com a API REST para enviar solicitações de execução de arquivos de modelo para o serviço do Dataflow.

Além disso, é possível clonar jobs de modelo clássico por meio da interface de usuário de monitoramento do Dataflow. O formulário de envio para jobs clonados tem valores de parâmetro pré-preenchidos. No entanto, eles podem ser modificados antes da execução do job.

Para clonar um job, siga estas etapas:

  1. Acesse a página de detalhes do job para encontrar o job que você quer clonar.
  2. Clique em Clonar.
  3. Se for necessário, atualize os parâmetros do job.
  4. Clique em Executar job para enviar o novo job.

Como avaliar qual tipo de modelo usar

Os modelos flexíveis geram mais flexibilidade do que os modelos clássicos, permitindo que pequenas variações de jobs do Dataflow sejam iniciadas de um único modelo e permitam o uso de qualquer E/S de origem ou de coletor. Para modelos clássicos, o gráfico de execução é criado durante o processo de criação do modelo. O gráfico de execução para modelos flexíveis é criado dinamicamente com base nos parâmetros de ambiente de execução fornecidos pelo usuário quando o modelo é executado. Isso significa que, ao usar modelos Flex, é possível fazer pequenas variações para realizar tarefas diferentes com o mesmo modelo subjacente, como alterar os formatos de arquivo de origem ou coletor.

Como comparar jobs com modelo

A tabela a seguir resume as semelhanças e as diferenças entre os modelos clássico e flexível:
Recurso Modelos clássicos Modelos flexíveis
Separar etapas de preparação e execução Sim Sim
Execute o modelo usando o Console do Google Cloud, a ferramenta gcloud ou chamadas de API REST. Sim Sim
Executar o pipeline sem recompilar o código Sim Sim
Execute o pipeline sem ambiente de desenvolvimento e dependências associadas Sim Sim
Personalizar a execução do pipeline com parâmetros de ambiente de execução Sim Sim
Faça validações na construção do gráfico de jobs para reduzir os erros de ambiente de execução Não Sim
Pode alterar o gráfico de execução de jobs após a criação do modelo Não Sim
Pode atualizar jobs de streaming Sim Não
Compatível com a FlexRS Sim Não
Compatível com parâmetros SQL Não Sim
Compatível com interfaces de E/S além de ValueProvider Não Sim

Para modelos clássicos e jobs de modelo Flex, a preparação e a execução são realizadas em etapas diferentes. No entanto, os dois tipos de jobs modelo resultam em artefatos de preparação diferentes. Quando você usa modelos clássicos, o artefato preparado é o modelo com o gráfico de execução serializado JSON. Com modelos Flex, o artefato preparado é uma imagem do Docker que contém o arquivo JAR ou o código Python.

Requisitos de versão do SDK

Para criar seus próprios modelos, verifique se a versão do SDK do Apache Beam é compatível com a criação de modelos.

Java: SDK 2.x

Para criar modelos com o SDK 2.x do Apache Beam para Java, você precisa ter a versão 2.0.0-beta3 ou posterior.

Python

Para criar modelos com o SDK 2.x do Apache Beam para Python, você precisa ter a versão 2.0.0 ou posterior.

Java: SDK 1.x

Para executar modelos com a ferramenta de linha de comando gcloud, é necessário ter a versão 138.0.0 ou superior do SDK do Cloud.

A seguir