模块未找到错误:没有名为'airflow.providers.snowflake.transfers.s3_to_snowflake'的模块
背景
我正在尝试搭建一个使用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 个回答
看看文档,似乎 airflow.providers.snowflake.transfers.s3_to_snowflake
这个模块只在4.4.2版本之前的版本中可用。如果你使用的是更新的版本,可能就不能用了。
在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