【问题标题】:Airflow on Docker - Path issueDocker 上的气流 - 路径问题
【发布时间】:2019-10-04 13:37:44
【问题描述】:

使用气流我尝试简单的 DAG 工作。

我编写了自定义运算符和其他要导入到 DAG 逻辑所在的主文件中的文件。

这里是文件夹的结构:

├── airflow.cfg
├── dags
│   ├── __init__.py
│   ├── dag.py
│   └── sql_statements.sql
├── docker-compose.yaml
├── environment.yml
└── plugins
    ├── __init__.py
    └── operators
        ├── __init__.py
        ├── facts_calculator.py
        ├── has_rows.py
        └── s3_to_redshift.py

我在compose file 中设置了音量,因为我在登录容器终端时可以看到它们。

我在网上按照一些教程添加了一些__init__.py

2个无空__init__进入

  • /plugins/operators:
from operators.facts_calculator import FactsCalculatorOperator
from operators.has_rows import HasRowsOperator
from operators.s3_to_redshift import S3ToRedshiftOperator

__all__ = [
    'FactsCalculatorOperator',
    'HasRowsOperator',
    'S3ToRedshiftOperator'
]
  • /plugins:
from airflow.plugins_manager import AirflowPlugin

import operators

# Defining the plugin class
class CustomPlugin(AirflowPlugin):
    name = "custom_plugin"
    # A list of class(es) derived from BaseOperator
    operators = [
        operators.FactsCalculatorOperator,
        operators.HasRowsOperator,
        operators.S3ToRedshiftOperator
    ]
    # A list of class(es) derived from BaseHook
    hooks = []
    # A list of class(es) derived from BaseExecutor
    executors = []
    # A list of references to inject into the macros namespace
    macros = []
    # A list of objects created from a class derived
    # from flask_admin.BaseView
    admin_views = []
    # A list of Blueprint object created from flask.Blueprint
    flask_blueprints = []
    # A list of menu links (flask_admin.base.MenuLink)
    menu_links = []

但我不断收到来自我的 IDE 的错误(说 No module named operators 或运算符的 __init__ 中的未解析引用运算符)。

因为一切都无法在网络服务器上启动。

知道如何设置吗?我哪里错了?

【问题讨论】:

  • 尝试在operators 文件夹中只使用一个空的__init__.py 并在plugins 中执行导入。或者,不要从operators 导入。直接从文件模块导入。
  • do the import inside plugins 是什么意思。你想让我如何直接从模块导入?
  • 换句话说,在__init__.py 中的plugins 中执行from operators import *。并定义您的运算符,如operators = [ <file>.<operator-class> ]。 Python 有烦人的导入逻辑,所以这可能是问题所在。
  • 你能添加你得到问题的错误吗?

标签: python docker airflow


【解决方案1】:

您使用的是puckel's 图像吗?

如果是,则需要取消注释 docker-compose 文件(本地或 Celery)中的 # - ./plugins:/usr/local/airflow/plugins 行(可能不止一个)。您的其余设置对我来说看起来不错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 2021-04-15
    • 1970-01-01
    • 2019-12-15
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多