跨DAG的气流持久数据存储

时间:2018-08-27 17:36:19

标签: airflow

我有几个DAG,它们创建临时的AWS EMR集群,然后在它们完成运行后终止它们。我想创建一个每天运行的新DAG,并为当日创建的每个EMR集群生成一份报告,以及运行多长时间后将此报告通过电子邮件发送给各个人。

不过,我需要存储EMR群集ID值,以便我的报表生成器具有当天所有EMR群集ID的列表。我想知道是否可以修改Airflow变量来存储此信息,例如,我是否可以拥有一个Airflow变量,其键为“ EMR_CLUSTERS”,并且该值是包含我要记录的所有数据的JSON字符串。还是我可以使用已经用于写入该信息的新表的Airflow元数据库?

在Airflow中存储永久数据有哪些选择?

1 个答案:

答案 0 :(得分:3)

您提到的任何一个选项都可以使用:

  1. 气流变量
  2. 元数据数据库

第三个选项将是网络存储。 如果运行的是分布式气流,则可能会将DAG存储在网络存储中,并将其安装到worker / scheduler / webserver中。在这种情况下,将基于文件的报告放在该存储上(并可能通过电子邮件将其发送出去)将是一个不错的选择。

You could write a plugin可以与这三个中的任何一个一起使用,并且可以显示何时写入/发送的内容。

变量

Easily read/written,但每天IMO都会草率地覆盖它。

MetadataDB

使用SQLAlchemy创建和读取/写入存储此信息的表。 您可以通过执行以下操作在气流元数据数据库上获取会话:

[ '', '.', ' Saturday, troopers got a report that […]' ]

网络存储

在这种情况下,只需正常读取/写入文件即可。