Componentes do Dataflow

Os componentes do Dataflow permitem enviar jobs do Apache Beam para execução no Dataflow. No Dataflow, um recurso Job representa um job do Dataflow.

O SDK de componentes de pipeline do Google Cloud inclui os seguintes operadores para criar recursos Job e monitorar a execução deles:

Além disso, o SDK de componentes de pipeline do Google Cloud inclui o componente WaitGcpResourcesOp, que pode ser usado para reduzir custos durante a execução de jobs do Dataflow.

DataflowFlexTemplateJobOp

O operador DataflowFlexTemplateJobOp permite criar um componente de pipelines da Vertex AI para iniciar um modelo Flex do Dataflow.

No Dataflow, um recurso LaunchFlexTemplateParameter representa um modelo flexível para iniciar. Esse componente cria um recurso LaunchFlexTemplateParameter e solicita que o Dataflow crie um job iniciando o modelo. Se o modelo for lançado com sucesso, o Dataflow retornará um recurso Job.

O componente de modelo flexível do Dataflow termina ao receber um recurso Job do Dataflow. O componente gera um job_id como um proto gcp_resources serializado. É possível transmitir esse parâmetro para um componente WaitGcpResourcesOp para aguardar a conclusão do job do Dataflow.

DataflowPythonJobOp

O operador DataflowPythonJobOp permite criar um componente de pipelines da Vertex AI que prepara dados enviando um job do Apache Beam baseado em Python para o Dataflow para execução.

O código Python do job do Apache Beam é executado com o Dataflow Runner. Quando você executa o pipeline com o serviço Dataflow, o executor faz upload do código executável no local especificado pelo parâmetro python_module_path e dependências em um bucket do Cloud Storage (especificado por temp_location). Em seguida, cria um job do Dataflow que executa o pipeline do Apache Beam em recursos gerenciados no Google Cloud.

Para saber mais sobre o executor do Dataflow, consulte Como usar o executor do Dataflow.

O componente Python do Dataflow aceita uma lista de argumentos transmitidos pelo executor do Beam para o código do Apache Beam. Esses argumentos são especificados por args. Por exemplo, é possível usar esses argumentos para definir o apache_beam.options.pipeline_options para especificar uma rede, uma sub-rede, uma chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês) e outras opções ao executar jobs do Dataflow.

WaitGcpResourcesOp

Os jobs do Dataflow podem levar muito tempo para serem concluídos. Os custos de um contêiner busy-wait, que inicia o job do Dataflow e aguarda o resultado, podem ficar caros.

Depois de enviar o job do Dataflow pelo executor do Beam, o componente DataflowPythonJobOp é encerrado imediatamente e retorna um parâmetro de saída job_id como um proto gcp_resources serializado. É possível transmitir esse parâmetro a um componente WaitGcpResourcesOp para aguardar a conclusão do job do Dataflow.

    dataflow_python_op = DataflowPythonJobOp(
        project=project_id,
        location=location,
        python_module_path=python_file_path,
        temp_location = staging_dir,
        requirements_file_path = requirements_file_path,
        args = ['--output', OUTPUT_FILE],
    )
  
    dataflow_wait_op =  WaitGcpResourcesOp(
        gcp_resources = dataflow_python_op.outputs["gcp_resources"]
    )

O Vertex AI Pipelines otimiza o WaitGcpResourcesOp para executá-lo de forma sem servidor e não tem custo.

Se DataflowPythonJobOp e DataflowFlexTemplateJobOp não atenderem aos requisitos, você também poderá criar seu próprio componente que gera o parâmetro gcp_resources e o transmite para o componente WaitGcpResourcesOp.

Para mais informações sobre como criar o parâmetro de saída gcp_resources, consulte Escreva um componente para mostrar um link do console do Google Cloud.

Referência da API

Tutoriais

Histórico de versões e notas da versão

Para saber mais sobre o histórico de versões e as mudanças no SDK dos componentes do Google Cloud Pipeline, consulte as Notas de lançamento do SDK dos componentes do Google Cloud Pipeline.

Contatos do suporte técnico

Se você tiver alguma dúvida, entre em contato com kubeflow-pipelines-components@google.com.