One - One Code All

Blog Content

airflow中execution_date的获取

Python 并行计算   2014-09-18 22:58:26

airflow提供了很多Macros Variables,可以直接使用jinja模板语言调用宏变量。

templated_command = """
echo "dag_run:{{ dag_run }}"
echo "run_id:{{ run_id }}"
echo "execution_date:{{ execution_date }}"
echo "ts:{{ ts }}"
echo "ti:{{ ti }}"
sleep 3
"""
 
t1 = BashOperator(
       task_id='xcom',
       bash_command=templated_command,


execution_date并不是task的真正执行时间,而是上一周期task的执行时间。

即可以理解为“actual_execution_date= execution_date +schedual_interval”,或者我们换一种说法,我们在airflow上看到一个任务是6am执行的,而且interval=4hours,那么execution_date的值是2am,而不是6am,所以获取某个task的真正执行时间,需要获取execution_date的下个执行周期时间,即使用dag.following_schedule(execution_date)


execution_date示例:10-10T08:37:30.962731+00:00


{{ execution_date }}the execution_date, (datetime.datetime)



数据表相关:

dag_run 表:
   包含dag的运行历史记录, 该表也有两个id栏位, 一个是id, 一个是run_id, id栏位是该表的PK, run_id栏位是这次运行的一个名字(字符型), 同一个dag, 它的run_id 不能重复.
   物理PK: 即id栏位
   逻辑PK: dag_id + execution_date 组合
   execution_date 栏位, 表示触发dag的准确时间
是datetime类型字段。


---------------
airflow系统表:
---------------
connection 表:
   我们的Task往往需要通过jdbc/ftp/http/webhdfs方式访问其他资源, 一般地访问资源时候都需要一些签证, airflow允许我们将这些connection以及鉴证存放在connection表中.  可以现在WebUI的Admin->Connections管理这些连接, 在代码中使用这些连接.
需要说明的是, connection表有2个id栏位, 一个是id, 一个是conn_id, id栏位是该表的PK, conn_id栏位是connection的名义id, 也就是说我们可以定义多个同名的conn_id, 当使用使用时airflow将会从同名的conn_id的列表中随机选一个, 有点基本的load balance的意思.
user 表 :
   包含user的username和email信息.  我们可以在WebUI的Admin->Users管理.
variable 表 :
   包含定义variable
xcom 表:
   包含xcom的数据
dag 表:
   包含dag的定义信息, dag_id是PK(字符型)
dag_run 表:
   包含dag的运行历史记录, 该表也有两个id栏位, 一个是id, 一个是run_id, id栏位是该表的PK, run_id栏位是这次运行的一个名字(字符型), 同一个dag, 它的run_id 不能重复.
   物理PK: 即id栏位
   逻辑PK: dag_id + execution_date 组合
   execution_date 栏位, 表示触发dag的准确时间
注意: 没有 task 表:
   airflow的task定义在python源码中, 不在DB中存放注册信息.
task_instance 表:
   物理PK: 该表没有物理PK
   逻辑PK: dag_id + task_id + execution_date 组合.
   execution_date 栏位, 表示触发dag的准确时间,是datetime类型字段
   start_date/end_date 栏位,表示执行task的起始/终止时间, 也是datetime类型字段
job 表:
   包含job(这里可以理解为批次)的运行状态信息


上一篇:airflow获取dag状态dag_state
下一篇:Pandas文本数据筛选contains(),支持正则

The minute you think of giving up, think of the reason why you held on so long.