模块未找到错误:没有名为'airflow.providers.snowflake.transfers.s3_to_snowflake'的模块

1 投票
2 回答
44 浏览
提问于 2025-04-12 15:44

背景

我正在尝试搭建一个使用Airflow和dbt的Docker环境,数据库用的是Snowflake,文件管理系统用的是AWS S3,数据源则是MongoDB。

问题

我安装了apache-airflow-providers-snowflake,可以找到airflow.providers.snowflake.transfers.copy_into_snowflake,但是找不到 airflow.providers.snowflake.transfers.s3_to_snowflake

在我的主DAG中出现了这个错误:

ModuleNotFoundError: 没有名为'airflow.providers.snowflake.transfers.s3_to_snowflake'的模块

你有没有遇到过同样的问题,导入Snowflake提供者时只得到copy_into_snowflake这个组件?

源代码(如果需要我可以提供更多细节)

这是我的项目目录结构:

project
|
|-- airflow
    |-- dags
        |-- main.py
    |-- Dockerfile
    |-- requirements.txt
|
|-- docker-compose.yaml
|-- .env

Airflow主DAG:

import pendulum
from airflow.providers.snowflake.transfers.s3_to_snowflake import S3ToSnowflakeOperator

from airflow import DAG

with DAG(
    dag_id="main",
    start_date=pendulum.datetime(year=2024, month=3, day=26, hour=15, minute=35),
    schedule_interval="15 4 * * *",
    catchup=False,
) as dag:
    pass

2 个回答

0

看看文档,似乎 airflow.providers.snowflake.transfers.s3_to_snowflake 这个模块只在4.4.2版本之前的版本中可用。如果你使用的是更新的版本,可能就不能用了。

0

在5.0.0版本中,apache-airflow-providers-snowflake这个包里去掉了某个功能,改用了一个新的功能,叫做 airflow.providers.snowflake.transfers.copy_into_snowflake.CopyFromExternalStageToSnowflakeOperator。具体的变化可以查看 更新日志

关于这个新功能的更多信息,可以在这里找到: https://airflow.apache.org/docs/apache-airflow-providers-snowflake/stable/operators/copy_into_snowflake.html

撰写回答