Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

DAG NÃO CARREGA NO AIRFLOW

Oiii, queria uma ajuda.

Eu fiz tudo que precisava, mas ainda continuo sem conseguir fazer com que o DAG apareça no Airflow como no exercício. Eu faço tudo - e até substituí o days_ago por pendulum adicionando o local e o timezone como pedido, aprendi a chamar a função sozinho em baixo.. showw, maass: ainda nada.

from airflow.models import DAG
from airflow.utils.timezone import pendulum
from airflow.operators.empty import EmptyOperator
from airflow.operators.bash import BashOperator

local_tz = pendulum.timezone("America/Sao_Paulo")

with DAG(
    'meu_primeiro_dag',
    start_date=pendulum.today('UTC').add(days=-1).replace(tzinfo=local_tz),
    schedule_interval='@daily'

) as dag:
    tarefa_1 = EmptyOperator(task_id='tarefa_1')
    tarefa_2 = EmptyOperator(task_id='tarefa_2')
    tarefa_3 = EmptyOperator(task_id='tarefa_3')
    tarefa_4 = BashOperator(
        task_id='cria_pasta',
        bash_command= "mkdir -p /igorrodrigues/Documents/airflowalura/pasta",
    )

    tarefa_1 >> [tarefa_2, tarefa_3]
    tarefa_3 >> [tarefa_4]

Ele aparece o seguintes erros:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Alguma ideia do que pode ser? O que estou errando?

Eu tentei:

1) Mudar esse days_ago para pendulum e chamar em baixo da forma correta (pedi ajuda ao chatGPT, rsrsrs)

2) Chequei para ver se a pasta que estava pedindo para enviar era a mesma em que estava o airflow (aparentemente está eu até dupliquei sem querer a pasta lá pra dentro e mesmo depois de colocar a pasta em DOCUMENTS certinho, ainda nada.

3) Refatorei e refiz a linha onde coloco a priorização das tarefas.

Será que pode ser porque tem o EmptyOperator e ele tá vazio mesmo? Era para ter alguma coisa? Mas eu vou exatamente até onde vai o exercício então não faria sentido.

Obrigadaço pela ajuda!

4 respostas

Pelo que vi você não importou o pendulum, e sim uma dependência dentro do airflow.

Eu consegui fazer rodar importando o pendulum:

import pendulum

E setando o start_date da seguinte forma:

start_date=pendulum.now().subtract(days=1)

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi Gustavo, tudo bem?

primeiramente, brigado pela resposta a minha pergunta.

Então, eu não consegui, e fiz alguns procedimentos a mais na comunidade de dados da minha empresa para ver se consigo resolver, mas parece que, pelo que o dev e colega disse: o problema não está no código. Parece que alguma coisa está ocorrendo no airflow (na interface, dentro das pastas do airflow) que não está conectando e não está rolando. Ainda não consegui resolver. Fui lendo a documentação e tentando algumas coisas e ainda não está rolando.

Outro ponto que notei agora e que importa muito: seu pathing está errado:

tarefa_4 = BashOperator(
        task_id='cria_pasta',
        bash_command= "mkdir -p /igorrodrigues/Documents/airflowalura/pasta",

Tente alterar o caminho após bash_command para:

"mkdir -p '/igorrodrigues/Documents/airflowalura/pasta'"

Você não colocou o caminho entre aspas simples, apenas a linha entre pastas duplas.

solução!

Oi Gustavo!

Então, consegui resolver, porém não por aqui. O que fiz?

O airflow não estava entendendo onde estavam os arquivos, então ele não aparecia no UI. Com isso, ao invés de fazer todo o caminho que estava, joguei para o home/airflow/dags (dentro da pasta onde foi instalado o airflow, criei uma pasta dags e entrei no UI e assim consegui!

Eu identifiquei entrando no UI // Admin // configurations, que ele estava rodando ali dentro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Colocando a dag nesse caminho, aí sim rolou!