这个问题与理解有关DockerOperator和Apache气流的概念有关,所以我不确定这个站点是否是正确的位置。如果没有,请让我知道我可以在哪里张贴。
情况如下:我正在使用一台Windows膝上型计算机,我开发了一个非常基本的ETL管道,它从某个服务器提取数据,并将未处理的数据按计划与Apache气流一起写入MongoDB。我有一个包含三种服务的docker-compose.yml文件: MongoDB的mongo服务,MongoDB的管理工具mongo快速服务,Apache-Airflow的webserver服务,Apache-Airflow的postgres服务,Apache-Airflow的数据库后端。
到目前为止,我已经在函数中开发了一些Python代码,这些函数是由气流实例使用PythonOperator调用的。由于使用PythonOperator调试非常困难,所以现在我想尝试一下DockerOperator。我一直在跟踪这个教程,它声称使用DockerOperator,您可以开发独立于操作系统的源代码--由于Docker的“构建一次,在任何地方运行”的概念,代码将在其上执行。
我的问题是,我没有完全理解使用DockerOperator运行代码所需的所有必要步骤。在本教程中,我有以下关于任务开发和部署的问题:
谢谢你抽出时间,我非常感激!
发布于 2020-01-19 03:08:46
通常,您将有一个Docker映像来处理一种类型的任务。因此,对于任何一个管道,您可能会使用各种不同的Docker映像,每个步骤使用一个不同的。
对于您的问题,这里有几个考虑因素,具体涉及部署。
DockerOperator默认为图像上的latest标记。从容器中公开一个入口点,以便使用DockerOperator调用任务并将其参数化。==>,你是怎么做到的?
如果您已经创建了映像,并且可以使用气流,您只需使用DockerOperator创建一个任务,如下所示:
dag = DAG(**kwargs)
task_1 = DockerOperator(
dag=dag,
task_id='docker_task',
image='dummyorg/dummy_api_tools:v1',
auto_remove=True,
docker_url='unix://var/run/docker.sock',
command='python extract_from_api_or_something.py'
)我建议你花点时间去了解码头。一开始很难把你的头绕起来,但是它是一个非常有价值的工具,特别是对于像气流这样的系统。
https://stackoverflow.com/questions/59765453
复制相似问题