我想通过更新数据管道中的某些算法来进行一些代码开发工作。编码语言是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中的每个任务可以“调用”正确的可执行文件?
我的问题很长,但我认为逻辑很简单。
任何建议都值得赞赏。
谢谢!