Middle
Como transferir grandes dados entre tarefas no Airflow?
sobes.tech IA
Resposta da IA
No Airflow, não é recomendado usar XCom para transferir grandes volumes de dados entre tarefas, pois é destinado a mensagens pequenas (normalmente até 48 KB). Em vez disso, é melhor usar armazenamento externo:
- Guardar dados em armazenamento na nuvem (S3, GCS, Azure Blob) ou bases de dados.
- Passar entre tarefas links (caminhos, chaves) para esses dados através do XCom.
Essa abordagem permite trabalhar eficientemente com grandes volumes de dados, evitando sobrecarregar os metadados do Airflow.
Exemplo:
# Na primeira tarefa, guardar dados no S3 e passar a chave
s3_key = upload_to_s3(data)
ti.xcom_push(key='s3_key', value=s3_key)
# Na segunda tarefa, obter a chave e carregar os dados
s3_key = ti.xcom_pull(key='s3_key')
data = download_from_s3(s3_key)