【问题标题】:How to deal with DAG lib in airflow?如何处理气流中的 DAG lib?
【发布时间】:2018-01-03 14:51:32
【问题描述】:

我有一个关于 python 运算符中使用的包的依赖管理的小问题

我们在工业化模式下使用气流来运行预定的 python 作业。它运行良好,但我们面临处理每个 DAG 所需的不同 python 库的问题。

您是否知道如何让开发人员为他们的工作安装自己的依赖项,而无需成为管理员并确保这些依赖项不会与其他工作发生冲突?

您是否建议在作业开始时加载一个虚拟环境的 bash 任务?有什么官方建议吗?

谢谢! 罗曼。

【问题讨论】:

  • 我认为您的问题需要大量澄清。你是什​​么意思“在python运算符中”? Python 中的“运算符”通常指特定符号,如+-in 等及其语义。 airflow 的“工业化模式”是什么?谷歌没有发现任何东西,所以我怀疑这不是标准术语。
  • 我也怀疑你的问题太宽泛了。我在这里没有看到具体的、可解决的问题。您正在寻求开放式建议或技术建议。这种类型的问题通常不适合 SO。也就是说,您会发现 SE 社区的大多数成员都认为管理员权限是进行开发工作的要求,因此这种要求并不常见。对于您的实际问题,像 Docker 这样的技术是避免 Linux 上的软件冲突的标准解决方案。 virtualenv 可以为非本地 Python 包这样做。通常由开发人员设置每个项目
  • @jpmc26 它在 apache-airflow 的上下文中是有意义的——它被标记了。 Airflow 有包括 PythonOperator airflow.readthedocs.io/en/stable/… 在内的运算符,定义了数据管道中的一个步骤。通常将 Airflow 用于例如训练机器学习模型或在不同的步骤中运行不同的 python 版本,所以正如你所说的 venvs 或容器很适合,或者只是调用外部系统。 Q 不是太宽泛,挑战在于如何允许数据科学家(这里的“开发人员”)运行具有冲突 deps 的任意 python。

标签: python airflow apache-airflow


【解决方案1】:

一般来说,我认为您的问题有两种可能的解决方案:

  1. Airflow 有一个PythonVirtualEnvOperator,它允许任务在虚拟环境中运行,虚拟环境会自动创建和销毁。您可以将python_version 和要求列表传递给构建虚拟环境的任务。

  2. 设置 docker 注册表并使用 DockerOperator 而不是 PythonOperator。这将允许团队根据特定要求设置自己的 Docker 映像。这就是我认为喜力设置气流工作的方式,如Airflow Meetup 中所述。我想看看他们是否在网上发布了幻灯片,但我似乎找不到。

【讨论】:

猜你喜欢
  • 2022-06-14
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多