Gravar DAGs do Airflow

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Neste guia, você aprende a escrever um gráfico acíclico dirigido (DAG, na sigla em inglês) do Apache Airflow que é executado em um ambiente do Cloud Composer.

Como o Apache Airflow não oferece isolamento forte de DAGs e tarefas, recomendamos que você use ambientes de produção e de teste separados para evitar a interferência de DAGs. Para mais informações, consulte Como testar DAGs.

Como estruturar um DAG do Airflow

Um DAG do Airflow é definido em um arquivo Python e composto pelos seguintes componentes:

  • Definição de DAG
  • Operadores do Airflow
  • Relações com operadores

Os snippets de código a seguir mostram exemplos de cada componente fora do contexto.

Uma definição de DAG

O exemplo a seguir demonstra uma definição de DAG do Airflow:

import datetime

from airflow import models

default_dag_args = {
    # The start_date describes when a DAG is valid / can be run. Set this to a
    # fixed point in time rather than dynamically, since it is evaluated every
    # time a DAG is parsed. See:
    # https://airflow.apache.org/faq.html#what-s-the-deal-with-start-date
    "start_date": datetime.datetime(2018, 1, 1),
}

# Define a DAG (directed acyclic graph) of tasks.
# Any task you create within the context manager is automatically added to the
# DAG object.
with models.DAG(
    "composer_sample_simple_greeting",
    schedule_interval=datetime.timedelta(days=1),
    default_args=default_dag_args,
) as dag:

Operadores e tarefas

Os operadores do Airflow descrevem o trabalho a ser feito. Uma tarefa é uma instância específica de um operador.

from airflow.operators.bash import BashOperator
from airflow.operators.python import PythonOperator

    def greeting():
        import logging

        logging.info("Hello World!")

    # An instance of an operator is called a task. In this case, the
    # hello_python task calls the "greeting" Python function.
    hello_python = PythonOperator(task_id="hello", python_callable=greeting)

    # Likewise, the goodbye_bash task calls a Bash script.
    goodbye_bash = BashOperator(task_id="bye", bash_command="echo Goodbye.")

Relações de tarefas

As relações de tarefa descrevem a ordem em que o trabalho precisa ser concluído.

# Define the order in which the tasks complete by using the >> and <<
# operators. In this example, hello_python executes before goodbye_bash.
hello_python >> goodbye_bash

Exemplo de fluxo de trabalho completo de DAG em Python

O fluxo de trabalho a seguir é um modelo de DAG completo composto por duas tarefas: hello_python e goodbye_bash:


import datetime

from airflow import models

from airflow.operators.bash import BashOperator
from airflow.operators.python import PythonOperator



default_dag_args = {
    # The start_date describes when a DAG is valid / can be run. Set this to a
    # fixed point in time rather than dynamically, since it is evaluated every
    # time a DAG is parsed. See:
    # https://airflow.apache.org/faq.html#what-s-the-deal-with-start-date
    "start_date": datetime.datetime(2018, 1, 1),
}

# Define a DAG (directed acyclic graph) of tasks.
# Any task you create within the context manager is automatically added to the
# DAG object.
with models.DAG(
    "composer_sample_simple_greeting",
    schedule_interval=datetime.timedelta(days=1),
    default_args=default_dag_args,
) as dag:
    def greeting():
        import logging

        logging.info("Hello World!")

    # An instance of an operator is called a task. In this case, the
    # hello_python task calls the "greeting" Python function.
    hello_python = PythonOperator(task_id="hello", python_callable=greeting)

    # Likewise, the goodbye_bash task calls a Bash script.
    goodbye_bash = BashOperator(task_id="bye", bash_command="echo Goodbye.")

    # Define the order in which the tasks complete by using the >> and <<
    # operators. In this example, hello_python executes before goodbye_bash.
    hello_python >> goodbye_bash

Para mais informações sobre a definição de DAGs do Airflow, consulte o tutorial do Airflow e os conceitos do Airflow.

Operadores do Airflow

Nos exemplos a seguir, você vê alguns operadores conhecidos do Airflow. Para ter uma referência autoritativa dos operadores do Airflow, consulte a referência de operadores e hooks e o índice de provedores.

