AirFlow / DAG中的任务如何找到可执行文件,这些可执行文件实现了任务应执行的功能?

时间:2019-08-17 19:42:36

标签: java python-3.x docker airflow databricks

我想通过更新数据管道中的某些算法来进行一些代码开发工作。编码语言是Python3和Java。

数据管道基于AirFlow / DAG。工作流DAG中有许多任务。我需要在某些任务中更改一些算法。

当前,DAG位于生产系统上,该生产系统是一个远程集群。

我有两个选择来从事该项目。但是,我不确定哪个更好。

一个选择:在生产系统上克隆DAG,并更改需要更新的任务算法,然后运行AirFlow DAG并在生产系统上对其进行测试。             我必须确保生产系统不会被仍处于测试版本的DAG搞砸。

另一种选择:安装docker并为AirFlow创建容器。将DAG克隆到我的笔记本电脑上。更改我需要在本地计算机上更新和测试DAG的任务的算法。                 但是,将用于运行DAG的数据位于远程群集中。并且,数据大小非常大。我无法将其下载到本地计算机。                 因此,以这种方式,我的本地计算机和远程群集之间将有许多数据事务,这效率不高。

数据位于databricks / AWS中。 DAG中的任务由python3实现,任务的功能由java实现。

此外,我想知道DAG中的任务如何找到可执行文件,这些可执行文件可以执行任务的功能。

有80多个Java文件,它们执行DAG中定义的所有任务的功能。

我可以从github检出Java文件到本地计算机。 更改一些Java代码并将其作为新分支推送到github后,如何让DAG中的任务知道在哪里以及如何查找由新Java代码生成的新的更新的可执行文件?如何确保每个任务找到其对应的可执行文件?

我对Docker,AirFlow,databricks,github,AWS / S3之间的关系感到有些困惑。

我认为Docker为AirFlow提供虚拟化,而AirFlow提供管理作业/任务及其依赖性的服务,而AWS / S3提供数据存储。

但是,我不确定数据砖是否提供数据访问和DAG的编码(通过python)?但是,如何将可执行文件“映射”到每个任务,以便DAG中的每个任务可以“调用”正确的可执行文件?

我的问题很长,但我认为逻辑很简单。

任何建议都值得赞赏。

谢谢!

0 个答案:

没有答案