Airflow【实践 01】Airflow官网+自测源代码举例(简化安装+官方及自测python代码)

news2025/2/25 15:57:36

Airflow官网+自测源代码举例

  • 1.准备
    • 1.1 安装
    • 1.2 查询DAG目录
  • 2.官方
  • 3.自测
  • 4.总结

官方网站地址: https://airflow.apache.org/docs/apache-airflow/2.7.2/,本文是基于 2.7.2版本进行的说明。

1.准备

1.1 安装

上一篇的 Quick Start 有详细的安装过程,这里做最简安装启动:

# 1.设置安装目录
export AIRFLOW_HOME=~/airflow

# 2.创建虚拟环境并安装
# 创建并切换到airflow虚拟环境
conda create -n airflow python=3.8
conda activate airflow
pip install "apache-airflow==2.7.2"

# 3.前台启动【在虚拟环境下】
airflow standalone

1.2 查询DAG目录

  1. dags_folder目录将Python文件放置到
[root@tcloud airflow]# cat airflow.cfg | grep dags_folder
dags_folder = /root/airflow/dags

2.官方

  1. 安装任务所需的依赖【代码执行所需要的依赖】
conda install scikit-learn
  1. 官方举例文件demo.py放置到dags_folder路径下

文件内容如下:

from datetime import datetime

from airflow import DAG
from airflow.decorators import task
from airflow.operators.bash import BashOperator

# A DAG represents a workflow, a collection of tasks
with DAG(dag_id="demo", start_date=datetime(2022, 1, 1), schedule="0 0 * * *") as dag:

    # Tasks are represented as operators
    hello = BashOperator(task_id="hello", bash_command="echo hello")

    @task()
    def airflow():
        print("airflow")

    # Set dependencies between tasks
    hello >> airflow()
  1. 刷新页面即可看到DAG,点击即可执行,效果如下:

demo.jpg

3.自测

  1. 创建测试文件airflow_test.py并放置到dags_folder目录下

文件内容如下:

from datetime import timedelta
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago

# DAG属性定义
default_args = {
    'owner': 'airFlowTest',
    'depends_on_past': False,
    'start_date': days_ago(31),
    # 填入邮箱,方便失败、重试时发送邮件
    'email': ['xxxxx@qq.com'],
    # 失败时发邮件告警
    'email_on_failure': True,
    'email_on_retry': False,
    # 重试次数
    'retries': 1,
    'retry_delay': timedelta(minutes=2),
    # 'queue': 'bash_queue',
    # 'pool': 'backfill',
    # 'priority_weight': 10,
    # 'end_date': datetime(2016, 1, 1),bu
    # 'wait_for_downstream': False,
    # 'dag': dag,
    # 'sla': timedelta(hours=2),
    # 'execution_timeout': timedelta(seconds=300),
    # 'on_failure_callback': some_function,
    # 'on_success_callback': some_other_function,
    # 'on_retry_callback': another_function,
    # 'sla_miss_callback': yet_another_function,
    'trigger_rule': 'all_success'
}

# 定义dag
dag = DAG(
    'air_test',
    default_args=default_args,
    description='A simple airflow test',
    schedule_interval=timedelta(days=1),
)

step_one = BashOperator(
    task_id='step_one',
    bash_command='echo step_one over! >> /root/airflow/file/airflowtest.log',
    dag=dag,
)

step_two = BashOperator(
    task_id='step_two',
    depends_on_past=False,
    bash_command='echo step_two over! >> /root/airflow/file/airflowtest.log',
    retries=3,
    dag=dag,
)

step_three = BashOperator(
    task_id='step_three',
    depends_on_past=False,
    bash_command='echo step_three over! >> /root/airflow/file/airflowtest.log',
    retries=3,
    dag=dag,
)

step_four = BashOperator(
    task_id='step_four',
    depends_on_past=False,
    bash_command='echo step_four over! >> /root/airflow/file/airflowtest.log',
    retries=3,
    dag=dag,
)

step_one >> step_two >> step_four
  1. 执行结果
[root@tcloud file]# pwd
/root/airflow/file

[root@tcloud file]# cat airflowtest.log
step_one over!
step_three over!
step_two over!
step_four over!

执行结果说明:step_one和step_three是同时开始执行的,step_one、tep_two、step_four是按顺序执行的。

4.总结

  • 使用bash_command的可操作空间就比较大了
  • airflow的语法需要进行学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1473854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

经营分析到底要做什么?

​做经营分析,不是只看数据这么简单,我们要从目标-分析-决策-预警,全流程实现。 基于数据中台底座,实现从制定战略目标到执行落地的数据应用闭环。主要从四个维度来做: 第一步,就是基于预算管理进行战略目…

【书籍分享 • 第三期】虚拟化与容器技术

文章目录 一、本书内容二、读者对象三、编辑推荐四、前言4.1 云计算技术的发展4.2 KVM、Docker4.3 本书内容简介4.4 作者简介 五、粉丝福利 一、本书内容 《虚拟化与容器技术》通过深入浅出的方式介绍KVM虚拟化技术与Docker容器技术的概念、原理及实现方法,内容包括…

图片录入设备、方式与质量对图片转Excel的影响

随着数字化时代的到来,图片已经成为人们日常生活中不可或缺的一部分。在各行各业中,图片的应用越发广泛,从而促使了图片处理技术的快速发展。然而,图片的质量对于后续数据处理和分析的准确性和可靠性有着至关重要的影响。本文将从…

Java设计模式 | 七大原则之依赖倒转原则