BashOperator

Use o BashOperator para executar programas da linha de comando.

from airflow.operators import bash

    # Create BigQuery output dataset.
    make_bq_dataset = bash.BashOperator(
        task_id="make_bq_dataset",
        # Executing 'bq' command requires Google Cloud SDK which comes
        # preinstalled in Cloud Composer.
        bash_command=f"bq ls {bq_dataset_name} || bq mk {bq_dataset_name}",
    )

O Cloud Composer executa os comandos fornecidos em um script Bash em um worker do Airflow. O worker é um contêiner do Docker baseado no Debian e inclui vários pacotes.

PythonOperator

Use o PythonOperator para executar o código arbitrário do Python.

O Cloud Composer executa o código Python em um contêiner que inclui pacotes da versão da imagem do Cloud Composer usada no seu ambiente.

Para instalar mais pacotes Python, consulte Como instalar dependências do Python.

Google Cloud Operadores

Para executar tarefas que usam produtos Google Cloud , use os operadoresGoogle Cloud do Airflow. Por exemplo, os operadores do BigQuery consultam e processam dados no BigQuery.

Há muitos outros operadores do Airflow para Google Cloud e serviços individuais fornecidos por Google Cloud. Consulte Google Cloud Operadores para conferir a lista completa.

from airflow.providers.google.cloud.operators import bigquery
from airflow.providers.google.cloud.transfers import bigquery_to_gcs

    bq_recent_questions_query = bigquery.BigQueryInsertJobOperator(
        task_id="bq_recent_questions_query",
        configuration={
            "query": {
                "query": RECENT_QUESTIONS_QUERY,
                "useLegacySql": False,
                "destinationTable": {
                    "projectId": project_id,
                    "datasetId": bq_dataset_name,
                    "tableId": bq_recent_questions_table_id,
                },
            }
        },
        location=location,
    )

EmailOperator

Use o EmailOperator para enviar e-mails de um DAG. Para enviar e-mails de um ambiente do Cloud Composer, configure o ambiente para usar o SendGrid.

from airflow.operators import email

    # Send email confirmation (you will need to set up the email operator
    # See https://cloud.google.com/composer/docs/how-to/managing/creating#notification
    # for more info on configuring the email operator in Cloud Composer)
    email_summary = email.EmailOperator(
        task_id="email_summary",
        to="{{var.value.email}}",
        subject="Sample BigQuery notify data ready",
        html_content="""
        Analyzed Stack Overflow posts data from {min_date} 12AM to {max_date}
        12AM. The most popular question was '{question_title}' with
        {view_count} views. Top 100 questions asked are now available at:
        {export_location}.
        """.format(
            min_date=min_query_date,
            max_date=max_query_date,
            question_title=(
                "{{ ti.xcom_pull(task_ids='bq_read_most_popular', "
                "key='return_value')[0][0] }}"
            ),
            view_count=(
                "{{ ti.xcom_pull(task_ids='bq_read_most_popular', "
                "key='return_value')[0][1] }}"
            ),
            export_location=output_file,
        ),
    )

Notificações sobre falha do operador

Defina email_on_failure como True para enviar uma notificação por e-mail quando um operador no DAG falhar. Para enviar notificações por e-mail de um ambiente do Cloud Composer, você precisa configurar o ambiente para usar o SendGrid.

from airflow import models

default_dag_args = {
    "start_date": yesterday,
    # Email whenever an Operator in the DAG fails.
    "email": "{{var.value.email}}",
    "email_on_failure": True,
    "email_on_retry": False,
    "retries": 1,
    "retry_delay": datetime.timedelta(minutes=5),
    "project_id": project_id,
}

with models.DAG(
    "composer_sample_bq_notify",
    schedule_interval=datetime.timedelta(weeks=4),
    default_args=default_dag_args,
) as dag:

