了解 apache 气流中的树视图
understanding the tree view in apache airflow
我按原样从 https://airflow.apache.org/tutorial.html 设置 dag,唯一的变化是我将 dag 设置为 运行,间隔为 5 分钟,开始日期为 2017-12- 17 T13:40:00 协调世界时。我在 13:40 之前启用了 dag,所以没有回填,我的机器在 UTC 上 运行ning。 dag 运行 符合预期(即从 13:45 UTC 开始间隔 5 分钟)
现在,当我转到树视图时,我无法理解图表。一共有3个任务。 'sleep'(t2) 的上游设置为 'printdate' (t1),'templated'(t3) 的上游也设置为 'printdate'(t1)。那为什么图表显示两个 'printdate's ?它们是该任务的独立任务实例吗?如果是,那么我如何确保只有 1 个任务实例 t1 运行s(菱形图案)。还有 4 个绿色矩形框(有两个 'printdate'),而不是 3 个
# t1, t2 and t3 are examples of tasks created by instantiating operators
t1 = BashOperator(
task_id='print_date',
bash_command='date',
dag=dag)
t2 = BashOperator(
task_id='sleep',
bash_command='sleep 5',
retries=3,
dag=dag)
templated_command = """
{% for i in range(5) %}
echo "{{ ds }}"
echo "{{ macros.ds_add(ds, 7)}}"
echo "{{ params.my_param }}"
{% endfor %}
"""
t3 = BashOperator(
task_id='templated',
bash_command=templated_command,
params={'my_param': 'Parameter I passed in'},
dag=dag)
t2.set_upstream(t1)
t3.set_upstream(t1)
其次,为什么dag 运行s(绿色圆圈)上方的时间显示8.40、8.45 - ?那是什么time/timezone?我已将 dag 的 start_date 设置为 13.40,我的机器设置为 UTC。
1.Yes,它们是独立的任务。要确保只有一个 print_date
,您可以这样做:
t1 >> t2 >> t3
而不是
t2.set_upstream(t1)
t3.set_upstream(t1)
您可以根据您的工作流程更改顺序。
2.On 我的机器,那些绿点以 UTC 显示预定的 运行 时间。您确定这不在您的数据库时区内吗?
它们不是单独的实例。你可以看到这个:
在树视图中,两个圆圈的 start/end 日期和持续时间将完全相同。
在甘特图中,您只会看到 print_date
.
的单个实例的持续时间
一般来说,如果不像他们所做的那样复制节点,就无法将 DAG 映射到树视图。
我按原样从 https://airflow.apache.org/tutorial.html 设置 dag,唯一的变化是我将 dag 设置为 运行,间隔为 5 分钟,开始日期为 2017-12- 17 T13:40:00 协调世界时。我在 13:40 之前启用了 dag,所以没有回填,我的机器在 UTC 上 运行ning。 dag 运行 符合预期(即从 13:45 UTC 开始间隔 5 分钟)
现在,当我转到树视图时,我无法理解图表。一共有3个任务。 'sleep'(t2) 的上游设置为 'printdate' (t1),'templated'(t3) 的上游也设置为 'printdate'(t1)。那为什么图表显示两个 'printdate's ?它们是该任务的独立任务实例吗?如果是,那么我如何确保只有 1 个任务实例 t1 运行s(菱形图案)。还有 4 个绿色矩形框(有两个 'printdate'),而不是 3 个
# t1, t2 and t3 are examples of tasks created by instantiating operators
t1 = BashOperator(
task_id='print_date',
bash_command='date',
dag=dag)
t2 = BashOperator(
task_id='sleep',
bash_command='sleep 5',
retries=3,
dag=dag)
templated_command = """
{% for i in range(5) %}
echo "{{ ds }}"
echo "{{ macros.ds_add(ds, 7)}}"
echo "{{ params.my_param }}"
{% endfor %}
"""
t3 = BashOperator(
task_id='templated',
bash_command=templated_command,
params={'my_param': 'Parameter I passed in'},
dag=dag)
t2.set_upstream(t1)
t3.set_upstream(t1)
其次,为什么dag 运行s(绿色圆圈)上方的时间显示8.40、8.45 - ?那是什么time/timezone?我已将 dag 的 start_date 设置为 13.40,我的机器设置为 UTC。
1.Yes,它们是独立的任务。要确保只有一个 print_date
,您可以这样做:
t1 >> t2 >> t3
而不是
t2.set_upstream(t1)
t3.set_upstream(t1)
您可以根据您的工作流程更改顺序。
2.On 我的机器,那些绿点以 UTC 显示预定的 运行 时间。您确定这不在您的数据库时区内吗?
它们不是单独的实例。你可以看到这个:
在树视图中,两个圆圈的 start/end 日期和持续时间将完全相同。
在甘特图中,您只会看到
print_date
. 的单个实例的持续时间
一般来说,如果不像他们所做的那样复制节点,就无法将 DAG 映射到树视图。