Storytelling with Data
Apache Airflow da operatorlarning vazifasi bu DAG ichida bajariladigan individual tasklarni yani har bir dagimiz aynan vazifasini tasniflab beradi. Har bir operator malum bir turdagi ishni bajarish uchun yaratilgan. hozir asosiy operatorlar, farqlari, va qachon ishlatilishi haqida toliq organib chiqsak
PythonOperator
Python kodi bajaradi — yani def bilan yozilgan funksiyani chaqiradi.sodda qilib aytganda
Qachon ishlatiladi:
Har qanday Python kodi bajarmoqchi bolsak (API chaqirish, fayllarni oqish, pandas bilan ishlash)
Malumotlarni qayta ishlash, logika yozish
PythonOperator(
task_id='process_data',
python_callable=process_function
)
BashOperator
Terminal/Shell buyruqlarini bajaradi.
Qachon ishlatiladi:
• Fayl nusxalash, script ishlatish, curl, ls, mv, echo kabi komandalarni chaqirish uchun
BashOperator(
task_id='print_date',
bash_command='date'
)
DummyOperator
Hech qanday ish bajarmaydi — faqat DAG strukturasi uchun kerak.
• DAG ni bo lish
• Branching yoki parallel tasklar uchun “pass-through” nuqta sifatida
DummyOperator(task_id='start')
BranchPythonOperator
Shartli ravishda qaysi task ni bajarish kerakligini hal qiladi.
Qachon ishlatiladi:
• Agar if/else logikasi kerak bolsa
• Masalan: foydalanuvchi turi premium bolsa boshqa yoldan borish
BranchPythonOperator(
task_id='check_type',
python_callable=check_user_type
)
ShortCircuitOperator
Shart False bolsa, davomdagi tasklarni SKIP qiladi.
Qachon ishlatiladi:
• Agar shart bajarilmasa, qolgan tasklar befoyda bolsa
ShortCircuitOperator(
task_id='continue_if_true',
python_callable=check_condition
)
EmailOperator
Email yuboradi.(SMTP conn ID kerak)
Suggestion: trigger_rule='all_failed' yoki on_failure_callback bilan boglab, faqat xato bolsagina jonating.
Qachon ishlatiladi:
• Task muvaffaqiyatli bajarilsa yoki xatolik bilan tugaganda email yuborish
EmailOperator(
task_id='send_email',
to='[email protected]',
subject='Task Done',
html_content='Task finished'
)
TriggerDagRunOperator
Boshqa DAG ni ishga tushuradi.(cross-DAG triggering).
Eng muhim parametrlar: poke_interval, timeout, mode (poke vs reschedule).
Qachon ishlatiladi:
• DAG ichidan boshqa DAG ni boshlash kerak bolsa
TriggerDagRunOperator(
task_id='trigger_other_dag',
trigger_dag_id='another_dag'
)
Sensor Operators (FileSensor, S3KeySensor, HttpSensor . . .)
Malum bir voqeani kutadi (file mavjudligi, API mavjudligi ... )
Qachon ishlatiladi:
• Faylni kutish
• Tizimda malumot tayyor bolishini kutish
FileSensor(
task_id='wait_for_file',
filepath='/data/file.csv',
poke_interval=60
)
DockerOperator
Docker konteyner ichida task bajaradi.
Qachon ishlatiladi:
• Izolyatsiya qilish kerak bolsa
• Har xil muhitda skriptlar ishga tushirilsa
from airflow.providers.docker.operators.docker import DockerOperator
run_etl = DockerOperator(
task_id='run_etl',
image='myrepo/etl:1.2.0',
command='python etl.py --date {{ ds }}',
auto_remove=True,
mounts=['/opt/airflow/data:/data'],
mem_limit='1g',
dag=dag
)
Etiborli bolishimiz kk
• Worker da Docker daemon bolishi shart → resurs istemoli kk boladi
• Image pull → start up kechikishi mm
• Root user konteyneri xavfsizlika ehtiyor bolishimiz kk
• mem_limit, cpu_shares qoyish va XCom ni JSON matn sifatida qaytarish kk boladi
KubernetesPodOperator
Kubernetes cluster da pod yaratib, task bajaradi.
Qachon ishlatiladi:
• Airflow Kubernetes da bolsa
• Katta hajmli, tarqoq hisob-kitoblar uchun
RBAC/ServiceAccount ni togirlash qiyinroq ehtiyot bolishimiz kerak
Koplab mayda podlar paydo bolishi mumkin.
scheduler/etcd ga koproq bosim berishimiz mumkin boladi
Pod startup delay ham bor albatta!
Bu operatorlar eng kop ishlatiladigan Operatorlar va ularning use case larini korib chiqdik!
Keep learning and keep growing.
1 · 887 ·