Modelos do Dataflow

Os modelos do Dataflow permitem que você empacote um pipeline do Dataflow para implantação. Qualquer pessoa com as permissões corretas pode usar o modelo para implantar o pipeline empacotado. Você pode criar seus próprios modelos personalizados do Dataflow, e o Google fornece modelos pré-criados para situações comuns.

Benefícios

Os modelos têm várias vantagens em relação à implantação direta de um pipeline no Dataflow:

  • Os modelos separam o design do pipeline da implantação Por exemplo, um desenvolvedor pode criar um modelo, e um cientista de dados pode implantá-lo mais tarde.
  • Os modelos podem ter parâmetros que permitem personalizar o pipeline ao implantar o modelo.
  • É possível implantar um modelo usando o Console do Google Cloud, a Google Cloud CLI ou as chamadas da API REST. Não é necessário um ambiente de desenvolvimento nem qualquer dependência de pipeline instalada na sua máquina local.
  • Um modelo é um artefato de código que pode ser armazenado em um repositório de controle de origem e usado em pipelines de integração contínua de CI/CD.

Modelos fornecidos pelo Google

O Google fornece uma variedade de modelos do Dataflow pré-criados e de código aberto que podem ser usados em cenários comuns. Para mais informações sobre os modelos disponíveis, consulte Modelos fornecidos pelo Google.

Comparar modelos Flex e clássicos

O Dataflow é compatível com dois tipos de modelo: Flex, novos e clássicos. Se você estiver criando um novo modelo do Dataflow, recomendamos criá-lo como um modelo Flex.

Com um modelo Flex, o pipeline é empacotado como uma imagem do Docker no Artifact Registry, junto com um arquivo de especificação de modelo no Cloud Storage. A especificação do modelo contém um ponteiro para a imagem do Docker. Quando você executa o modelo, o serviço do Dataflow inicia uma VM do inicializador, extrai a imagem do Docker e executa o pipeline. O gráfico de execução é criado dinamicamente com base nos parâmetros de ambiente de execução fornecidos pelo usuário. Para usar a API na inicialização de um job com um modelo Flex, use o método projects.locations.flexTemplates.launch.

Um modelo clássico contém a serialização JSON de um gráfico de job do Dataflow. O código do pipeline precisa unir todos os parâmetros de ambiente de execução na interface ValueProvider. Essa interface permite que os usuários especifiquem valores de parâmetro quando implantam o modelo. Se quiser usar a API para trabalhar com modelos clássicos, consulte a documentação de referência da API projects.locations.templates.

Os modelos flexíveis têm as seguintes vantagens em relação aos modelos clássicos:

  • Ao contrário dos modelos clássicos, os Flex não exigem a interface ValueProvider para parâmetros de entrada. Nem todas as origens e coletores do Dataflow oferecem suporte ao ValueProvider.
  • Os modelos clássicos têm um gráfico de jobs estático, mas os modelos Flex podem construir dinamicamente o gráfico de jobs. Por exemplo, o modelo pode selecionar um conector de E/S diferente com base nos parâmetros de entrada.
  • Um modelo Flex pode realizar o pré-processamento em uma máquina virtual (VM) durante a construção do pipeline. Por exemplo, ele pode validar valores de parâmetro de entrada.

Fluxo de trabalho de modelo

O uso de modelos do Dataflow envolve as seguintes etapas gerais:

  1. Os desenvolvedores configuram um ambiente de desenvolvimento e desenvolvem seu pipeline. O ambiente inclui o SDK do Apache Beam e outras dependências.
  2. Dependendo do tipo de modelo (flexível ou clássico):
    • Para modelos Flex, os desenvolvedores empacotam o pipeline em uma imagem do Docker, enviam a imagem para o Artifact Registry e fazem upload de um arquivo de especificação do modelo para o Cloud Storage.
    • Para modelos clássicos, os desenvolvedores executam o pipeline, criam um arquivo de modelo e organizam o modelo no Cloud Storage.
  3. Outros usuários enviam uma solicitação ao serviço do Dataflow para executar o modelo.
  4. O Dataflow cria um pipeline com base no modelo. O pipeline pode levar de cinco a sete minutos para começar a ser executado.

Definir permissões do IAM

Os jobs do Dataflow, incluindo aqueles executados a partir de modelos, usam duas contas de serviço do IAM:

  • O serviço do Dataflow usa uma conta de serviço do Dataflow para manipular recursos do Google Cloud, como a criação de VMs.
  • As VMs de workers do Dataflow usam uma conta de serviço de worker para acessar arquivos e outros recursos do seu pipeline. Essa conta de serviço precisa ter acesso a todos os recursos aos quais o job de pipeline faz referência, incluindo a origem e o coletor usados pelo modelo. Para mais informações, consulte Acessar recursos do Google Cloud.

Verifique se essas duas contas de serviço têm os papéis apropriados. Para mais informações, consulte Segurança e permissões do Dataflow.

Requisitos de versão do SDK do Apache Beam

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

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.

Para executar modelos com a Google Cloud CLI, você precisa ter a Google Cloud CLI na versão 138.0.0 ou mais recente.

Estender modelos

Use os modelos de código aberto do Dataflow para criar os seus próprios. Por exemplo, para um modelo que usa uma duração de janela fixa, os dados que chegam fora dela podem ser descartados. Para evitar esse comportamento, use o código do modelo como base e faça as mudanças para invocar a operação .withAllowedLateness.

A seguir