Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)
Nesta página, explicamos como ativar a integração da linhagem de dados no Airflow Gerenciado.
Sobre a integração da linhagem de dados
A linhagem de dados é um recurso do Knowledge Catalog que rastreia como os dados se movimentam pelos sistemas: de onde vêm, para onde vão e quais transformações são aplicadas a eles.
O Airflow Gerenciado usa o pacote apache-airflow-providers-openlineage
para gerar os eventos de linhagem enviados à
API Data Lineage.
Esse pacote já está instalado em ambientes do Airflow Gerenciado. Se você instalar outra versão desse pacote, a lista de operadores compatíveis poderá mudar. Recomendamos fazer isso apenas se necessário e manter a versão pré-instalada do pacote.
A linhagem de dados está disponível para ambientes nas mesmas regiões do Knowledge Catalog que oferecem suporte a ela.
Se a linhagem de dados estiver ativada no seu ambiente do Serviço Gerenciado para Apache Airflow, o Serviço Gerenciado para Apache Airflow vai informar informações de linhagem à API Data Lineage para DAGs que usam qualquer um dos operadores compatíveis. Também é possível enviar eventos de linhagem personalizados se quiser informar a linhagem de um operador que não é compatível.
Você pode acessar informações de linhagem com:
- API Data Lineage
- Gráficos de linhagem para entradas compatíveis no Knowledge Catalog. Para mais informações, consulte Gráficos de linhagem na documentação do Knowledge Catalog.
Quando você cria um ambiente, a integração da linhagem de dados é ativada automaticamente se as seguintes condições forem atendidas:
A API Data Lineage está ativada no seu projeto. Para mais informações, consulte Como ativar a API Data Lineage na documentação do Knowledge Catalog.
Um back-end de linhagem personalizado não está configurado no Airflow.
É possível desativar a integração da linhagem de dados ao criar um ambiente.
Para um ambiente atual, é possível ativar ou desativar a integração da linhagem de dados a qualquer momento.
Considerações sobre recursos no Serviço gerenciado para Apache Airflow
O Airflow Gerenciado faz uma chamada RPC para criar eventos de linhagem nos seguintes casos:
- Quando uma tarefa do Airflow começa ou termina
- Quando uma execução de DAG começa ou termina
Para detalhes sobre essas entidades, consulte o modelo de informações de linhagem e a referência da API Lineage na documentação do Knowledge Catalog.
O tráfego de linhagem emitido está sujeito a cotas na API Data Lineage. O Airflow Gerenciado consome a cota de gravação.
Os preços associados ao processamento de dados de linhagem estão sujeitos aos preços de linhagem. Consulte considerações sobre a linhagem de dados.
Considerações sobre desempenho no Serviço gerenciado para Apache Airflow
A linhagem de dados é informada ao final da execução da tarefa do Airflow. Em média, a geração de relatórios de linhagem de dados leva de 1 a 2 segundos.
Isso não afeta o desempenho da tarefa em si: as tarefas do Airflow não falham se a linhagem não for informada à API Lineage. Não há impacto na lógica principal do operador, mas toda a instância da tarefa é executada um pouco mais para considerar os dados de linhagem de relatórios.
Um ambiente que informa a linhagem de dados terá um pequeno aumento nos custos associados devido ao tempo extra necessário para gerar o relatório.
Compliance
A linhagem de dados oferece diferentes níveis de suporte para recursos como o VPC Service Controls. Analise as considerações sobre linhagem de dados para garantir que os níveis de suporte correspondam aos requisitos do seu ambiente.
Antes de começar
Esse recurso oferece suporte variado à compliance. Primeiro, revise as considerações de recursos específicas do Serviço Gerenciado para Apache Airflow e as considerações de recursos de linhagem de dados.
Todas as permissões necessárias do IAM para linhagem de dados já estão incluídas na função de worker do Composer (
roles/composer.worker). Esse papel é o papel obrigatório para contas de serviço do ambiente.Para mais informações sobre permissões de linhagem de dados, consulte papéis e permissões de linhagem na documentação do Knowledge Catalog.
Verificar se um operador é compatível
O suporte à linhagem de dados é fornecido pelo pacote do provedor em que o operador está localizado:
Confira os changelogs do pacote do provedor em que o operador está localizado para entradas que adicionam suporte ao OpenLineage.
Por exemplo, o BigQueryToBigQueryOperator é compatível com o OpenLineage a partir da
apache-airflow-providers-googleversão 11.0.0.Verifique a versão do pacote de provedor usado pelo seu ambiente. Para isso, consulte a lista de pacotes pré-instalados para a build do Airflow usada no seu ambiente. Também é possível instalar uma versão diferente do pacote no seu ambiente.
Além disso, a página Classes compatíveis na documentação do apache-airflow-providers-openlineage lista os operadores compatíveis mais recentes.
Configurar a integração da linhagem de dados
A integração da linhagem de dados para o Serviço Gerenciado para Apache Airflow é gerenciada por ambiente. Isso significa que a ativação do recurso exige duas etapas:
- Ative a API Data Lineage no projeto.
- Ative a integração da linhagem de dados em um ambiente específico do Serviço Gerenciado para Apache Airflow.
Ativar a linhagem de dados no Serviço gerenciado para Apache Airflow
Console
No console Google Cloud , acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Selecione a guia Configuração do ambiente.
Na seção Integração da linhagem do Knowledge Catalog, clique em Editar.
No painel Integração com a linhagem do Knowledge Catalog, selecione Ativar a integração com a linhagem do Knowledge Catalog.
Clique em Salvar.
gcloud
Use o argumento --enable-cloud-data-lineage-integration.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--enable-cloud-data-lineage-integration
Substitua:
ENVIRONMENT_NAME: o nome do ambiente;LOCATION: a região em que o ambiente está localizado.
Exemplo:
gcloud composer environments update example-environment \
--location us-central1 \
--enable-cloud-data-lineage-integration
Desativar a linhagem de dados no Serviço gerenciado para Apache Airflow
Desativar a integração de linhagem em um ambiente do Serviço gerenciado para Apache Airflow não desativa a API Data Lineage. Se quiser desativar completamente os relatórios de linhagem do seu projeto, desative também a API Data Lineage. Veja como desativar serviços.
Console
No console Google Cloud , acesse a página Ambientes.
Na lista de ambientes, clique no nome do seu ambiente. A página Detalhes do ambiente é aberta.
Selecione a guia Configuração do ambiente.
Na seção Integração da linhagem do Knowledge Catalog, clique em Editar.
No painel Integração com a linhagem do Knowledge Catalog, selecione Desativar a integração com a linhagem do Knowledge Catalog.
Clique em Salvar.
gcloud
Use o argumento --disable-cloud-data-lineage-integration.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--disable-cloud-data-lineage-integration
Substitua:
ENVIRONMENT_NAME: o nome do ambiente;LOCATION: a região em que o ambiente está localizado.
Exemplo:
gcloud composer environments update example-environment \
--location us-central1 \
--disable-cloud-data-lineage-integration
Enviar eventos de linhagem em operadores compatíveis
Se a linhagem de dados estiver ativada, os operadores compatíveis vão enviar eventos de linhagem automaticamente. Não é necessário mudar o código do DAG.
Por exemplo, ao executar a seguinte tarefa:
task = BigQueryInsertJobOperator(
task_id='snapshot_task',
dag=dag,
location='<dataset-location>',
configuration={
'query': {
'query': 'SELECT * FROM dataset.tableA',
'useLegacySql': False,
'destinationTable': {
'project_id': 'example-project',
'dataset_id': 'dataset',
'table_id': 'tableB',
},
}
},
)
Resulta na criação do seguinte gráfico de linhagem na interface do Knowledge Catalog:
Enviar eventos de linhagem personalizados
É possível enviar eventos de linhagem personalizados se quiser gerar relatórios de linhagem para um operador que não é compatível com a geração de relatórios de linhagem automatizada.
Por exemplo, para enviar eventos personalizados com:
- BashOperator: modifique o parâmetro
inletsououtletsna definição da tarefa. - PythonOperator: modifique o parâmetro
task.inletsoutask.outletsna definição da tarefa. - Você pode usar
AUTOpara o parâmetroinlets. Isso define o valor igual aooutletsda tarefa upstream.
O exemplo a seguir demonstra o uso de entradas e saídas:
from airflow.composer.data_lineage.entities import BigQueryTable
from airflow.lineage import AUTO
...
bash_task = BashOperator(
task_id="bash_task",
dag=dag,
bash_command="sleep 0",
inlets=[
BigQueryTable(
project_id="example-project",
dataset_id="dataset",
table_id="table1",
)
],
outlets=[
BigQueryTable(
project_id="example-project",
dataset_id="dataset",
table_id="table2",
)
],
)
def _python_task(task):
print("Python task")
python_task = PythonOperator(
task_id="python_task",
dag=dag,
python_callable=_python_task,
inlets=[
AUTO,
BigQueryTable(
project_id="example-project",
dataset_id="dataset",
table_id="table3",
),
],
outlets=[
BigQueryTable(
project_id="example-project",
dataset_id="dataset",
table_id="table4",
)
],
)
bash_task >> python_task
Como resultado, o seguinte gráfico de linhagem é criado na interface do Knowledge Catalog:
Conferir registros de linhagem no Serviço gerenciado para Apache Airflow
É possível inspecionar os registros relacionados à linhagem de dados usando o link na página Configuração do ambiente, na seção Integração da linhagem do Knowledge Catalog.
Solução de problemas
Se os dados de linhagem não forem informados à API Lineage ou não aparecerem no Knowledge Catalog, tente as seguintes etapas de solução de problemas:
- Verifique se a API Data Lineage está ativada no projeto do seu ambiente do Serviço gerenciado para Apache Airflow.
- Verifique se a integração do rastreamento da linhagem de dados está ativada no ambiente do Serviço Gerenciado para Apache Airflow.
- Verifique se o operador que você usa está incluído no suporte de relatórios de linhagem automatizada. Para mais informações, consulte Operadores do Airflow compatíveis.
- Verifique os registros de linhagem no Serviço gerenciado para Apache Airflow em busca de possíveis problemas.