Sobes.tech
Middle

Jak przesyłać duże dane między zadaniami w Airflow?

sobes.tech AI

Odpowiedź od AI

W Airflow nie zaleca się używania XCom do przesyłania dużych danych między zadaniami, ponieważ jest on przeznaczony do małych wiadomości (zwykle do 48 KB). Zamiast tego lepiej korzystać z zewnętrznych magazynów:

  • Zapisywać dane w chmurze (S3, GCS, Azure Blob) lub bazach danych.
  • Przesyłać między zadaniami linki (ścieżki, klucze) do tych danych za pomocą XCom.

Takie podejście pozwala efektywnie obsługiwać duże ilości danych, unikając przeciążenia metadanych Airflow.

Przykład:

# W pierwszym zadaniu zapisujemy dane w S3 i przekazujemy klucz
s3_key = upload_to_s3(data)
ti.xcom_push(key='s3_key', value=s3_key)

# W drugim zadaniu pobieramy klucz i ładujemy dane
s3_key = ti.xcom_pull(key='s3_key')
data = download_from_s3(s3_key)