在气流 DAG 中,什么决定了任务所在的层?
What determines the layer a task is in, in an airflow DAG?
如果我们查看 Airflow 中的示例 DAG,我们会看到(图形视图):
什么决定了任务 also_run_this
和 this_will_skip
的位置?请注意,这 2 个任务在它们之前没有任何连接线,这意味着它们可以与 runme_0
、runme_1
和 runme_2
放在同一层(第一组垂直任务) (使用我对 DAG 的明显错误假设)。
是他们的运行时间让他们和run_after_loop
在同一层吗?
我正在查看此 DAG 的详细任务数据,但我没有看到 also_run_this
和 this_will_skip
与 runme_0
在位置方面的任何区别:
这里是runme_0
:
{
"class_ref": {
"class_name": "BashOperator",
"module_path": "airflow.operators.bash"
},
"depends_on_past": false,
"downstream_task_ids": ["run_after_loop"],
"end_date": null,
"execution_timeout": null,
"extra_links": [],
"owner": "airflow",
"pool": "default_pool",
"pool_slots": 1,
"priority_weight": 1,
"queue": "default",
"retries": 0,
"retry_delay": {
"__type": "TimeDelta",
"days": 0,
"microseconds": 0,
"seconds": 300
},
"retry_exponential_backoff": false,
"start_date": "2021-06-17T00:00:00+00:00",
"task_id": "runme_0",
"template_fields": ["bash_command", "env"],
"trigger_rule": "all_success",
"ui_color": "#f0ede4",
"ui_fgcolor": "#000",
"wait_for_downstream": false,
"weight_rule": "downstream"
}
这里是 also_run_this
:
{
"class_ref": {
"class_name": "BashOperator",
"module_path": "airflow.operators.bash"
},
"depends_on_past": false,
"downstream_task_ids": ["run_this_last"],
"end_date": null,
"execution_timeout": null,
"extra_links": [],
"owner": "airflow",
"pool": "default_pool",
"pool_slots": 1,
"priority_weight": 1,
"queue": "default",
"retries": 0,
"retry_delay": {
"__type": "TimeDelta",
"days": 0,
"microseconds": 0,
"seconds": 300
},
"retry_exponential_backoff": false,
"start_date": "2021-06-17T00:00:00+00:00",
"task_id": "also_run_this",
"template_fields": ["bash_command", "env"],
"trigger_rule": "all_success",
"ui_color": "#f0ede4",
"ui_fgcolor": "#000",
"wait_for_downstream": false,
"weight_rule": "downstream"
}
如果同一层基于并行性(同一垂直层中的所有任务 运行 并行),这将是有意义的,但这需要对 运行 时间进行一些阈值处理,我在 DAG 或 TASK 信息中看不到任何此类可用数据。
事实上,查看树视图,它似乎显示 runme_0
、runme_1
、runme_2
、also_run_this
和 this_will_skip
所有 运行同时宁:
根据@bruno-uy 的评论,图表视图似乎有 UI“问题”。绝对不是很直观。
检查runme_0
、runme_1
、runme_2
、also_run_this
和this_will_skip
同时都运行后,我们可以说这是一个 UI “问题”,它们没有显示在同一“层”中。 Airflow 没有“层”的概念,所以基本上他们不能保证同时开始的任务是垂直对齐的。
可能是对 Airflow 的一个很好的改进,或者像你提到的 Sankey 那样添加另一个图表。
如果我们查看 Airflow 中的示例 DAG,我们会看到(图形视图):
什么决定了任务 also_run_this
和 this_will_skip
的位置?请注意,这 2 个任务在它们之前没有任何连接线,这意味着它们可以与 runme_0
、runme_1
和 runme_2
放在同一层(第一组垂直任务) (使用我对 DAG 的明显错误假设)。
是他们的运行时间让他们和run_after_loop
在同一层吗?
我正在查看此 DAG 的详细任务数据,但我没有看到 also_run_this
和 this_will_skip
与 runme_0
在位置方面的任何区别:
这里是runme_0
:
{
"class_ref": {
"class_name": "BashOperator",
"module_path": "airflow.operators.bash"
},
"depends_on_past": false,
"downstream_task_ids": ["run_after_loop"],
"end_date": null,
"execution_timeout": null,
"extra_links": [],
"owner": "airflow",
"pool": "default_pool",
"pool_slots": 1,
"priority_weight": 1,
"queue": "default",
"retries": 0,
"retry_delay": {
"__type": "TimeDelta",
"days": 0,
"microseconds": 0,
"seconds": 300
},
"retry_exponential_backoff": false,
"start_date": "2021-06-17T00:00:00+00:00",
"task_id": "runme_0",
"template_fields": ["bash_command", "env"],
"trigger_rule": "all_success",
"ui_color": "#f0ede4",
"ui_fgcolor": "#000",
"wait_for_downstream": false,
"weight_rule": "downstream"
}
这里是 also_run_this
:
{
"class_ref": {
"class_name": "BashOperator",
"module_path": "airflow.operators.bash"
},
"depends_on_past": false,
"downstream_task_ids": ["run_this_last"],
"end_date": null,
"execution_timeout": null,
"extra_links": [],
"owner": "airflow",
"pool": "default_pool",
"pool_slots": 1,
"priority_weight": 1,
"queue": "default",
"retries": 0,
"retry_delay": {
"__type": "TimeDelta",
"days": 0,
"microseconds": 0,
"seconds": 300
},
"retry_exponential_backoff": false,
"start_date": "2021-06-17T00:00:00+00:00",
"task_id": "also_run_this",
"template_fields": ["bash_command", "env"],
"trigger_rule": "all_success",
"ui_color": "#f0ede4",
"ui_fgcolor": "#000",
"wait_for_downstream": false,
"weight_rule": "downstream"
}
如果同一层基于并行性(同一垂直层中的所有任务 运行 并行),这将是有意义的,但这需要对 运行 时间进行一些阈值处理,我在 DAG 或 TASK 信息中看不到任何此类可用数据。
事实上,查看树视图,它似乎显示 runme_0
、runme_1
、runme_2
、also_run_this
和 this_will_skip
所有 运行同时宁:
根据@bruno-uy 的评论,图表视图似乎有 UI“问题”。绝对不是很直观。
检查runme_0
、runme_1
、runme_2
、also_run_this
和this_will_skip
同时都运行后,我们可以说这是一个 UI “问题”,它们没有显示在同一“层”中。 Airflow 没有“层”的概念,所以基本上他们不能保证同时开始的任务是垂直对齐的。
可能是对 Airflow 的一个很好的改进,或者像你提到的 Sankey 那样添加另一个图表。