大家好,欢迎来到IT知识分享网。
我如何使用 Apache Airflow 自动化 ETL 工作流:
Apache-Airflow是由 Airbnb 创建的开源软件,专为构建、监控和管理工作流而开发。Airflow是一个工作流管理平台。使用Python编写实现的任务管理、调度、监控工作流平台。Airflow的调度依赖于crontab命令,与crontab相比Airflow可以方便查看任务的执行状况(执行是否成功、执行时间、执行依赖等),可追踪任务历史执行情况,任务执行失败时可以收到邮件通知,查看错误日志。对于管理调度任务有很大的帮助。
在介绍Airflow这个调度工具前先介绍几个相关的基础概念
DAG:即有向无环图(Directed Acyclic Graph),DAG用于描述数据流的计算过程;
Operators:描述了DAG中一个具体task要执行的任务,如BashOperator为执行一条bash命令,EmailOperator用于发送邮件,HTTPOperator用于发送HTTP请求,PythonOperator用于调用任意的Python函数;
Task:是Operator的一个实例,也就是DAG中的一个节点;
Task Instance:记录task的一次运行。Task Instance有自己的状态,包括“running”、“success”、“failed”、“skipped”、“up for retry”等;
Triggher Rules:指task的触发条件;
开发的初期阶段,为了数据尽快上线迭代,对于标签的调度作业可通过shell脚本和crontab命令完成简单的ETL任务,但是crontab的不足很严重:
大家也需说很多商业软件可以满足ETL的调度,但是商业软件的不足也很明显:
我将描述我们在工作中遇到的一些场景,这些场景让我们重新思考我们的工作方法。
场景一:要创建上游和下游作业,即在特定作业完成后触发作业,我们需要一个依赖插件。
场景二:某个工作X,每小时运行一次,计算一些参数并产生一些结果,或者收集一些数据;我们如何将这些参数或结果传递给下一个工作?
场景三:重新处理最近 Y 天的数据并并行处理 Z 个任务。
场景四:由于网络连接问题,作业失败。每次出现故障时,我们如何在不手动运行的情况下重试作业?
场景五:从一个地方轻松访问所有与任务相关的日志。
对于我们想要的每一个附加功能,都需要一个额外的插件来使事情顺利进行——在某些时候,需要额外的脚本来使事情可行。添加越来越多的插件只会增加系统的复杂性,使得管理我们的工作流程变得相当困难。
在 POC 上工作时,我们发现 Apache Airflow 是解决这个问题的一个非常好的解决方案:
不只是做ETL:
大家好奇,我是谁,我为什么做这个教程:
全套教程的包含内容:
下期提要:
第二节:安装本地airflow
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/161733.html