Diretrizes do fluxo de trabalho de DAG

  • Coloque as bibliotecas Python personalizadas em um arquivo ZIP do DAG em um diretório aninhado. Não inclua bibliotecas no nível superior do diretório de DAGs.

    Quando o Airflow verifica a pasta dags/, o Airflow verifica somente DAGs nos módulos Python que estão no nível superior da pasta DAGs e no nível superior de um arquivo ZIP também localizado na pasta dags/ de nível superior. Se o Airflow encontrar um módulo Python em um arquivo ZIP que não contenha as substrings airflow e DAG, ele vai interromper o processamento do arquivo ZIP. O Airflow retorna apenas os DAGs encontrados até esse ponto.

  • Para ter tolerância a falhas, não defina vários objetos de DAG no mesmo módulo do Python.

  • Não use subDAGs. Em vez disso, agrupe tarefas dentro de DAGs.

  • Coloque os arquivos necessários no tempo de análise do DAG na pasta dags/, e não na pasta data/.

  • Implemente testes de unidade para seus DAGs.

  • Teste os DAGs desenvolvidos ou modificados conforme recomendado nas instruções para testar DAGs.

  • A ferramenta de CLI de desenvolvimento local do Composer simplifica o desenvolvimento de DAGs do Apache Airflow para o Cloud Composer 2 executando um ambiente do Airflow localmente. Esse ambiente local do Airflow usa uma imagem de uma versão específica do Cloud Composer 2.

  • Verifique se os DAGs desenvolvidos não aumentam muito os tempos de análise do DAG.

  • As tarefas do Airflow podem falhar por vários motivos. Para evitar falhas de execuções de DAG inteiras, recomendamos ativar as novas tentativas de tarefas. Definir o número máximo de novas tentativas como 0 significa que nenhuma nova tentativa é realizada.

    Recomendamos substituir a opção default_task_retries por um valor para as tentativas de repetição da tarefa, exceto 0. Além disso, é possível definir o parâmetro retries no nível da tarefa.

  • Se você quiser usar a GPU nas tarefas do Airflow, crie um cluster do GKE separado com base em nós que usam máquinas com GPUs. Use GKEStartPodOperator para executar suas tarefas.

  • Evite executar tarefas com uso intenso de CPU e memória no pool de nós do cluster em que outros componentes do Airflow (programadores, workers, servidores da Web) estão em execução. Em vez disso, use KubernetesPodOperator ou GKEStartPodOperator.

  • Ao implantar DAGs em um ambiente, faça o upload apenas dos arquivos que são absolutamente necessários para interpretar e executar DAGs na pasta /dags.

  • Limite o número de arquivos DAG na pasta /dags.

    O Airflow está analisando continuamente DAGs na pasta /dags. A análise é um processo que percorre a pasta DAGs, e o número de arquivos que precisam ser carregados (com as dependências) afeta o desempenho da análise e da programação de tarefas. É muito mais eficiente usar 100 arquivos com 100 DAGs do que 10.000 arquivos com 1 DAG. Portanto, essa otimização é recomendada. Essa otimização é um equilíbrio entre o tempo de análise e a eficiência da criação e do gerenciamento de DAGs.

    Você também pode considerar, por exemplo, implantar 10.000 arquivos DAG, criando 100 arquivos ZIP, cada um contendo 100 arquivos DAG.

    Além das dicas acima, se você tiver mais de 10.000 arquivos DAG, gerar DAGs de maneira programática pode ser uma boa opção. Por exemplo, é possível implementar um único arquivo DAG do Python que gera um número de objetos DAG (por exemplo, 20, 100 objetos DAG).

  • Evite usar operadores do Airflow descontinuados. Em vez disso, use as alternativas atualizadas.

Perguntas frequentes sobre como escrever DAGs

Como diminuir a repetição de código para executar tarefas iguais ou semelhantes em vários DAGs?

Recomendamos definir bibliotecas e wrappers para minimizar a repetição de código.

Como faço para reutilizar código entre arquivos de DAGs?

Coloque as funções utilitárias em uma biblioteca local do Python e importe as funções. É possível referenciar as funções em qualquer DAG localizado na pasta dags/ no bucket do ambiente.

Como diminuo o risco de surgirem diferentes definições?

