【入门Airflow】 如何实现动态DAGs ?利用多任务提升效率

本文介绍如何使用Airflow结合MongoDB实现静态与动态多任务处理,通过动态生成任务数来适应不同规模的数据处理需求。

静态多任务

造点假数据

from faker import Faker
import pymongo

faker = Faker(locale='zh_CN')
client = pymongo.MongoClient("mongodb://localhost:27018")
coll = client.get_database("test_db").get_collection("10w")

docs = [{
   
   "username": faker.language_name(), "age": faker.random_int(0, 100), "email": faker.email(), "ipv4": faker.ipv4()} for i in range(100000)]
coll.insert_many(docs)

编写DAG

从数据集合中读取10w条数据,再用一个任务去处理这些数据,假设每条数据的处理时间是0.0005秒。

import time
from datetime import datetime

from airflow import DAG
from airflow.models.taskinstance import TaskInstance
from airflow.operators.python import PythonOperator, task
from airflow.providers.mongo.sensors.mongo import MongoHook

default_args = {
   
   
    'owner': 'airflow',
}

with DAG(
        'test_static_mongo',
        default_args=default_args,
        description='connect MongoDB tutorial',
        schedule_interval=None,
        start_date=datetime(2021, 1, 1),
        catchup=False,
        tags=['test'],
) as dag:

    def read():
        # 读取指定的连接id,并与数据库建立连接
        conn = MongoHook(conn_id=
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值