Sensory Airflow

Wprowadzenie do Apache Airflow w Pythonie

Mike Metzger

Data Engineer

Sensory

  • Operator czekający na spełnienie określonego warunku
    • Utworzenie pliku
    • Dodanie rekordu do bazy danych
    • Odpowiedź na żądanie HTTP
  • Można określić częstotliwość sprawdzania warunku
  • Przypisywany do zadań

Ilustracja sensora Airflow czekającego na spełnienie warunku

Wprowadzenie do Apache Airflow w Pythonie

Szczegóły sensora

  • Pochodzi od airflow.sdk.BaseSensorOperator
  • Argumenty sensora:
  • mode - Sposób sprawdzania warunku
    • mode='poke' - Domyślny, cykliczne sprawdzanie
    • mode='reschedule' - Zwolnienie slotu i ponowna próba
  • poke_interval - Odstęp między sprawdzeniami
  • timeout - Czas do uznania zadania za nieudane
  • Obsługuje też standardowe atrybuty operatora
Wprowadzenie do Apache Airflow w Pythonie

Sensor pliku

  • Część biblioteki airflow.providers.standard.sensors
  • Sprawdza istnienie pliku w podanej lokalizacji
  • Może też sprawdzać pliki w katalogu
from airflow.providers.standard.sensors.filesystem import FileSensor

file_sensor_task = FileSensor(task_id='file_sense',
                              filepath='salesdata.csv',
                              poke_interval=300,
                              timeout=3000
                              )

init_sales_cleanup() >> file_sensor_task >> generate_report()
Wprowadzenie do Apache Airflow w Pythonie

Inne sensory

  • Wiele innych w airflow.providers.*.sensors
  • ExternalTaskSensor - oczekiwanie na zakończenie zadania w innym DAG
  • HttpSensor - żądanie URL i sprawdzanie treści odpowiedzi
  • SqlSensor - wykonanie zapytania SQL i sprawdzanie wyników
Wprowadzenie do Apache Airflow w Pythonie

Kiedy używać sensorów?

  • Nieokreślony czas spełnienia warunku
  • Gdy natychmiastowe niepowodzenie jest niepożądane
  • Powtarzanie zadania bez użycia pętli

 

 

Ilustracja sensora Airflow czekającego na spełnienie warunku

Wprowadzenie do Apache Airflow w Pythonie

Czas na ćwiczenia!

Wprowadzenie do Apache Airflow w Pythonie

Preparing Video For Download...