Por exemplo, tenho duas equipes que querem agregar dados brutos em métricas de receita. Elas escrevem duas tarefas ligeiramente diferentes que fazem a mesma coisa. Defina bibliotecas para trabalhar com os dados de receita. Assim, os implementadores de DAGs precisam esclarecer a definição da receita que está sendo agregada.

Como faço para definir dependências entre DAGs?

Isso depende de como você quer definir a dependência.

Se você tem dois DAGs (DAG A e DAG B) e quer que o DAG B seja acionado após o DAG A, é possível colocar um TriggerDagRunOperator no final do DAG A.

Se o DAG B depender somente de um artefato gerado pelo DAG A, como uma mensagem do Pub/Sub, um sensor funcionará melhor.

Se o DAG B estiver muito integrado ao DAG A, talvez seja possível mesclar os dois em um único DAG.

Como transmito códigos exclusivos de execução para um DAG e às tarefas dele?

Por exemplo, quero transmitir caminhos de arquivo e nomes de cluster do Dataproc.

É possível retornar str(uuid.uuid4()) em PythonOperator para gerar um ID exclusivo aleatório. Isso coloca o ID em XComs para que você possa consultá-lo em outros operadores por meio de campos com modelo.

Antes de gerar um uuid, considere se um ID específico do DagRun seria mais importante. Também é possível referenciar esses IDs nas substituições por meio de macros.

Como separar tarefas em um DAG?

Cada tarefa precisa ser uma unidade de trabalho idempotente. Consequentemente, evite encapsular um fluxo de trabalho de várias etapas em uma única tarefa, como um programa complexo em execução em um PythonOperator.

É recomendado definir várias tarefas em um único DAG para agregar dados de várias origens?

Por exemplo, tenho várias tabelas com dados brutos e quero criar agregações diárias para cada uma delas. As tarefas não são dependentes entre si. Preciso criar uma tarefa e um DAG para cada tabela ou gerar um DAG geral?

Se estiver tudo bem para você que cada tarefa tenha as mesmas propriedades no nível do DAG, como schedule_interval, defina várias tarefas em um único DAG. Caso contrário, para diminuir a repetição de código, é possível gerar muitos DAGs em um único módulo Python. Basta colocá-los nos globals() do módulo.

Como limitar o número de tarefas simultâneas em execução em um DAG?

Por exemplo, quero evitar exceder os limites/cotas de uso da API ou impedir a execução de muitos processos simultâneos.

É possível definir pools do Airflow na interface da Web do Airflow e associar tarefas a pools atuais nos DAGs.

Perguntas frequentes sobre o uso de operadores

Devo usar DockerOperator?

Não recomendamos o uso de DockerOperator, a menos que ele seja usado para iniciar contêineres em uma instalação remota do Docker (não dentro do cluster de um ambiente). Em um ambiente do Cloud Composer, o operador não tem acesso aos daemons do Docker.

Em vez disso, use KubernetesPodOperator ou GKEStartPodOperator. Esses operadores iniciam pods do Kubernetes em clusters do Kubernetes ou do GKE, respectivamente. Não recomendamos iniciar pods no cluster de um ambiente, porque isso pode levar à concorrência de recursos.

Devo usar SubDagOperator?

Não recomendamos o uso de SubDagOperator.

Use alternativas, conforme sugerido em Agrupar tarefas.

Posso executar o código do Python somente em PythonOperators para separar completamente os operadores Python?

Dependendo do seu objetivo, você tem algumas opções.

Se a única preocupação for manter dependências separadas do Python, use PythonVirtualenvOperator.

Considere usar KubernetesPodOperator. Esse operador permite definir pods do Kubernetes e executá-los em outros clusters.

Como adiciono pacotes personalizados não PyPI ou binários?

É possível instalar pacotes hospedados em repositórios de pacotes particulares.

Como faço para transmitir argumentos uniformemente para um DAG e as tarefas dele?

Use o suporte integrado do Airflow para modelos Jinja para transmitir argumentos que podem ser usados em campos com modelo.

Quando ocorre a substituição do modelo?

A substituição de modelo ocorre nos workers do Airflow pouco antes da função pre_execute de um operador ser chamada. Na prática, isso significa que os modelos não são substituídos até um pouco antes de uma tarefa ser executada.