依赖倒转原则(Dependence Inversion Principle) 基本介绍 高层模块不应该依赖低层模块,二者都应该依赖其抽象(接口/抽象类)抽象不应该依赖细节,细节应该依赖抽象依赖倒转(倒置)的…

源聚达科技:新手做抖音店铺到底要多久回本

在数字化浪潮中,抖音店铺如雨后春笋般涌现。新手商家涉足其中,常怀揣一问:何时能够回本?此问题非一日可答,涉及因素众多,但透过分析与经验,仍可略窥端倪。 选品策略。若产品契合市场需求,且具备…

动态规划课堂2-----路径问题

目录 引言: 例题1:不同路径 例题2:不同路径II 例题3:礼物的最⼤价值 例题4:下降路径最⼩和 例题5:最小路径和 结语: 引言: 在学习完动态规划斐波那契数列模型后,…

前端Vue项目无法启动服务,提示无 ‘dev‘ npm的脚本问题解决

目录 一、问题详情 二、问题解决 一、问题详情 上周还能运行的项目,今天突然无法执行了,连最基本的启动按钮也没有了,所有的项目本地都突然跑不起来了,附上截图。 二、问题解决 后来排查的根本原因有点奇葩,是因为…

如何保护企业免受人工智能网络钓鱼攻击

文章目录 前言一、生成式人工智能带来了新的网络安全威胁二、人工智能将使网络钓鱼攻击变得更加危险三、企业如何阻止人工智能驱动的网络钓鱼四、网络钓鱼模拟确保责任感和适应性前言 网络钓鱼是网络犯罪分子社会工程武器库中的超级武器。网络钓鱼尤其危险,因为它是网络犯罪分…

docker 容器内服务随容器自动启动

docker 容器内服务随容器自动启动 1. 背景2. 准备工作3. 方式一,直接修改.bashrc文件(简单粗暴)4. 方式二,编写启动脚本加入.bashrc文件(文明一点)5. 导出容器制作镜像6. 测试导出容器,nginx服务…

动态规划之第 N 个泰波那契数/三步问题【leetCode】【算法】

动态规划动态规划之第 N 个泰波那契数/三步问题 动态规划LeetCode题目第 N 个泰波那契数求解1求解2(滚动数组) 三步问题求解1求解2(滚动数组) 动态规划 如果问题是由重叠的子问题构成的,那就可以用动态规划&#xff08…

python Matplotlib Tkinter-->tab切换3

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 pillow 10.1.0 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.messagebox as messagebox import …

云呐智能化运维技术支持是做什么的?运维监控一体化是什么

智能化运维技术支持的具体职责和工作内容,包括但不限于故障诊断、系统维护、数据分析等方面的任务。同时,阐述智能化运维监控一体化的概念,包括其目标、实现方式以及如何通过集成监控和管理流程来提高运维效率的优势。包含对智能化运维技术支…

【ArcGIS】重采样栅格像元匹配问题:不同空间分辨率栅格数据统一

重采样栅格像元匹配问题:不同空间分辨率栅格数据统一 原始数据数据1:GDP分布数据2.1:人口密度数据2.2:人口总数数据3:土地利用类型 数据处理操作1:将人口密度数据投影至GDP数据(栅格数据的投影变…

ffmpeg 推流报错 Error writing trailer of rtmp:// End of file

推流一段时间以后就会报这个错误,有没有人知道怎么解决呢?

10 款数据恢复软件功能和有效性对比(2024 年更新)

数据丢失可能是一种痛苦的经历,无论是由于意外删除、硬件故障还是软件损坏。值得庆幸的是,数字时代带来了强大的数据恢复解决方案。 随着我们进入 2024 年,市场上充斥着旨在有效检索丢失数据的先进软件。在本文中,我们将探讨 2024…

【论文笔记】Slim-neck by GSConv

文章目录 前言1. 简介2. GSConv4. 为什么要在Neck中使用GSConv3. Slim-NeckSlim-Neck中的模块Slim-Neck针对YOLO系列的设计 一些问题总结References 前言 作者提出了一种新方法GSConv来减轻模型复杂度,保持准确性。GSConv可以更好地平衡模型的准确性和速度。并且&am…

JAVA学习笔记12

1.键盘输入语句 1.1 介绍 ​ *在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。 1.2 步骤 ​ 1.导入该类的所在包,java.util.* ​ 2.创建该类对象(声明变量) ​ 3.调用里面的功能 import java.…

后端:跨端轻量JavaScript引擎的实现与探索

一、JavaScript 1.JavaScript语言 JavaScript是ECMAScript的实现,由ECMA 39(欧洲计算机制造商协会39号技术委员会)负责制定ECMAScript标准。 ECMAScript发展史: 时间版本说明1997年7月ES1.0 发布当年7月,ECMA262 标准出台1998年6月ES2.0 发布该版本修改完全符合…

2024年sCrypt编程马拉松即将开幕

BSV区块链的建设者们,你们在哪?2024年sCrypt编程马拉松即将拉开帷幕! 2024年3月16日至17日,我们将在旧金山市举办一场以比特币智能合约(即 sCrypt)和比特币通证(如Ordinals)相结合为…

快速搭建宠物医院服务小程序的步骤,无需编程经验

如果你是一家宠物医院或者宠物服务机构,想要拥有一款方便用户预约、查询信息的小程序,那么乔拓云网提供的轻应用小程序是你的不二选择。下面将为你详细介绍如何轻松打造宠物医院服务小程序。 1. 进入乔拓云网后台,点击【轻应用小程序】中的【…