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

extração de dados não funciona

fiz todo o passo a passo do curso, tudo funcionou

no final, copiei o código do arquivo "dados_climaticos.py", alterando apenas a data, o endereço e a chave da API

no entanto, na hora de executar o DAG, ele apenas cria a pasta e dá erro na hora de extrair os dados

se eu executo o arquivo "extrai_infos_clima.py" ele funciona normalmente

segue print

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

como resolver?

segue descrição do erro (log do airflow):

[2024-07-11, 20:46:08 UTC] {taskinstance.py:1569} INFO - Exporting the following env vars:
AIRFLOW_CTX_DAG_OWNER=airflow
AIRFLOW_CTX_DAG_ID=dados_climaticos
AIRFLOW_CTX_TASK_ID=extrai_dados
AIRFLOW_CTX_EXECUTION_DATE=2024-06-24T00:00:00+00:00
AIRFLOW_CTX_TRY_NUMBER=1
AIRFLOW_CTX_DAG_RUN_ID=scheduled__2024-06-24T00:00:00+00:00
[2024-07-11, 20:46:09 UTC] {taskinstance.py:1889} ERROR - Task failed with exception
Traceback (most recent call last):
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/airflow/operators/python.py", line 171, in execute
    return_value = self.execute_callable()
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/airflow/operators/python.py", line 189, in execute_callable
    return self.python_callable(*self.op_args, **self.op_kwargs)
  File "/home/gabriel/Documents/airflowalura/dags/dados_climaticos.py", line 27, in extrai_dados
    dados = pd.read_csv(URL)
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 1026, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 620, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 1620, in __init__
    self._engine = self._make_engine(f, self.engine)
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/parsers/readers.py", line 1880, in _make_engine
    self.handles = get_handle(
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/common.py", line 728, in get_handle
    ioargs = _get_filepath_or_buffer(
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/common.py", line 384, in _get_filepath_or_buffer
    with urlopen(req_info) as req:
  File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/common.py", line 289, in urlopen
    return urllib.request.urlopen(*args, **kwargs)
  File "/usr/lib/python3.9/urllib/request.py", line 214, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.9/urllib/request.py", line 523, in open
    response = meth(req, response)
  File "/usr/lib/python3.9/urllib/request.py", line 632, in http_response
    response = self.parent.error(
  File "/usr/lib/python3.9/urllib/request.py", line 561, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.9/urllib/request.py", line 494, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.9/urllib/request.py", line 641, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 401: 
[2024-07-11, 20:46:09 UTC] {taskinstance.py:1395} INFO - Marking task as FAILED. dag_id=dados_climaticos, task_id=extrai_dados, execution_date=20240624T000000, start_date=20240711T234608, end_date=20240711T234609
[2024-07-11, 20:46:09 UTC] {standard_task_runner.py:92} ERROR - Failed to execute job 21 for task extrai_dados (HTTP Error 401: ; 5685)
[2024-07-11, 20:46:09 UTC] {local_task_job.py:156} INFO - Task exited with return code 1
[2024-07-11, 20:46:09 UTC] {local_task_job.py:273} INFO - 0 downstream tasks scheduled from follow-on schedule check
[2024-07-11, 20:48:40 UTC] {taskinstance.py:1159} INFO - Dependencies all met for <TaskInstance: dados_climaticos.extrai_dados scheduled__2024-06-24T00:00:00+00:00 [queued]>
[2024-07-11, 20:48:40 UTC] {taskinstance.py:1159} INFO - Dependencies all met for <TaskInstance: dados_climaticos.extrai_dados scheduled__2024-06-24T00:00:00+00:00 [queued]>
[2024-07-11, 20:48:40 UTC] {taskinstance.py:1356} INFO -
3 respostas
solução!

Olá Gx, tudo bem?

Pelo log de erro, o problema está relacionado à autenticação na API que você está tentando acessar. O erro HTTP Error 401 indica que a solicitação não foi autorizada, o que geralmente significa que há um problema com a chave da API ou com a forma como ela está sendo usada.

Portanto, verifique se a chave da API está correta e ativa. Além disso, verifique se a URL da API está correta e que não há erros de digitação. Como também se está passando a chave da API corretamente no código.

Espero ter ajudado.

Caso o problema persista, fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado pela resposta, Monalisa, mas não deu certo... a API está ativa e funcionando, tento que a extração de dados funciona com o código que é passado no início do curso.

Como tive outros problemas, eu reinstalei toda a VM. Quando fui executar o Airflow, ele acusou um erro em que pedia a instalação do kubernetes, então abri um novo terminal e instalei com o código que ele pediu.

Iniciei de novo o Airflow e rodei a DAG, mas ela ainda cria a pasta, mas não extrai os dados.

O erro do log agora é o seguinte:

[2024-07-23, 12:51:27 UTC] {taskinstance.py:1889} ERROR - Task failed with exception Traceback (most recent call last): File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/airflow/operators/python.py", line 171, in execute return_value = self.execute_callable() File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/airflow/operators/python.py", line 189, in execute_callable return self.python_callable(*self.op_args, **self.op_kwargs) File "/home/gabriel/Documents/airflowalura/dags/dados_climaticos.py", line 31, in extrai_dados dados.to_csv(file_path + 'dados_brutos.csv') File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/util/_decorators.py", line 333, in wrapper return func(*args, **kwargs) File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/core/generic.py", line 3967, in to_csv return DataFrameRenderer(formatter).to_csv( File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/formats/format.py", line 1014, in to_csv csv_formatter.save() File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/formats/csvs.py", line 251, in save with get_handle( File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/common.py", line 749, in get_handle check_parent_directory(str(handle)) File "/home/gabriel/Documents/airflowalura/venv/lib/python3.9/site-packages/pandas/io/common.py", line 616, in check_parent_directory raise OSError(rf"Cannot save file into a non-existent directory: '{parent}'") OSError: Cannot save file into a non-existent directory: 'home/gabriel/Documents/airflowalura/semana=2024-07-01' [2024-07-23, 12:51:27 UTC] {taskinstance.py:1395} INFO - Marking task as FAILED. dag_id=dados_climaticos, task_id=extrai_dados, execution_date=20240624T000000, start_date=20240723T155126, end_date=20240723T155127 [2024-07-23, 12:51:27 UTC] {standard_task_runner.py:92} ERROR - Failed to execute job 7 for task extrai_dados (Cannot save file into a non-existent directory: 'home/gabriel/Documents/airflowalura/semana=2024-07-01'; 9888) [2024-07-23, 12:51:27 UTC] {local_task_job.py:156} INFO - Task exited with return code 1 [2024-07-23, 12:51:27 UTC] {local_task_job.py:273} INFO - 0 downstream tasks scheduled from follow-on schedule check [2024-07-23, 12:56:48 UTC] {taskinstance.py:1159} INFO - Dependencies all met for <TaskInstance: dados_climaticos.extrai_dados scheduled__2024-06-24T00:00:00+00:00 [queued]> [2024-07-23, 12:56:48 UTC] {taskinstance.py:1159} INFO - Dependencies all met for <TaskInstance: dados_climaticos.extrai_dados scheduled__2024-06-24T00:00:00+00:00 [queued]> [2024-07-23, 12:56:48 UTC] {taskinstance.py:1356} INFO -

Pode me ajudar?

Consegui resolver! Faltava uma barra antes do "home" no código da DAG, na parte do endereço em que os dados iriam ser salvos. Obrigado.