Como sei quais argumentos do operador são compatíveis com a substituição do modelo?

Os argumentos do operador que são compatíveis com a substituição do modelo Jinja2 são explicitamente marcados como tal.

Procure o campo template_fields na definição do operador, que contém uma lista de nomes de argumentos que passam por substituição de modelo.

Por exemplo, consulte o BashOperator, que é compatível com modelos para os argumentos bash_command e env.

Operadores do Airflow descontinuados e removidos

Os operadores do Airflow listados na tabela a seguir foram descontinuados:

  • Evite usar esses operadores nos seus DAGs. Em vez disso, use os operadores de substituição atualizados fornecidos.

  • Se um operador estiver listado como removido, ele já estará indisponível em uma das versões lançadas do Cloud Composer 2.

  • Se um operador estiver listado como planejado para remoção, ele será descontinuado e removido em uma versão futura do Cloud Composer 2.

  • Se um operador estiver listado como já removido nos provedores mais recentes do Google, ele será removido na versão mais recente do pacote apache-airflow-providers-google. Ao mesmo tempo, o Cloud Composer ainda usa a versão desse pacote em que o operador ainda não foi removido.

Operador descontinuado Status Operador de substituição Substituição disponível em
CreateAutoMLTextTrainingJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google SupervisedFineTuningTrainOperator composer-2.9.5-airflow-2.9.3
composer-2.9.5-airflow-2.9.1
GKEDeploymentHook Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GKEKubernetesHook composer-2.7.1-airflow-2.7.3
GKECustomResourceHook Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GKEKubernetesHook composer-2.7.1-airflow-2.7.3
GKEPodHook Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GKEKubernetesHook composer-2.7.1-airflow-2.7.3
GKEJobHook Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GKEKubernetesHook composer-2.7.1-airflow-2.7.3
GKEPodAsyncHook Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GKEKubernetesAsyncHook composer-2.7.1-airflow-2.7.3
SecretsManagerHook Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GoogleCloudSecretManagerHook composer-2.8.3-airflow-2.7.3
BigQueryExecuteQueryOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google BigQueryInsertJobOperator Todas as versões
BigQueryPatchDatasetOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google BigQueryUpdateDatasetOperator Todas as versões
DataflowCreateJavaJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google beam.BeamRunJavaPipelineOperator Todas as versões
DataflowCreatePythonJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google beam.BeamRunPythonPipelineOperator Todas as versões
DataprocSubmitPigJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataprocSubmitJobOperator Todas as versões
DataprocSubmitHiveJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataprocSubmitJobOperator Todas as versões
DataprocSubmitSparkSqlJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataprocSubmitJobOperator Todas as versões
DataprocSubmitSparkJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataprocSubmitJobOperator Todas as versões
DataprocSubmitHadoopJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataprocSubmitJobOperator Todas as versões
DataprocSubmitPySparkJobOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataprocSubmitJobOperator Todas as versões
BigQueryTableExistenceAsyncSensor Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google BigQueryTableExistenceSensor composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
BigQueryTableExistencePartitionAsyncSensor Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google BigQueryTablePartitionExistenceSensor composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
CloudComposerEnvironmentSensor Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google CloudComposerCreateEnvironmentOperator, CloudComposerDeleteEnvironmentOperator, CloudComposerUpdateEnvironmentOperator composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
GCSObjectExistenceAsyncSensor Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GCSObjectExistenceSensor composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
GoogleAnalyticsHook Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GoogleAnalyticsAdminHook composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
GoogleAnalyticsListAccountsOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GoogleAnalyticsAdminListAccountsOperator composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
GoogleAnalyticsGetAdsLinkOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GoogleAnalyticsAdminGetGoogleAdsLinkOperator composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
GoogleAnalyticsRetrieveAdsLinksListOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GoogleAnalyticsAdminListGoogleAdsLinksOperator composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
GoogleAnalyticsDataImportUploadOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GoogleAnalyticsAdminCreateDataStreamOperator composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
GoogleAnalyticsDeletePreviousDataUploadsOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google GoogleAnalyticsAdminDeleteDataStreamOperator composer-2.3.0-airflow-2.5.1, composer-2.3.0-airflow-2.4.3
DataPipelineHook Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataflowHook composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
CreateDataPipelineOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataflowCreatePipelineOperator composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
RunDataPipelineOperator Descontinuado, remoção planejada, já removido nos provedores mais recentes do Google DataflowRunPipelineOperator composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
AutoMLDatasetLink Descontinuado, remoção planejada TranslationLegacyDatasetLink composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
AutoMLDatasetListLink Descontinuado, remoção planejada TranslationDatasetListLink composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
AutoMLModelLink Descontinuado, remoção planejada TranslationLegacyModelLink composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
AutoMLModelTrainLink Descontinuado, remoção planejada TranslationLegacyModelTrainLink composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
AutoMLModelPredictLink Descontinuado, remoção planejada TranslationLegacyModelPredictLink composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
AutoMLBatchPredictOperator Descontinuado, remoção planejada vertex_ai.batch_prediction_job composer-2.9.8-airflow-2.9.3
AutoMLPredictOperator Descontinuado, remoção planejada vertex_aigenerative_model. TextGenerationModelPredictOperator, translate.TranslateTextOperator composer-2.8.3-airflow-2.7.3
PromptLanguageModelOperator Descontinuado, remoção planejada TextGenerationModelPredictOperator composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
GenerateTextEmbeddingsOperator Descontinuado, remoção planejada TextEmbeddingModelGetEmbeddingsOperator composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
PromptMultimodalModelOperator Descontinuado, remoção planejada GenerativeModelGenerateContentOperator composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
PromptMultimodalModelWithMediaOperator Descontinuado, remoção planejada GenerativeModelGenerateContentOperator composer-2.8.6-airflow-2.9.1
composer-2.8.6-airflow-2.7.3
DataflowStartSqlJobOperator Descontinuado, remoção planejada DataflowStartYamlJobOperator composer-2.9.5-airflow-2.9.3
composer-2.9.5-airflow-2.9.1
LifeSciencesHook Descontinuado, remoção planejada Hooks dos operadores de lote do Google Cloud A ser anunciado
DataprocScaleClusterOperator Descontinuado, remoção planejada DataprocUpdateClusterOperator A ser anunciado
MLEngineStartBatchPredictionJobOperator Descontinuado, remoção planejada CreateBatchPredictionJobOperator A ser anunciado
MLEngineManageModelOperator Descontinuado, remoção planejada MLEngineCreateModelOperator, MLEngineGetModelOperator A ser anunciado
MLEngineGetModelOperator Descontinuado, remoção planejada GetModelOperator A ser anunciado
MLEngineDeleteModelOperator Descontinuado, remoção planejada DeleteModelOperator A ser anunciado
MLEngineManageVersionOperator Descontinuado, remoção planejada MLEngineCreateVersion, MLEngineSetDefaultVersion, MLEngineListVersions, MLEngineDeleteVersion A ser anunciado
MLEngineCreateVersionOperator Descontinuado, remoção planejada Parâmetro "parent_model" para operadores da VertexAI A ser anunciado
MLEngineSetDefaultVersionOperator Descontinuado, remoção planejada SetDefaultVersionOnModelOperator A ser anunciado
MLEngineListVersionsOperator Descontinuado, remoção planejada ListModelVersionsOperator A ser anunciado
MLEngineDeleteVersionOperator Descontinuado, remoção planejada DeleteModelVersionOperator A ser anunciado
MLEngineStartTrainingJobOperator Descontinuado, remoção planejada CreateCustomPythonPackageTrainingJobOperator A ser anunciado
MLEngineTrainingCancelJobOperator Descontinuado, remoção planejada CancelCustomTrainingJobOperator A ser anunciado
LifeSciencesRunPipelineOperator Descontinuado, remoção planejada Operadores do Google Cloud Batch A ser anunciado
MLEngineCreateModelOperator Descontinuado, remoção planejada operador correspondente da Vertex AI A ser anunciado

A seguir