Airflow 2.5.0导入DAG文件报错:找不到airflow.providers.apache模块
问题解决方案
1. 核心原因
你遇到的ModuleNotFoundError: No module named 'airflow.providers.apache',本质是Airflow版本迭代导致的模块迁移问题:Airflow 2.x已完全移除contrib模块,所有第三方集成(包括Sqoop)都迁移到apache-airflow-providers-*独立包中;若你用的是Airflow 2.x,原代码里的contrib导入路径已失效,且缺失对应的Sqoop Provider依赖。
2. 具体修复步骤
步骤一:安装Sqoop Provider依赖
执行以下命令安装Airflow官方维护的Sqoop集成包:
pip install apache-airflow-providers-apache-sqoop
步骤二:修正代码导入路径
将原代码中的导入语句:
from airflow.contrib.operators.sqoop_operator import SqoopOperator
替换为Airflow 2.x的标准导入路径:
from airflow.providers.apache.sqoop.operators.sqoop import SqoopOperator
步骤三:调整Operator参数
Airflow 2.x的SqoopOperator参数有更新,原cmd_type参数已替换为command,修改任务定义:
sqoop_mysql_import = SqoopOperator( conn_id="sqoop_local", table="shipmethod", command="import", # 替换原cmd_type为command target_dir="/airflow_sqoopImport", num_mappers=1, task_id="SQOOP_Import", dag=Dag_Sqoop_Import )
可选:Airflow 1.x环境兼容
若你仍在使用Airflow 1.x,出现此报错大概率是环境中误安装了2.x的Provider包,执行以下命令卸载即可恢复contrib模块的正常使用:
pip uninstall apache-airflow-providers-apache-sqoop
内容的提问来源于stack exchange,提问作者Salva
相关产品推荐
相关产品推荐

