编辑:数据社
全文共1641个字,建议5分钟阅读
大家好,我是一哥,在这个五一假期,又一个Apache项目迎来了重大版本更新——Apache Airflow 2.3.0 在五一重磅发布!
01
Apache Airflow 是谁
Apache Airflow是一种功能强大的工具,可作为任务的有向无环图(DAG)编排、任务调度和任务监控的工作流工具。Airflow在DAG中管理作业之间的执行依赖,并可以处理作业失败,重试和警报。开发人员可以编写Python代码以将数据转换为工作流中的操作。
主要有如下几种组件构成:
具体执行流程:
02
本次更新了什么?
Apache Airflow 2.3.0是自2.0.0以来最大的Apache Airflow版本!有700多个提交,包括50个新功能,99个改进,85个错误修复~
以下是最大的和值得注意的变化:
动态任务映射(Dynamic Task Mapping):允许工作流在运行时根据当前数据创建一些任务,而不是让DAG作者事先知道需要多少任务。
@task
def make_list():
# This can also be from an API call, checking a database, -- almost anything you like, as long as the
# resulting list/dictionary can be stored in the current XCom backend.
return [1, 2, {"a": "b"}, "str"]
@task
def consumer(arg):
print(list(arg))
with DAG(dag_id="dynamic-map", start_date=datetime(2022, 4, 2)) as dag:
consumer.expand(arg=make_list())
网格视图取代树形视图(Grid View replaces Tree View):显示运行和任务,但将依赖关系线留给图形视图,并更好地处理任务组!
为DAG版本管理铺平了道路--可以轻松显示版本,这在树状视图中是无法处理的!
从元数据数据库中清除历史记录 (Purge history from metadata database):新的 "airflow db clean "CLI命令用于清除旧记录:这将有助于减少运行DB迁移的时间(当更新Airflow版本时);
不需要再使用维护DAG了!
连接的 JSON 序列化(JSON serialization for connections):以本地JSON格式创建连接--不需要弄清楚URI格式。
airflow connections add 'my_prod_db' \
--conn-json '{
"conn_type": "my-conn-type",
"login": "my-login",
"password": "my-password",
"host": "my-host",
"port": 1234,
"schema": "my-schema",
"extra": {
"param1": "val1",
"param2": "val2"
}
}'
Airflow db downgrade和离线生成 SQL 脚本 (Airflow db downgrade and Offline generation of SQL scripts):Airflow 2.3.0 引入了一个新命令airflow db downgrade,可以将数据库降级到您选择的版本。
还可以为你的数据库生成降级/升级 SQL 脚本并针对您的数据库手动运行它,或者只查看将由降级/升级命令运行的 SQL 查询。
03
国产调度平台-Apache DolphinScheduler
海豚调度
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
04
总结
调度平台在数据仓库、BI等场景中起到重要的作用。但很多从业者连 ETL 和ELT的区别都不了解,这无疑是非常不称职的,推荐阅《你真的了解ELT和ETL吗?》。做调度你可以用任何的编程语言来完成开发,无论是 shell、python、java ,只要它最终是让数据完成抽取(E)、转化(T)、加载(L)的效果即可。由于ETL是极为复杂的过程,而手写程序不易管理,所以越来越多的可视化调度编排工具出现了。
调度平台牵扯的业务逻辑比较复杂,场景不同,也许需求就会差别很多,所以,有自研能力的公司都会选择市面上开源系统二次开发或者完全自研一套调度系统,以满足自身ETL任务调度需求。