در این بخش، به آشنایی عملی با Data Assets در ایرفلو ۳ و ایجاد یک پایپلاین پردازش داده میپردازیم. با استفاده از قابلیت Assets، میتوانیم DAGها را به گونهای طراحی کنیم که وابسته به داده باشند؛ یعنی به جای اجرای صرفاً زمانبندیشده، DAGها فقط زمانی اجرا شوند که دادههای ورودی آماده باشند. این رویکرد بهویژه برای خطوط پردازش داده و پروژههای یادگیری ماشین بسیار کاربردی است.
@asset@asset یک دکوراتور است که یک DAG با یک تسک تولیدکنندهی داده (Asset) میسازد.from airflow.sdk import asset
@asset(schedule="@daily")
def my_asset():
# منطق تسک
pass
schedule میتواند زمانبندی دورهای یا وابسته به دادههای upstream باشد.نکته مهم : مبنای زمانبندی و شروع یک کار در ایرفلو، دگ DAG است یعنی زمانبندی کارها روی DAG تعریف میشود. بنابراین اگر بخواهیم که بر اساس آماده شدن دیتا، کار جدیدی در ایرفلو شروع و پردازش مرحله بعد روی آن انجام شود، باید یک دگ تعریف کنیم. به همین دلیل در بخش Data Asset ها ما به ازای هر مرحله از پردازش داده، یک دگ ایجاد می کنیم و زمانبندی آنرا وابسته به یک Data Asset میکنیم. در سایر مثالهای این بخش هم که از Task Based Data Assets استفاده خواهیم کرد، همین منطق برقرار است و به ازای هر مرحله از پردازش، زمانی که قرار است یک کار جدید بر اساس دادههای مرحله قبل شروع شود، یک دگ خواهیم ساخت.
@asset(schedule="* * * * *") # هر دقیقه برای نمونه
def transaction_asset():
"""Generate random transactions and stage them in MinIO"""
...
return transactions
@asset(schedule=transaction_asset)
def finalize_transactions_asset(context):
"""Convert staged binaries to JSON in MinIO"""
...
return final_files
@asset(schedule=finalize_transactions_asset, pool="lakehouse_pool", pool_slots=1)
def lakehouse_generate_parquets(context):
"""Combine JSON files into Parquet"""
...
return object_name

transaction_asset (* * * * *)
↓
finalize_transactions_asset (triggered after transactions)
↓
lakehouse_generate_parquets (pooled, runs when ≥۱۰ files)
در این مرحله، DAG تراکنشها به یک پایپلاین دادهمحور تبدیل شد:
کارگاه عملی سوم جلسه پنجم که شروع کار با Data Asset هاست به اجرای مثال فوق به کمک تعریف سه Asset که نمایانگر مراحل مختلف پردازش داده هستند می پردازد و همزمان به کمک امکانات گرافیکی ایرفلو، جریان داده بین مراحل مختلف (گراف پردازش داده) را هم به کاربر نشان می دهد. این محتوای آموزشی را می توانید به صورت عملی در فیلم آموزشی زیر مشاهده کنید.
نکته : اگر فیلم در قسمت زیر قابل مشاهده نیست، مطمئن شوید که با آی پی ایران متصل شده اید یا یک اینترنت پروایدر دیگر را امتحان کنید .