Apache spark Apache Airflow是否在*Spark作业中协调DAG*?

Apache spark Apache Airflow是否在*Spark作业中协调DAG*?,apache-spark,pyspark,airflow,Apache Spark,Pyspark,Airflow,我只是想知道是否有人对使用气流在Spark作业中协调转换步骤的方法有任何想法 大多数包含Spark作业的气流演示似乎遵循定义DAG的相同过程,DAG如下所示: > A: trigger to pick up a file from an S3 > B: move the file to a different S3 location > C: run a spark job to create an aggregate extract > D: send the ext

我只是想知道是否有人对使用气流在Spark作业中协调转换步骤的方法有任何想法

大多数包含Spark作业的气流演示似乎遵循定义DAG的相同过程,DAG如下所示:

> A: trigger to pick up a file from an S3 
> B: move the file to a different S3 location
> C: run a spark job to create an aggregate extract
> D: send the extract out, e.g. via email
我试图理解的是,也可以利用气流来协调火花作业本身的内部工作。为简单起见,ETL spark作业可能类似于

> C1: spark.read.csv(xxxx) 
> C2: transform dataframe with function transform_1() 
> C3: transform dataframe with function transform_2()
> C4: transform dataframe with function transform_3()
> C5: write dataframe to S3
所有这些C步骤都需要在同一个spark作业中运行,因为它们在同一个spark DAG上运行。如果作业中的每个任务都被视为气流DAG的一部分,则气流将为A、B、C1、C2、C3、C4、C5、D

根据正在处理的数据,可能需要选择不同的变换函数。如果我们可以将转换函数定义为气流任务,那就太好了,因此对于不同的数据集,DAG可能是a、B、C1、C2、C4、C5、C7、D

是否有办法定义DAG并有效地将子DAG委托给spark,让spark驱动程序知道并能够与Airflow通信,以确定下一步运行哪个功能,并将更新反馈给Airflow,从而使DAG随着进度而更新

注:我知道,在很多情况下,pyspark中转换函数的调用会很快,因为它只是构建了一个spark DAG,在spark DAG启动之前不会花费任何时间-这个问题的目的是通过使用气流定义spark DAG的组成,并能够跟踪其进度。我还知道,如果其中一个C任务在spark中失败,在大多数情况下,所有前面的C任务(即整个子DAG)都需要重新运行

非常感谢您的阅读,我期待着听到您的想法

戴夫