Apache Airflow Celery Executor。导入一个本地自定义的python包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Airflow Celery Executor。导入一个本地自定义的python包相关的知识,希望对你有一定的参考价值。

我使用的是Bitnami的预包装Airflow多层架构,可以在这里找到。

https:/azure.microsoft.comen-usblogbitnami-apache-airflow-multi-tier-now-available-in-azure-marketplace。

以下是他们对DAGS在各节点间共享的介绍。

所有节点都有一个共享卷来同步DAG文件。

DAG文件存储在节点的一个目录中。这个目录是一个外部卷,安装在所有节点(包括worker、scheduler和web服务器)的同一个位置。由于它是一个共享卷,文件在服务器之间自动同步。从这个共享卷中添加、修改或删除DAG文件,整个Airflow系统都会被更新。

所以,我把我的dag目录设置成这样。

/opt/bitnami/airflow/dags
|
├── dag.py
└── package
      ├── __init__.py
      └── module.py 

我的DAG目录下的导入是这样的。

from package.module import something

但我得到了这个错误

Broken DAG: [/opt/bitnami/airflow/dags/dag.py] No module named 'package'

我看了其他的帖子,也试过这些方法,但似乎没有什么效果。我使用芹菜执行器的事实是否改变了什么?我是新来的,所以如果你需要更多细节,请告诉我。

答案

好吧,我找到了一个解决方案。

首先,我发现了airflow插件管理器。看起来它主要是用来构建你自己的自定义操作符,钩子等,但我想我可以在我的方案中使用它。

于是我检查了bitnami提供的airflow.cfg文件,看到了参数。

plugins_folder=/opt/bitnami/airflow/plugins

这个目录在机器中并不存在,所以我创建了这个目录,并把我的包放到了那里(没有做任何修改)。

然后,我重新启动了web服务器节点。 节点来接收这个变化。

现在我可以在我的DAG脚本中运行导入,和以前一样,没有任何问题。

from package.module import something

下一步我将把这个插件文件夹与包含我们的软件包的仓库同步,就像我同步这里的DAGS文件夹一样。

https:/docs.bitnami.comazure-templatesinfrastructureapache-airflowconfigurationsync-dags。

我不知道插件文件夹是要这样用的,但是这个可以用。

以上是关于Apache Airflow Celery Executor。导入一个本地自定义的python包的主要内容,如果未能解决你的问题,请参考以下文章

airflow集成EMR使用

1.airflow的安装

airflow数据表结构了解一下

任务调度工具 Apache Airflow 初识

Airflow 与 Kerberos 的集成如何工作?

安装 Apache Airflow 后出错