Airflow 重新处理气流的历史数据
我正在将一些管道迁移到气流。我希望能够在历史负载的特定时间范围内运行一些DAG,我正在探索我的选项。注意:我不想重新执行以前的运行(例如过去10天),但我希望能够在需要时(甚至在创建DAG之前)根据上次加载的时间戳变量(例如2017-12-09 00:00:00.000000)重新加载数据。此变量还用于外部调用API 我脑子里总共有4个概念:Airflow 重新处理气流的历史数据,airflow,airflow-scheduler,apache-airflow-xcom,Airflow,Airflow Scheduler,Apache Airflow Xcom,我正在将一些管道迁移到气流。我希望能够在历史负载的特定时间范围内运行一些DAG,我正在探索我的选项。注意:我不想重新执行以前的运行(例如过去10天),但我希望能够在需要时(甚至在创建DAG之前)根据上次加载的时间戳变量(例如2017-12-09 00:00:00.000000)重新加载数据。此变量还用于外部调用API 我脑子里总共有4个概念: 当前dag运行通过元数据数据库中的xcom表实现交换此变量。尽管每次我想修改它时,我必须更新数据类型为blob的字段。我甚至不确定这是否可能 将此参数保
有什么建议吗?对于此用例,您可以按如下方式处理ETL:
def set_dag_variables(**kwargs):
new_value = kwargs['var_value']
Variable.set(key=DAG_ID, value=new_value, serialize_json=True)
last_loaded = Varible.get(key=var_name) # don't do this in production. Use macro instead.
your_higher_boundary_param = datetime.now(tz=None)
op1 = YourOperaror(
task_id='op1_task',
params = {"param1":last_loaded,
param2: your_higher_boundary_param }
)
op2 = PythonOperator(
task_id='set_dag_variable_task',
provide_context=True,
python_callable=set_dag_variables,
op_kwargs={'var_value': your_higher_boundary_param}
)
op1 >> op2
注意:这是非常高的级别,细节很重要
例如,我使用了
variable.get
超出运算符/宏范围,这是一种不好的做法。正确的方法是使用宏,但由于示例的提出,我简化了宏。谢谢你,Elad。我将使用变量解决方案,到目前为止效果良好